Obfuscating all your variables, objects, properties, methods, ...
This program has the ability to obfuscate your variables anywhere they are used. If Dynamic Obfuscation is being used then all the usages of variables found will be replaced with obfuscated strings that contain
%'s
, otherwise their replacements will have no %'s
. BUT Variables Are NOT Automatically Obfuscated
You need to declare all variables, objects, properties and methods you would like to obfuscate to the obfuscator using special commands.
DO NOT FORGET THAT THE USE OF DUMPS WILL ALSO BE NECESSARY FOR DYNAMIC OBFUSCATION!
Use the DEFGLOBVARS to obfuscate all your variables and objects
In order to have them obfuscated, you specify their names in the define global variables command comment:
It does not matter where you put these statements in the source code. They do not need to be put before your usage of the global variables or in the section that the variables are used in.
HOWEVER FOR CLARITY AND MAINTAINABILITY
IT IS RECOMMANDED THAT YOU DECLARE ALL YOUR VARIABLES IN YOUR MAIN SCRIPT AT THE VERY BEGINNING
AND SPLIT THE DECLARATION IN SEVERAL LINES WITH COMMENTS
EXEMPLE :
;$OBFUSCATOR: $DEFGLOBVARS: (list of global variable names)Use the DEFGLOBVARS command as well for your Objects
It does not matter where you put these statements in the source code. They do not need to be put before your usage of the global variables or in the section that the variables are used in.
HOWEVER FOR CLARITY AND MAINTAINABILITY
IT IS RECOMMANDED THAT YOU DECLARE ALL YOUR VARIABLES IN YOUR MAIN SCRIPT AT THE VERY BEGINNING
AND SPLIT THE DECLARATION IN SEVERAL LINES WITH COMMENTS
EXEMPLE :
;********************************
; SUPER GLOBALS
;********************************
;$OBFUSCATOR: $DEFGLOBVARS: MySuperglob1,MySuperglob2,MySuperglob3
;********************************
; V VARS
;********************************
;$OBFUSCATOR: $DEFGLOBVARS: RN_Pic_Close,RN_NameReduced,RN_NTBKReduced,BTSTB,BTSTI,BTSTU
;********************************
; OBJECTS VARS
;********************************
;$OBFUSCATOR: $DEFGLOBVARS: SleepParametersD,glb_Default_SleepParm
;********************************
; REAL GLOBALS VARS
;********************************
;$OBFUSCATOR: $DEFGLOBVARS:EverFastStandard_Hotkey,GestureEnable
;********************************
; FREQUENT LOCAL VARS
;********************************
;$OBFUSCATOR: $DEFGLOBVARS: found,FoundPos,NewStr
IF YOU WANT You can declare local vars separately in each function with DEFLOSVARS
If you find it simplier to maintain you can also declare local vars separately in each function.
For that just use:
To avoid workload and repetition, this is not recommended. It is recommended to declare them using the above-mentioned and valid-for-all DEFGLOBVARS command.
;$OBFUSCATOR: $DEFLOSVARS: (list of global variable names)In that case these variables will be separately obfuscated and only in this function.
To avoid workload and repetition, this is not recommended. It is recommended to declare them using the above-mentioned and valid-for-all DEFGLOBVARS command.
Use the DEFGLOBPARTIALVARS to obfuscate all your frequent partial vars
Vars like
Space%A_Index%Var%B_Index%_Path
can have each part (Space,Var,_Path
) be obfuscated
For that just use:
;$OBFUSCATOR: $DEFGLOBPARTIALVARS: (list of global variable names)They are some constraints : When you declare a PARTIAL VAR to be obfuscated, you can then not replace anywhere this part by a string variable containing the original part name.
For example if you have setIf you use these string variable and still want it to be obfuscated then just don't defineSpace
as PARTIAL VAR to use for example inSpace%A_Index%Var%B_Index%_Path
, then you CANNOT call%What%%A_Index%Var%B_Index%_Path
withWhat:="Space"
before as the part-varSpace
has been obfuscated and would not corresponds to this name anymore.
Space
as PARTIAL VAR and call it always with string variables like %What%%A_Index%Var%B_Index%_Path
with What:="Space"
and declare What
as GLOBVAR to the Obfuscator.
Use the DEFSYSPROPERTIES to obfuscate your properties
Obfuscation will only be applied for these elements in dynamic mode
You should list them with the new:
You should list them with the new:
;$OBFUSCATOR: $DEFPROPERTIES: (list of property names)Because this functionality is still new, it is only the property calls which will be obfuscated. Just like System functions, their original names will not be changed. But still, property definitions like
Obj={ Prop:"test"}
can look like Obj={(k#fkk#f@ kff@f@fkf@kff@ kfkffff@ fkf@f@ff k#fffkfkf@f@f@ f@k#fffk):"test"}
Property Usess like Obj.Prop
can look like Obj[k#fkk#f@ kff@f@fkf@kff@ kfkffff@ fkf@f@ff k#fffkfkf@f@f@ f@k#fffk]
Of course, the Obj
itself, the property parameters
and string values
can be obfuscated as well so that the whole thing will look obfuscated :)
Use the DEFSYSMETHODS to obfuscate your methods
Obfuscation will only be applied for these elements in dynamic mode
You should list them with the new:
;$OBFUSCATOR: $DEFSYSMETHODS: (list of method names)Because this functionality is still new, it is only the method calls which will be ofuscated. Just like System functions, their original names will not be changed. But still it will be quite effective to obfuscate the method calls :
Obj.Method(param)
can look like Obj[k#fkk#f@ k#fffkfkf@f@f@ f@k#fffk](Param)
Of course, the Obj
itself, the method parameters
and string values
can be obfuscated as well so that the whole thing will look obfuscated :)
Use the DEFSYSVARS to obfuscate your properties and methods
You should list them with the new:
;$OBFUSCATOR: $DEFSYSVARS: (list of ahk built-in variables)Due to the variables being built-in is only the variable calls which will be obfuscated. Just like System functions, their original names will not and cannot be changed. Also please note that All system variables surrounded by
%'s
wont and cannot be obfuscated. Nevertheless All other uses in expressions will be obfuscated.
This Obfuscation is much stronger in dynamic mode as in straight mode the name will be visible, only split by some empty vars.