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:
;$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:
;$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 set Space as PARTIAL VAR to use for example in Space%A_Index%Var%B_Index%_Path, then you CANNOT call %What%%A_Index%Var%B_Index%_Path with What:="Space" before as the part-var Space has been obfuscated and would not corresponds to this name anymore. 

If you use these string variable and still want it to be obfuscated then just don't define 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:
;$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.