#118 closed Bug (Fixed)
Obfuscator (1.0.24.12) /striponly removing GUICreate()
| Reported by: | Bowmore | Owned by: | Jos |
|---|---|---|---|
| Milestone: | Future Release | Component: | Other |
| Version: | Other | Severity: | |
| Keywords: | Obfuscator | Cc: |
Description
OS WinXP Pro Sp2
AutoIt 3.2.10.0 Beta 3.2.11.1
It would appear that Obfuscator when run with the /striponly parameter is being a little to agresive in what it strips. In the example below it is stripping out GUICreate() and GUICtrlCreateLabel()
Original script
#AutoIt3Wrapper_Au3Check_Stop_OnWarning=Y
#AutoIt3Wrapper_Au3Check_Parameters=-q -d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
#AutoIt3Wrapper_Run_Obfuscator=Y
#Obfuscator_Parameters=/striponly
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Run_Debug_Mode=n
#EndRegion ### Set Options
#Region Includes
#include <File.au3>
#include <GUIConstantsEx.au3>
#include <ButtonConstants.au3>
#EndRegion Includes
#Region Global Varaibles
Global $g_nMsg = 0
Global $sTitle = "Format RM ONYB Expanded"
Global $Gui_frmMainCaption = $sTitle & " - Version " & FileGetVersion(@ScriptFullPath)
Global $sData
#EndRegion Global Varaibles
#Region ### START Koda GUI section ### Form=
Global $GUI_frmMain = GUICreate($Gui_frmMainCaption, 390, 103, 341, 156)
Global $GUI_lblFormat = GUICtrlCreateLabel("File to format:", 4, 4, 323, 17)
Global $GUI_edtFile = GUICtrlCreateInput("", 2, 20, 329, 21)
Global $GUI_btnBrowse = GUICtrlCreateButton("Browse", 336, 20, 50, 21, $BS_FLAT)
Global $GUI_btnRun = GUICtrlCreateButton("Run", 82, 56, 100, 30, $BS_FLAT)
Global $GUI_btnQuit = GUICtrlCreateButton("Quit", 214, 56, 100, 30, $BS_FLAT)
GUISetState(@SW_SHOW)
#EndRegion ### START Koda GUI section ### Form=
While 1
$g_nMsg = GUIGetMsg()
Switch $g_nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $GUI_btnBrowse
$sData = FileOpenDialog("Select File To Format", "", "RM NYB files(*.c01)|Allfiles (*.*)", 1)
GUICtrlSetData($GUI_edtFile, $sData)
Case $GUI_btnRun
_Run()
Case $GUI_btnQuit
Exit
EndSwitch
WEnd
Exit
Func _Run()
;Do Stuff
EndFunc ;==>_Run
Obfuscated script output
Global Const $GUI_EVENT_CLOSE = -3
Global Const $BS_FLAT = 0x8000
Global $g_nMsg = 0
Global $sTitle = "Format RM ONYB Expanded"
Global $sData
Global $GUI_edtFile = GUICtrlCreateInput("something", 2, 20, 329, 21)
Global $GUI_btnBrowse = GUICtrlCreateButton("Browse", 336, 20, 50, 21, $BS_FLAT)
Global $GUI_btnRun = GUICtrlCreateButton("Run", 82, 56, 100, 30, $BS_FLAT)
Global $GUI_btnQuit = GUICtrlCreateButton("Quit", 214, 56, 100, 30, $BS_FLAT)
GUISetState(@SW_SHOW)
While 1
$g_nMsg = GUIGetMsg()
Switch $g_nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $GUI_btnBrowse
$sData = FileOpenDialog("Select File To Format", "", "RM NYB files(*.c01)|Allfiles (*.*)", 1)
GUICtrlSetData($GUI_edtFile, $sData)
Case $GUI_btnRun
_Run()
Case $GUI_btnQuit
Exit
EndSwitch
WEnd
Exit
Func _Run()
EndFunc
[/autoit]
Attachments (0)
Change History (8)
comment:1 by , 18 years ago
comment:2 by , 18 years ago
| Owner: | set to |
|---|---|
| Status: | new → accepted |
comment:3 by , 18 years ago
Jos, can't you detect when a variable is being assigned via a function call and just skip stripping those? Or is your script currently not able to detect something like that?
comment:4 by , 18 years ago
That's an option too: What I do in the program is to build a table of all Variables and the number of times they are used in the first iteration of all records. In the second iteration, all lines that are starting with Global are processed and Variables are checked in the Table if its used or not.
At that stage a test can be added to avoid the skipping of the line.
comment:5 by , 18 years ago
| Version: | → Other |
|---|
follow-up: 7 comment:6 by , 18 years ago
| Resolution: | → Fixed |
|---|---|
| Status: | accepted → closed |
I added an extra test which will leave the global variables that are set to a Function value.
Fixed in v 1.0.24.12

The reason that the lines are deleted is the fact that Obfuscator will remove all Global defined variables that are not use at all in the script. So the relation is the variable not the GUICtrlxxx() command.
Not sure what a good approach would be for this to fix this for the future. approach could be to only remove Global defined vars from Included files and skip the variable removal step for the source script code.
Will think about it for a bit to see what is best..
Jos