Page 2 of 3

Re: [TOOL] AHK Dynamic Obfuscator L - Protect your code by Obfuscation

Posted: 23 Jun 2018, 15:21
by AHKtreasureland
I'm amazed at the way it works. truly amazed. have one question, Don. Would it work with AHK_H? I kinda need that multithread power of H. Thank you again, Don.

Re: [TOOL] AHK Dynamic Obfuscator L - Protect your code by Obfuscation

Posted: 25 Jun 2018, 10:47
by DigiDon
HI, thanks for the feedback.

I didn't use ahk_h for now but I would say that normally the obfuscator should work without problem on AHK_H.

Nevertheless I think it would not work with AHK v2 or AHK_H v2 because there are major syntax changes the obfuscator will probably not recognize.

Re: [TOOL] AHK Dynamic Obfuscator L - Protect your code by Obfuscation

Posted: 28 Jul 2018, 15:30
by DDook
Obfuscation is very good. There is one problem.
Gui's Glabel is obfuscated just like label:.
This is obfuscation of the source in my example.

Code: Select all

gui, add, button, xm y+20 G[b]k#fkfk@k#kk@f@@f@kk#k@k@@fkkk##k@k[/b], Test gui submit
	gui, add, button, x+20 yp G#fkkfkfkkfkkfff#fkff@kff@kf@k@, Cancel program
	gui, show
}


;LABEL ORIGINAL NAME: testguisubmit
[b]k#fkfk@k#kk@f@@f@kk#k@k@@fkkk##k@k[/b]:
	gui, submit, nohide
	msgbox, TESTING OBF OF Vvariablename IN 'gui, add':`n`nyou entered "%kfk#kfff%%f#kff#@fk@%%k@#kk##f%"
return
This is a source already obfuscated to the example.

Code: Select all

gui, add, button, xm y+20 G[b]fkfk%f@fffk%%fffff@%%f@fkkf%kff@%k#f@k#k#f@k#kfkfk#fkfffk%f%fkk#ffk#ffffk#fffkfkfkf@%fk#fkkfffk#ff[/b], Test gui submit
	gui, add, button, x+20 yp G%kff@f@k#fkffffffffk#f@f@k#k#%%k#f@k#fk%%fff@kf%, Cancel program
	gui, show
}


;LABEL ORIGINAL NAME: testguisubmit
[b]fkfkkff@ffkfk#fkkfffk#ff[/b]:
	gui, submit, nohide
	msgbox, TESTING OBF OF Vvariablename IN 'gui, add':`n`nyou entered "%fkf@k#k#%%kfkfk#kfk#%%fff@k#fk%"
return
What is the solution to this?
What am I doing wrong?

Re: [TOOL] AHK Dynamic Obfuscator L - Protect your code by Obfuscation

Posted: 29 Jul 2018, 08:46
by DigiDon
Hello DDook,

I'm not sure to understand.
It seems you provide two obfuscated script parts. Where is the unobfuscated original source code?

Which example exactly are you using? I had to search for it, there are several : "min-straight-obfuscation"?
If yes then if you create the TransMap for "straightobf.ahk", then run the obfuscation, you will see that gLabels are obfuscated correclty.

Re: [TOOL] AHK Dynamic Obfuscator L - Protect your code by Obfuscation

Posted: 29 Jul 2018, 15:09
by DDook
Thank you for your reply.
This is part of the code in your example (mindynobf_obfuscated.ahk).

Code: Select all

k#kfk#ffk#f@kfk#() { 
	global
	local fff@kfffkff@k#kffkff, fff@f@k#f@k#k#k#kf, fkk#fffkk#fkfkkfff, f@fffkk#kffffk
;$OBFUSCATOR: $DEFLOSVARS: ff%kff@fk%f%f@fff@fk%@k%f@f@f@k#kfkfkff@k#k#%ff%ffk#ff%kff@k#kffkff, fff@f%ffk#ffk#%%k#k#kfffffkff@fkffff%k#f@k%k#f@fffk%#k#k#kf, fkk#ff%f@k#k#fkfffkffk#f@%%kfff%%kffff@%kk#fkfkkfff, f@%ffkfkfkf%ff%fkk#k#%f%k#f@k#fkkffkk#f@f@kffffk%k#%kfkffkkffff@k#kf%%fffk%ffffk

	fff@k%k#f@fffffff@fkf@ff%ffkff%ffkf%@k#kf%k#f@kfffk#k#fkffkffk%kff 		= % "s22"
	ff%k#f@kfffk#k#fkffkffk%@f@%fffk%k#f%k#k#fffk%@%f@fk%k#k#k#kf 		= % "s18"	
	%ffk#%%k#ffffk#fkk#ffk#kfff%%f@fk% 	= % "s14"
	f@f%fffff@%ffkk%fffkff%#%ffkfffkffffkf@fk%ffffk := "from Dynamic Obfuscator"

	gui 2:default
	gui, destroy
	gui, margin, 20, 20
	
	;the h1font variable below should be obfuscated
	gui, font, %kfffk#%%fff@kfffkff@k#kffkff%%k#kfkf% bold
	gui, add, text, xm ym, Obfuscator Test GUI
	
	gui, font, %f@k#k#kf%%fkk#fffkk#fkfkkfff%%f@fkk#ff% norm underline
	;the gosub label below should be obfuscated
	gui, add, text, xm y+12 cblue G%fffkk#fkfkfkfkk#fkk#k#fkk#ff%%k#k#fkkf%%fkf@%, test gosub obfuscation in gui statement ;point3
	
	gui, font, %fkk#fffkk#fkfkkfff%%kfffff%%fkfffkff% norm
	gui, add, text, xm y+12 G%f@f@fkfk%kffff@%k#f@k#k#f@k#kfkfk#fkfffk%f%fffk%k#f@k#%k#f@k#fkkffkk#f@f@kffffk%#k#fkfffffffkfkffk#, ;point3
(
hello world

TESTING LITERAL STRING :
"%f@fffkk#kffffk%%f@f@fkfk%%k#ffff%"

-press home key to test hotkeys-
)
	gui, add, text, xm y+12, enter something here to test`nvariable obfuscation
;$OBFUSCATOR: $DEFGLOBVARS: %k#f@fk%kf%k#fffkf@%k%kfk#f@kff@ffkff@kf%k#%fkf@fkfff@k#f@f@fkk#%fk#
	gui, add, edit, xm y+2 V%fkk#ffk#ffffk#fffkfkfkf@%f%fkf@k#%kf%f@f@ffk#k#k#kfk#f@k#k#%%fkkf%#kfk# r4, 
		
	gui, add, button, xm y+20 Gfkfk%f@fffk%%fffff@%%f@fkkf%kff@%k#f@k#k#f@k#kfkfk#fkfffk%f%fkk#ffk#ffffk#fffkfkfkf@%fk#fkkfffk#ff, Test gui submit ;point1
	gui, add, button, x+20 yp G%kff@f@k#fkffffffffk#f@f@k#k#%%k#f@k#fk%%fff@kf%, Cancel program ;point2
	gui, show
}


;LABEL ORIGINAL NAME: testguisubmit
fkfkkff@ffkfk#fkkfffk#ff: ;point1
	gui, submit, nohide
	msgbox, TESTING OBF OF Vvariablename IN 'gui, add':`n`nyou entered "%fkf@k#k#%%kfkfk#kfk#%%fff@k#fk%"
return


;LABEL ORIGINAL NAME: cancelprog
fkfkfff@k#f@k#k#f@kffkk#f@: ;point2
	exitapp
return


;LABEL ORIGINAL NAME: guigosub
kffff@ffk#f@k#k#k#fkfffffffkfkffk#: ;point3
	msgbox, inside _guigosub_
return

This code is what I did (mindynobf.ahk).

Code: Select all

ff#ffkfkf#kfk@() { 
	global
	local @f@kkk#fk##fkk#ff#ff, f##fkf@f#kf##k, #ff@kfk@k@@kf#ffkk, k#fkkf#kkkkfk#@kf@ff
;$OBFUSCATOR: $DEFLOSVARS: @%@fk@#kfkk@ff@kfk#kkkf@%@%ffkf#f%kkk#fk##fkk#ff#ff, f#%f@#k%#fkf%f@@fk@ff@kfk@kkk#kffk#%f#kf##k, #f%f#k@f#f@f##kk#%@kf%#kkf@ffk@fk#ffkkk@kf%@k%fff#%@@%#ff@%kf#ffkk, k#f%f#@k@k%kkf#%k@@fkff#@ff@k#k#f@#k%%#fkkfk@fkff##ff#k#%kkfk#@kf@ff

	%f##k%%@kk@fk@kff#kff#fk@kkf#@f%%k#kkkfff% 		= % "s22"
	%@kfk@k%%#k#fk@@ff#f#k#kf@kf#%%f@k#k#% 		= % "s18"	
	%k#f@%%k#@f%%@fff@f@ff@kk#k% 	= % "s14"
	k#fkk%@fk@#kfkk@ff@kfk#kkkf@%#kkkkfk%@fkk@f%#@kf@ff := "from Dynamic Obfuscator"

	gui 2:default
	gui, destroy
	gui, margin, 20, 20
	
	;the h1font variable below should be obfuscated
	gui, font, %k@kk%%@f@kkk#fk##fkk#ff#ff%%@f@kkkf#% bold
	gui, add, text, xm ym, Obfuscator Test GUI
	
	gui, font, %k##kk@kf%%#ff@kfk@k@@kf#ffkk%%k##fk#% norm underline
	;the gosub label below should be obfuscated
	gui, add, text, xm y+12 cblue Gf#k#f@f@kfkffkfff#@k@kk@kf@kfk, test gosub obfuscation in gui statement ;point3
	
	gui, font, %#ff@kfk@k@@kf#ffkk%%#kkffkff%%#k#k% norm
	gui, add, text, xm y+12 Gf#k#f@f@kfkffkfff#@k@kk@kf@kfk, ;point3
(
hello world

TESTING LITERAL STRING :
"%fkff#k%%k#fkkf#kkkkfk#@kf@ff%%kkkffk#f%"

-press home key to test hotkeys-
)
	gui, add, text, xm y+12, enter something here to test`nvariable obfuscation
;$OBFUSCATOR: $DEFGLOBVARS: f#%fff@%%kf@kfffk@f@kf#kkk#%f%#ffk%f#@fk@
	gui, add, edit, xm y+2 Vf#kff#@fk@ r4, 
		
	gui, add, button, xm y+20 Gk#fkfk@k#kk@f@@f@kk#k@k@@fkkk##k@k, Test gui submit ;point1
	gui, add, button, x+20 yp G#fkkfkfkkfkkfff#fkff@kff@kf@k@, Cancel program ;point2
	gui, show
}


;LABEL ORIGINAL NAME: testguisubmit
k#fkfk@k#kk@f@@f@kk#k@k@@fkkk##k@k: ;point1
	gui, submit, nohide
	msgbox, TESTING OBF OF Vvariablename IN 'gui, add':`n`nyou entered "%kfk#kfff%%f#kff#@fk@%%k@#kk##f%"
return


;LABEL ORIGINAL NAME: cancelprog
#fkkfkfkkfkkfff#fkff@kff@kf@k@: ;point2
	exitapp
return


;LABEL ORIGINAL NAME: guigosub
f#k#f@f@kfkffkfff#@k@kk@kf@kfk: ;point3
	msgbox, inside _guigosub_
return
This code is from line 135 to line 193 of mindynobf_obfuscated.ahk.
Do you know the difference?
Look at the "point1","point2","point3" in the code.

The mindynobf_obfuscated.ahk originally in the example
Label: and Glabel do not match.
But my code is the same as Label: and Glabel.

What is the solution for this?

Re: [TOOL] AHK Dynamic Obfuscator L - Protect your code by Obfuscation

Posted: 30 Jul 2018, 13:48
by DigiDon
Hi DDook,

Alright I see now.
I've run some tests and it seems that there are indeed no %'s straight or dynamic vars introduced inside the names for gLabels or vVars no more.
It means I must have changed it at some point because it used to be obfuscated this way.

So that's an undocumented regression and that's on my side, not yours. Thanks for pointing that out.

To correct it would need a bunch of testing from my side but I currently do not have the ressources to do so (donations have been unfortunately non-existent...).
Maybe I'll be able to fix it in the future, I will update the post if I do.

Re: [TOOL] AHK Dynamic Obfuscator L - Protect your code by Obfuscation

Posted: 20 Aug 2018, 03:19
by Kmeaha
Dear Mr. DigiDon

thanks a lot for your project it is working great as i tried with straight and dynamic mode, perfect and smoothly
but when i tried the ihidestr() option it didn't work properly, i use your example (hidestring_example.ahk) and after testing to obfuscated with the gui it didn't give me the same result of your file (hidestring_example_obfuscated.ahk), the string 12 and text still showing after obfuscated
this is a part of your example:
;test obfuscation of parameters
;msgbox will show 12 if obfuscation of parameters works
msgbox, % "parameter: " . test_parameters(ihidestr("12"))

msgbox % "obfuscated text = " ihidestr("TEXT")

RETURN


and this is the result after obfuscated:
;test obfuscation of parameters
;msgbox will show 12 if obfuscation of parameters works
msgbox, % "parameter: " . #fkff%ffkkff%k@fkff@k#k@(fkf%@ff#f#%kk@#f@kk#("12"))

msgbox % "obfuscated text = " fkfk%@k#k%k@#f@kk#("TEXT")

RETURN


thanks again

Re: [TOOL] AHK Dynamic Obfuscator L - Protect your code by Obfuscation

Posted: 20 Aug 2018, 08:34
by DigiDon
Hello Kmeaha,

You're right: The function should be named "hidestr" and not "ihidestr".

I forgot to modify the internal example. The online doc is OK though.

Thanks for pointing it out.

Re: [TOOL] AHK Dynamic Obfuscator L - Protect your code by Obfuscation

Posted: 21 Aug 2018, 09:00
by Kmeaha
Thanks for the reply Mr. DigiDon
now i tested and the obfuscated option working but giving me an error
the original script working fine but after obfuscated it is giving me an error
her is my full testing script:

Code: Select all

#SingleInstance force
#NoEnv

;$OBFUSCATOR: $STRAIGHT_MODE:

;$OBFUSCATOR: $DEFGLOBVARS: startdate,enddate,pcname

pcname := hidestr("hb1it014")
startdate := hidestr("20180801")
enddate := hidestr("20200801")

#r::
heckExpiry:
FormatTime, Today,, yyyyMMdd
Start  = %startdate%
Expiry = %enddate%
If (Today > Expiry or Today < Start)
{
		MsgBox % "PROGRAM trial version expired`nContact author for a full version ."
		ExitApp
}

If A_ComputerName != %pcname%
{
	MsgBox % "This is not the authorized computer: hb1it014."
	ExitApp
}

MsgBox % "Everything is running fine."
ExitApp

;$OBFUSCATOR: $END_AUTOEXECUTE: 
;******************************************
;	PUT THESE FUNCTIONS IN YOUR ACTUAL AUTOHOTKEY SCRIPT FILE

hidestr(thisstr)
{
	return thisstr
}


decode_ihidestr(startstr) 
{
	global	
;$OBFUSCATOR: $DEFGLOBVARS: hexdigits
	
	static newstr, startstrlen, charnum, hinibble, lownibble, mybinary
;$OBFUSCATOR: $DEFLOSVARS: newstr, startstrlen, charnum, hinibble, lownibble, mybinary

	hexdigits = % "0123456789abcdef"
		
	decode_hexshiftkeys(startstr)
	
	startstr = % substr(startstr, 1, 1) . substr(startstr, 6)
	startstrlen = % strlen(startstr)
		
	newstr = 
	loop, % strlen(startstr) 
		newstr = % substr(startstr, a_index, 1) . newstr
	
	startstr = % newstr
	newstr = 
	charnum = 1
	while true
	{
		if (charnum >startstrlen)
			break
			
		hinibble = % substr(startstr, charnum, 1)
		hinibble = % instr(hexdigits, hinibble) - 1
		
		lownibble = % substr(startstr, charnum + 1, 1)
		lownibble = % instr(hexdigits, lownibble) - 1
		
		hinibble := decode_shifthexdigit(hinibble)
		lownibble := decode_shifthexdigit(lownibble)
		
		mybinary = % hinibble * 16 + lownibble
		newstr .= chr(mybinary)
		
		charnum += 2		
	}
		
	newstr = % fixescapes(newstr)
		
	return, newstr	
}
decode_hexshiftkeys(startstr)
{
	global
;$OBFUSCATOR: $DEFGLOBVARS: decodekey, ishexchar, useshiftkey
	
	decodekey := "fff@kkf1ffkfkfkfff#k1fk@kf#@fffk@#kk"
	ishexchar := "fff@f1ff@kffkk#f1fffffkf"
	
	%decodekey%%ishexchar%1 = % substr(startstr, 2, 1)
	%decodekey%%ishexchar%2 = % substr(startstr, 3, 1)
	%decodekey%%ishexchar%3 = % substr(startstr, 4, 1)
	%decodekey%%ishexchar%4 = % substr(startstr, 5, 1)
	
	loop, 4
		%decodekey%%a_index% = % instr(hexdigits, %decodekey%%ishexchar%%a_index%) - 1
			
	useshiftkey = 0
}	

decode_shifthexdigit(hexvalue)
{
	global
	
	useshiftkey++
	if (useshiftkey > 4)
		useshiftkey = 1	
	
	hexvalue -= %decodekey%%useshiftkey%
	
	if (hexvalue < 0) 
		hexvalue += 16
		
	return hexvalue	
}

fixescapes(forstr)
{
	global
	
	StringReplace, forstr, forstr, % "````", % "``", all
	StringReplace, forstr, forstr, % "``n", % "`n", all
	StringReplace, forstr, forstr, % "``r", % "`r", all
	StringReplace, forstr, forstr, % "``,", % "`,", all
	StringReplace, forstr, forstr, % "``%", % "`%", all	
	StringReplace, forstr, forstr, % "``;", % "`;", all	
	StringReplace, forstr, forstr, % "``t", % "`t", all
	StringReplace, forstr, forstr, % "``b", % "`b", all
	StringReplace, forstr, forstr, % "``v", % "`v", all
	StringReplace, forstr, forstr, % "``a", % "`a", all
	
	StringReplace, forstr, forstr, % """""", % """", all
	
	return forstr
}

Re: [TOOL] AHK Dynamic Obfuscator L - Protect your code by Obfuscation

Posted: 21 Aug 2018, 09:15
by Kmeaha
thanks it is already solved

the problem was in line of decode as i forgot to change it to hidestr instead of ihidestr:
decode_ihidestr(startstr)
{

Re: [TOOL] AHK Dynamic Obfuscator L - Protect your code by Obfuscation

Posted: 14 Oct 2018, 02:28
by Bluscream
I don't get it, why can't i just click one button and the whole script becomes obfuscated? I mean with java i can even do it online (https://javascriptobfuscator.com/Javasc ... cator.aspx)

Re: [TOOL] AHK Dynamic Obfuscator L - Protect your code by Obfuscation

Posted: 14 Oct 2018, 09:31
by guest3456
Bluscream wrote:I don't get it, why can't i just click one button and the whole script becomes obfuscated? I mean with java i can even do it online (https://javascriptobfuscator.com/Javasc ... cator.aspx)
go ahead and update this script for us, so we all can click one button and have the script obfuscated. once you attempt to do that, either 1. you'll have your answer as to why, or 2. you'll have been a better coder than those who have attempted it, and you will have achieved it for us.

Re: [TOOL] AHK Dynamic Obfuscator L - Protect your code by Obfuscation

Posted: 09 Nov 2018, 02:26
by Alibaba
Bluscream wrote: ↑
14 Oct 2018, 02:28
I don't get it, why can't i just click one button and the whole script becomes obfuscated? I mean with java i can even do it online (https://javascriptobfuscator.com/Javasc ... cator.aspx)
Good luck obfuscating Java with a JavaScript Obfuscator... :roll:

Re: [TOOL] AHK Dynamic Obfuscator L - Protect your code by Obfuscation

Posted: 26 Jan 2019, 22:41
by DRocks
This seems very nice will have a look at it when reaching end of my current project

Thank you

Re: [TOOL] AHK Dynamic Obfuscator L - Protect your code by Obfuscation

Posted: 27 Jan 2019, 11:07
by kyuuuri
Any plans to update this for ahk v2? I would do it if could but I'm still trying to figure out what I have to change in the source.

Re: [TOOL] AHK Dynamic Obfuscator L - Protect your code by Obfuscation

Posted: 17 Feb 2019, 13:13
by murataygun
Hi Digidon,
Thanks for your efforts about this. I've read allmost all the docs but didnt quite understand how included files would obfuscated. I didn find any example about that allso. One simple example should be enough. Thanks.

Re: [TOOL] AHK Dynamic Obfuscator L - Protect your code by Obfuscation

Posted: 19 Feb 2019, 15:27
by DigiDon
Hi all, Sorry for having not posted any news for a while.

I had to undergo some personal changes and took a new hard-working job in a company.
I kept convincing myself the past months that I would find time to get back at my projects but truth is right now I can't.
So I will try to check messages once in a while but I can't commit on any delay especially on any update.

Now some quick answers:
@kyuuuri: no not planned for v2 sorry
@murataygun : take a look at : https://www.everfastaccess.com/AHK-Obfuscator/includefiles.htm
Cheers

Re: [TOOL] AHK Dynamic Obfuscator L - Protect your code by Obfuscation

Posted: 22 Apr 2019, 10:02
by freespacing
@DigiDon

Hi there,
I realize you're busy with real life. Got to keep the fridge full. ;)
Thought I'd post this question for if you ever have a chance to look at the project again.

I find the goal this program is trying to achieve mind-blowing. I love that the documentation goes into so much detail about creating specific directives in the forms of comments and can see how that can help someone have everything ready in the source code for whenever they want to build an obfuscated file to release.

To get started, testing the obfuscator in Static mode on a large file without #Includes.

It reports success creating the map, then the obfuscated file.
When I try to run the obfuscated file, this pops up:
The following variable name contains an illegal character:
"#k%#fkffkkk%#kffk@f#ff@k"
The program will exit.

Perhaps a hint, so will ask: Can the opening { of a function definition (after the list of arguments) live on a different line? I ask because some of my functions have many args so I've broken the definition over two lines.

Some troubleshooting info:
  • My text editor does not find this variable #k%#fkffkkk%#kffk@f#ff@k in the code
  • The program's first line is ;$OBFUSCATOR: $STRAIGHT_MODE:
  • ;$OBFUSCATOR: $END_AUTOEXECUTE: is at the end of the auto-execute part, after ExitApp and before all function definitions.
  • All Column 1 } close a function, as confirmed by regex search for (?m)^}
  • There is not a single label in the file
  • Just in case it's a hint, there is one anonymous function call in the form of my_callback := Func(callback_function_name) followed by callback_result := my_callback.Call(
  • Haven't yet tried Dynamic mode because assume-global will cause a lot of work to declare all variables as local inside functions. Would prefer to get success with Static first before going that way.
Would appreciate any insights… But only if and when you can spare the time.

Hope you have a great week.

Re: [TOOL] AHK Dynamic Obfuscator L - Protect your code by Obfuscation

Posted: 29 May 2019, 21:25
by manehscripts
Hello guys!

@DigiDon I'm have a problem while trying to obfuscate this code below:

Code: Select all

;$OBFUSCATOR: $DYNAMIC_MODE:

; --------------------
obf_dumpcommonobjfrags()
obf_dumpunclassed()
obf_dumpunsecclasses()
obf_dumpall()

;$OBFUSCATOR: $DEFGLOBVARS: COUNT,Variable

Gui, +AlwaysOnTop
Gui, Add, Edit, r1 ReadOnly w200 vAlert, Stopped!
Gui, Add, Button, vStartScript gStartG, START!
Gui, Show,
return
;$OBFUSCATOR: $END_AUTOEXECUTE: 

toggle := 0
StartG:
    toggle := !toggle
    if (toggle) {
        GuiControl,,StartScript, STOP!
        GuiControl,,Alert, Running!
        COUNT := hidestr("Couuuuunt: ")
		CritObj := CriticalObject({Variable: COUNT})
		
       script:="
        ("
            Loop {
                CritObj := CriticalObject(A_Args[1])
				variable1 = `% CritObj.Variable
				var1++
				ToolTip, %variable1%%var1%
			}
        )"

		DllOn:=AhkThread(script,&CritObj)
    } else {
        DllOn.ahkTerminate.1
        GuiControl,,Alert, Stopped!
        GuiControl,,StartScript, START!
    }
return

Esc::ExitApp
GuiClose:
ExitApp

;*******************************************************************************
;                        O B F   D U M P   F U C T I O N S
;*******************************************************************************
;$OBFUSCATOR: $FUNCS_CHANGE_DEFAULTS: ,, -1
obf_dumpcommonobjfrags() 
{
    global
;$OBFUSCATOR: $DUMP_SECFRAGS_FORCLASSES: common
;$OBFUSCATOR: $DUMP_TMESSFRAGS_FORCLASSES: common
} 
;$OBFUSCATOR: $FUNCS_RESTORE_DEFAULTS:

;$OBFUSCATOR: $FUNCS_CHANGE_DEFAULTS: ,, -1

obf_dumpunclassed()
{
    global
;$OBFUSCATOR: $FUNCFRAGS_DUMPCLASS: unclassed
;$OBFUSCATOR: $LABELFRAGS_DUMPCLASS: unclassed
}

obf_dumpunsecclasses()
{
    global
;$OBFUSCATOR: $FUNCFRAGS_DUMPCLASS: unsecclasses
;$OBFUSCATOR: $LABELFRAGS_DUMPCLASS: unsecclasses 
}
;$OBFUSCATOR: $FUNCS_RESTORE_DEFAULTS:

obf_dumpall() 
{
    global
;$OBFUSCATOR: $GLOBVARFRAGS_DUMPALL:
;$OBFUSCATOR: $GLOBPARTIALVARSFRAGS_DUMPALL:
;$OBFUSCATOR: $SYSVARFRAGS_DUMPALL:
;$OBFUSCATOR: $LOSVARFRAGS_DUMPALL:
;$OBFUSCATOR: $PARAMFRAGS_DUMPALL:
;$OBFUSCATOR: $SYSFUNCFRAGS_DUMPALL:
;$OBFUSCATOR: $SYSPROPERTIESFRAGS_DUMPALL:
;$OBFUSCATOR: $SYSMETHODSFRAGS_DUMPALL:
}

encode_hidestr(startstr)
{
	global
	static onechar, newstr, secstartstr, hexdigits 
	
	hexdigits = 0123456789abcdef

	createhexshiftkeys()
		
	newstr = 
	;convert to hexidecimal
	loop, % strlen(startstr)
	{
		strascii = % asc(substr(startstr, a_index, 1))
		hinibble = % strascii // 16
		lownibble = % strascii - (hinibble * 16)
		
		;shift the hex digits in order to encrypt them
		hinibble := encode_shifthexdigit(hinibble)
		lownibble := encode_shifthexdigit(lownibble)
		
		newstr .= substr(hexdigits, hinibble + 1, 1) . substr(hexdigits, lownibble + 1, 1)
	}
	
	startstr := newstr
	;now i'll reverse the hex string
	newstr = 
	loop, % strlen(startstr) 
		newstr = % substr(startstr, a_index, 1) . newstr
	
	;convert key values to hex values. i can convert directly to
	;single hex digits because my keys only range from 1-15
	allhexkeys =
	loop, 4
		allhexkeys .=  substr(hexdigits, key%a_index% + 1, 1)
	
	;stuff the key values into the string starting at character 2
	newstr := substr(newstr, 1, 1) . allhexkeys . substr(newstr, 2)
	
	return, newstr
}

encode_shifthexdigit(hexvalue)
{
	global
	
	;each time i enter this routine i will use the next key value
	;to shift the hexvalue
	useshiftkey++
	if (useshiftkey > 4)
		useshiftkey = 1	
	
	;add the shift key to the hexvalue 
	hexvalue += key%useshiftkey%
	
	;if i go over, just substract 16 to simulate a circle of hex
	if (hexvalue > 15) 
		hexvalue -= 16
		
	return hexvalue
	
}

createhexshiftkeys()
{
	global
	
	;create random 4 entry 'encrypt' key, each entry can be 1-15
	loop, 4
		random, key%a_index%, 1, 15
		
	useshiftkey = 0
}

;******************************************
;	PUT THESE FUNCTIONS IN YOUR ACTUAL AUTOHOTKEY SCRIPT FILE

hidestr(thisstr)
{
	return thisstr
}

decode_hidestr(startstr) 
{
	global	
;$OBFUSCATOR: $DEFGLOBVARS: hexdigits
	critical
	static newstr, startstrlen, charnum, hinibble, lownibble, mybinary
;$OBFUSCATOR: $DEFLOSVARS: newstr, startstrlen, charnum, hinibble, lownibble, mybinary

	hexdigits = % "0123456789abcdef"
		
	decode_hexshiftkeys(startstr)
	
	startstr = % substr(startstr, 1, 1) . substr(startstr, 6)
	startstrlen = % strlen(startstr)
		
	newstr = 
	loop, % strlen(startstr) 
		newstr = % substr(startstr, a_index, 1) . newstr
	
	startstr = % newstr
	newstr = 
	charnum = 1
	loop
	{
		if (charnum >startstrlen)
			break
			
		hinibble = % substr(startstr, charnum, 1)
		hinibble = % instr(hexdigits, hinibble) - 1
		
		lownibble = % substr(startstr, charnum + 1, 1)
		lownibble = % instr(hexdigits, lownibble) - 1
		
		hinibble := decode_shifthexdigit(hinibble)
		lownibble := decode_shifthexdigit(lownibble)
		
		mybinary = % hinibble * 16 + lownibble
		newstr .= chr(mybinary)
		
		charnum += 2		
	}
		
	newstr = % fixescapes(newstr)
		
	return, newstr	
}
decode_hexshiftkeys(startstr)
{
	global
;$OBFUSCATOR: $DEFGLOBVARS: decodekey, ishexchar, useshiftkey
	
	decodekey := "fff@kkf1ffkfkfkfff#k1fk@kf#@fffk@#kk"
	ishexchar := "fff@f1ff@kffkk#f1fffffkf"
	
	%decodekey%%ishexchar%1 = % substr(startstr, 2, 1)
	%decodekey%%ishexchar%2 = % substr(startstr, 3, 1)
	%decodekey%%ishexchar%3 = % substr(startstr, 4, 1)
	%decodekey%%ishexchar%4 = % substr(startstr, 5, 1)
	
	loop, 4
		%decodekey%%a_index% = % instr(hexdigits, %decodekey%%ishexchar%%a_index%) - 1
			
	useshiftkey = 0
}	

decode_shifthexdigit(hexvalue)
{
	global
	
	useshiftkey++
	if (useshiftkey > 4)
		useshiftkey = 1	
	
	hexvalue -= %decodekey%%useshiftkey%
	
	if (hexvalue < 0) 
		hexvalue += 16
		
	return hexvalue	
}

fixescapes(forstr)
{
	global
	
	StringReplace, forstr, forstr, % "````", % "``", all
	StringReplace, forstr, forstr, % "``n", % "`n", all
	StringReplace, forstr, forstr, % "``r", % "`r", all
	StringReplace, forstr, forstr, % "``,", % "`,", all
	StringReplace, forstr, forstr, % "``%", % "`%", all	
	StringReplace, forstr, forstr, % "``;", % "`;", all	
	StringReplace, forstr, forstr, % "``t", % "`t", all
	StringReplace, forstr, forstr, % "``b", % "`b", all
	StringReplace, forstr, forstr, % "``v", % "`v", all
	StringReplace, forstr, forstr, % "``a", % "`a", all
	
	StringReplace, forstr, forstr, % """""", % """", all
	
	return forstr
}
What happens is that the variable Variable that is inside the CriticalObject is not being obfuscated. I need to obfuscate the variables and information that are inside the script:="(")" and I can't. Does anyone know how to make it work?

Here the code ofuscated:

Code: Select all

obf_copyright := " Date: 23:23 quarta-feira, 29 de maio de 2019   "
obf_copyright := "                                                "
obf_copyright := " THE FOLLOWING AUTOHOTKEY SCRIPT WAS OBFUSCATED "
obf_copyright := " BY DYNAMIC OBFUSCATOR L FOR AUTOHOTKEY         "
obf_copyright := " By DigiDon                                     "
obf_copyright := "                                                "
obf_copyright := " Based on DYNAMIC OBFUSCATOR                    "
obf_copyright := " Copyright (C) 2011-2013  David Malia           "
obf_copyright := " DYNAMIC OBFUSCATOR is released under           "
obf_copyright := " the Open Source GPL License                    "


;AUTOEXECUTE ORIGINAL NAME: autoexecute
;autoexecute
;$OBFUSCATOR: $DYNAMIC_MODE:

; --------------------
@kkff%ff@fffff%fkfk@@kkfkf()
kf%k@#k@f%@f#f#k#kfffk#f()
k%kf#f#f%#@f#%k##k@f%k@fk@#f@f()
kkk%kkk#fkkfk#kkkfff%kk#%#ffkfk@f%f#k@%fffk@kk#f#fff##fffkkk@%#fkf()

;$OBFUSCATOR: $DEFGLOBVARS: f%fk@k%ff@%@f#f#f#kk@@k@fk#@f%@#%kk@k#fk@%f@fk@,%#kf#k@f@%%#k@kk##fff#k%%kkfff@@f%

Gui, +AlwaysOnTop
Gui, Add, Edit, r1 ReadOnly w200 vAlert, Stopped!
Gui, Add, Button, vStartScript gf##f#f#k#kfkfff@#kkkk#f#k@, START!
Gui, Show,
return

toggle := 0
;LABEL ORIGINAL NAME: StartG
f##f#f#k#kfkfff@#kkkk#f#k@:
    toggle := !toggle
    if (toggle) {
        GuiControl,,StartScript, STOP!
        GuiControl,,Alert, Running!
        f%kf#f#f%f%fkk##fff@f@ff##ff#%%fkf#%%@k@fkfkfffk#@fk@f@ff%f@#f@fk@ := kfkfk%fffk@kk#f#fff##fffkkk@%k#@k%#kf@kff@%f#f#@f("cbcf6d02024512b612b61255ff")
		CritObj := CriticalObject({Variable: fff%k##kk#@k@fff@ffkf##kf#%f@#f%fff@#kff%@fk@})
		
       script:="
        ("
            Loop {
                CritObj := CriticalObject(A_Args[1])
				variable1 = `% CritObj.Variable
				var1++
				ToolTip, %variable1%%var1%
			}
        )"

		DllOn:=AhkThread(script,&CritObj)
    } else {
        DllOn.ahkTerminate.1
        GuiControl,,Alert, Stopped!
        GuiControl,,StartScript, START!
    }
return


;HOTKEY ORIGINAL NAME: Esc
Esc::ExitApp
GuiClose:
ExitApp

;*******************************************************************************
;                        O B F   D U M P   F U C T I O N S
;*******************************************************************************
;$OBFUSCATOR: $FUNCS_CHANGE_DEFAULTS: ,, -1
;FUNCTION ORIGINAL NAME: obf_dumpcommonobjfrags
@kkfffkfk@@kkfkf() {  
    global
	;SECURITY CLASS FRAG: for class: COMMON for char: f
	fkk#%kfk#fkf#%@%#kfkff%k#f%#k#fff@k%@ffffk#k=%#f@k@f%f%k##k@f%
	;SECURITY CLASS FRAG: for class: COMMON for char: k
	k#f%kfkfk##k%%f#f@@ff#%@#k#%#k#k%k%#f@kkf#k%#f@f@ffkk#k#=%k@k##k%k%fk@k%
	;SECURITY CLASS FRAG: for class: COMMON for char: @
	kfkff%@f@f@f%@f%fkk#kf%@ff%#kffkk%ffkf%#kkfk#%f@#k@kf@kk=%f@ff%@%k@f#kfk#%
	;SECURITY CLASS FRAG: for class: COMMON for char: #
	kkk%#k#fff@k%#k@%fkk@f@%@ff%@fkfk#%k@f@k=%k@#k@f%#%kkf@k@@f%

;TRIPLE MESS FRAGMENTS FOR: f
	#%#kf#f#%k%kkk#k@@ffk@f@k%%fkk#@k#f@ffffk#k%#f@kkff@f@fkf#kkfk:=f%k#f@#k#k#f@f@ffkk#k#%k#%kfkff@f@ffffkff@#k@kf@kk%k#f%k#fff@k@%@f%fkk#@k#f@ffffk#k%ffk#k
	k@%fkk#@k#f@ffffk#k%k%@ff#ffkf%k%k#f@#k#k#f@f@ffkk#k#%f%kkk#k@@ffk@f@k%%kfkfk##k%k@f@@f@kkk:=f%k#f@#k#k#f@f@ffkk#k#%%k#f@#k#k#f@f@ffkk#k#%%kkk#k@@ffk@f@k%@%kkf@k@@f%k#%@f@k#f%f@ffffk#k
	kk#%k#f@#k#k#f@f@ffkk#k#%ff#%f@k#@f%k%kfkff@f@ffffkff@#k@kf@kk%%fkk#@k#f@ffffk#k%k@k@ffk@f#:=fk%k#f@#k#k#f@f@ffkk#k#%%kkk#k@@ffk@f@k%@%k#f@#k#k#f@f@ffkk#k#%#f@%f@kf%ffffk#k
	#kk%kfk#fkf#%%#k#f@f%%kkk#k@@ffk@f@k%kkk%k#f@#k#k#f@f@ffkk#k#%@k%k#f@#k#k#f@f@ffkk#k#%#f@k@@f#f@f#k:=fk%@f@k#f%%k#f@#k#k#f@f@ffkk#k#%%fff#k#ff%#@%k#f@#k#k#f@f@ffkk#k#%#%fkk#@k#f@ffffk#k%@ffffk#k
	@%#k#k%f@k%kfkff@f@ffffkff@#k@kf@kk%k#kf@f%kkk#k@@ffk@f@k%f@f#k#kffk:=fkk%kkk#k@@ffk@f@k%@k%k@#k@f%%kkk#k@@ffk@f@k%%fkk#@k#f@ffffk#k%@ffffk#k
	kkf%@f#k@f%@#f%kkk#k@@ffk@f@k%ff%k#f@#k#k#f@f@ffkk#k#%f%kfkff@f@ffffkff@#k@kf@kk%kfk##f:=fk%k#f@#k#k#f@f@ffkk#k#%%kkk#k@@ffk@f@k%@%f@@fk@%%k#f@#k#k#f@f@ffkk#k#%#f%f@kf%@ffffk#k
	@f#f%k@kffk%#f%kkk#k@@ffk@f@k%kk%kfkff@f@ffffkff@#k@kf@kk%@k@fk#@f:=fkk%kkk#k@@ffk@f@k%@k#%fkff#kfk%f@f%fkk#@k#f@ffffk#k%ffk#k
	#k%#kffkk%@f%fkk#@k#f@ffffk#k%@kf@%#k#f@f%kfk%fkk#@k#f@ffffk#k%@fkk@#k:=fkk%ff#kfk%%kkk#k@@ffk@f@k%@%k#f@#k#k#f@f@ffkk#k#%%kkk#k@@ffk@f@k%f@ffffk#k
	#fffk%@f@k#f%%k#f@#k#k#f@f@ffkk#k#%fff%kfkff@f@ffffkff@#k@kf@kk%f#k#kk@k:=fk%k#f@#k#k#f@f@ffkk#k#%#%kfkff@f@ffffkff@#k@kf@kk%%f@ff%%#fk@%k%kkk#k@@ffk@f@k%f@ffffk#k
	fkk%#fkfff%f#%#kkk%f%fkk#@k#f@ffffk#k%%fkk#@k#f@ffffk#k%ffkffff#k#:=fk%k#f@#k#k#f@f@ffkk#k#%#@%k#f@#k#k#f@f@ffkk#k#%#f%kf#kkk%%fkfkkkk@%@ffffk#k
	ff%@f#k@f%k%kkfff@@f%#%fkk#@k#f@ffffk#k%%fkk#@k#f@ffffk#k%k@f#ff#f#fffff:=fk%k#f@#k#k#f@f@ffkk#k#%%kkk#k@@ffk@f@k%@k#%fkk@f@%f@ffffk#k
	kfk%fkk#@k#f@ffffk#k%ff#%f@ff%kf#k%f@ff%#k%fkk#@k#f@ffffk#k%#kff#fkfkk:=fk%k#kf%k%kkk#k@@ffk@f@k%%kfkff@f@ffffkff@#k@kf@kk%k#%@fk##kkf%f%kfkff@f@ffffkff@#k@kf@kk%ffffk#k
	k#f%fkk#@k#f@ffffk#k%@k%k#f@#k#k#f@f@ffkk#k#%%fkfkkkk@%#k%fkk##f%#k@kkk#@f:=fk%#fk@ffk@%%k#f@#k#k#f@f@ffkk#k#%%kkk#k@@ffk@f@k%@%k#f@#k#k#f@f@ffkk#k#%#f@ffffk#k
	@fk@%k#f@#k#k#f@f@ffkk#k#%f%k#f@#k#k#f@f@ffkk#k#%@%k#kf%%ff#f#fkf%#kfffkkkk@f@k#:=fkk%kkk#k@@ffk@f@k%%fkk#kf%@k%kkk#k@@ffk@f@k%%fkk#@k#f@ffffk#k%@ffffk#k
	k##f%@kfkff%fk@ff%kfkff@f@ffffkff@#k@kf@kk%kfkkk@%k#f@#k#k#f@f@ffkk#k#%##kk#:=fk%k#f@#k#k#f@f@ffkk#k#%#%kfkff@f@ffffkff@#k@kf@kk%k#f%kfkff@f@ffffkff@#k@kf@kk%ff%@fkfk#%ffk#k
	@fk##%k##k@f%kkk#%fkk#@k#f@ffffk#k%#k#kk@#%fkk#@k#f@ffffk#k%f@k#ff:=f%f@fkff%%f##kkf%kk%kkk#k@@ffk@f@k%@k%kkk#k@@ffk@f@k%f@ffffk#k
	fkk#%kkk#k@@ffk@f@k%fff@f%kkffkfkk%@f%fkk#@k#f@ffffk#k%##ff#:=f%k#f@#k#k#f@f@ffkk#k#%k%kkk#k@@ffk@f@k%@k%kkk#k@@ffk@f@k%f@%@kk@kfk@%ffffk#k
	k@k%#k#k%%kfkff@f@ffffkff@#k@kf@kk%k@f%kkk#k@@ffk@f@k%k@fkf%k#f@#k#k#f@f@ffkk#k#%fff@k#kk@f:=fk%fff#@f@f%k#%kfkff@f@ffffkff@#k@kf@kk%%k#f@#k#k#f@f@ffkk#k#%%kkk#k@@ffk@f@k%f@ffffk#k
	k%fff##ffk%k@k@k%fkk#@k#f@ffffk#k%%fkk#@k#f@ffffk#k%f#@%fkk#@k#f@ffffk#k%ffkfkkf@k@#k:=fk%k#f@#k#k#f@f@ffkk#k#%#@k%f@@fk@%#f%kfkff@f@ffffkff@#k@kf@kk%ff%fkk#@k#f@ffffk#k%fk#k
	kkk%#k#k%%kkk#k@@ffk@f@k%fkk%fkk#@k#f@ffffk#k%%k#f@#k#k#f@f@ffkk#k#%#kkkfff:=f%k#f@#k#k#f@f@ffkk#k#%k#%kfkff@f@ffffkff@#k@kf@kk%k#f@%fkf@@fkf%ffffk#k
;TRIPLE MESS FRAGMENTS FOR: k
	kf#%k@#kkff@%%fkk#@k#f@ffffk#k%@fkkf%kkk#k@@ffk@f@k%f#ffkk@ffkff@f:=k%ff@fffff%#f%kfkff@f@ffffkff@#k@kf@kk%#k%kkk#k@@ffk@f@k%k#f@f@ffkk#k#
	fk%#k#k%f#%f@fkff%f%kfkff@f@ffffkff@#k@kf@kk%k@%k#f@#k#k#f@f@ffkk#k#%%fkk#@k#f@ffffk#k%f#f#k@kfk#kf@k:=k#f@#%k#f@#k#k#f@f@ffkk#k#%%kkk#k@@ffk@f@k%k%kfk#fkf#%#f@f@ffkk#k#
	kfk%kkk#k@@ffk@f@k%@f%fkk#@k#f@ffffk#k%%kkk#k@@ffk@f@k%%#ff#%%#kffkk%#ff#f@ffkfkfkf:=k#%ff#f#fkf%f@#%k#f@#k#k#f@f@ffkk#k#%%f##kkf%%kkk#k@@ffk@f@k%k#f@f@ffkk#k#
	@f#%k#f@#k#k#f@f@ffkk#k#%@f#f@k%fk#kfffk%#kff%fkk#@k#f@ffffk#k%ff@fkf#:=k#%@f@k#f%f@%f##kkf%#k#%k#f@#k#k#f@f@ffkk#k#%%kkk#k@@ffk@f@k%f@f@ffkk#k#
	f%fkk#@k#f@ffffk#k%%#kkfk#%#kkkk##%fkk#@k#f@ffffk#k%k@k#fkk@ffkf@f:=k%k@#f@k%%kkk#k@@ffk@f@k%%kf@ffff#%%fkk#@k#f@ffffk#k%@#k%kkk#k@@ffk@f@k%k#f@f@ffkk#k#
	f%fkk#@k#f@ffffk#k%f#@f%kkk#k@@ffk@f@k%f@f#%@kfkff%k#f%#f@k@f%@fk@f@#f:=k#f%kfkff@f@ffffkff@#k@kf@kk%%k@@fk#ff%#%k#f@#k#k#f@f@ffkk#k#%#k%kkk#k@@ffk@f@k%f@f@ffkk#k#
	f@%f#f#kkfk%@ff@%k#f@#k#k#f@f@ffkk#k#%k#%fkk#@k#f@ffffk#k%kk@%f#kkk#@k%f@k@f@ff@ff:=k%kkk#k@@ffk@f@k%f%k@kffk%@%kkk#k@@ffk@f@k%k%fkff#kfk%#k#f@f@ffkk#k#
	k@%fk#kfffk%%kkf@k@@f%@k%fkk#@k#f@ffffk#k%%kkk#k@@ffk@f@k%k%kkk#k@@ffk@f@k%k@@kk@ffk#f@:=k%kkk#k@@ffk@f@k%%fkk#@k#f@ffffk#k%@#k#%k@#kkff@%k#%fkk#@k#f@ffffk#k%@f@ffkk#k#
	@%f@k#@f%ff%k@#kk#f#%k%kkk#k@@ffk@f@k%k%kfkff@f@ffffkff@#k@kf@kk%kk#@fkf#kf@f#:=k#f@%#k#k%%kkk#k@@ffk@f@k%%k#f@#k#k#f@f@ffkk#k#%#%k#f@#k#k#f@f@ffkk#k#%#f@f@ffkk#k#
	f@kkf%k#f@#k#k#f@f@ffkk#k#%k%ff#kfk%f#kkk%kfkff@f@ffffkff@#k@kf@kk%fkfk@kk:=k#%#k@f%%fkk#@k#f@ffffk#k%@#k%kkf@k@@f%#%k#f@#k#k#f@f@ffkk#k#%%kkk#k@@ffk@f@k%f@f@ffkk#k#
	k%k#f@#k#k#f@f@ffkk#k#%#%kkk##f%fk%kfkff@f@ffffkff@#k@kf@kk%k%fkk#@k#f@ffffk#k%%fk@k%#k#kffk@:=k%#fff%#f@%kffffk@f%%kkk#k@@ffk@f@k%%k#f@#k#k#f@f@ffkk#k#%%kkk#k@@ffk@f@k%k#f@f@ffkk#k#
	@kf%fkk#@k#f@ffffk#k%ff#%#ffkfk@f%%k#f@#k#k#f@f@ffkk#k#%f@#ffkkk@kkk:=k%kkk#k@@ffk@f@k%f@%f#k@@kkf%#k%kkk#k@@ffk@f@k%k#%fkk#@k#f@ffffk#k%@f@%#fkfff%ffkk#k#
	k#%f#k@@kkf%%fff#@f@f%%kfkff@f@ffffkff@#k@kf@kk%fkk%kfkff@f@ffffkff@#k@kf@kk%k#ffff@ffk#:=k#%k@#kkff@%f@%kkk#k@@ffk@f@k%%k#f@#k#k#f@f@ffkk#k#%#k#f@f@ffkk#k#
	f%f@@fk@%%k#f@#k#k#f@f@ffkk#k#%@k#k%kfkff@f@ffffkff@#k@kf@kk%f@fkk#f@kk@:=k#%fkk#@k#f@ffffk#k%@#k#k%kkk#k@@ffk@f@k%f%#fk@ffk@%@f@ffkk#k#
	kkf@%fkk#@k#f@ffffk#k%fk#@fk%f@kffk%ff##k%k#f@#k#k#f@f@ffkk#k#%ff@@k:=k#f@%kkk#k@@ffk@f@k%k#k%kkk#k@@ffk@f@k%f@f@%kkfff@@f%%f@kffk%ffkk#k#
	k#%kkk#k@@ffk@f@k%fk#%kkk#k@@ffk@f@k%kf#ffk%#kf@kff@%#f@f#@kkf:=k%kkk#k@@ffk@f@k%f%kfkff@f@ffffkff@#k@kf@kk%#k#%#fkfff%k#%@fk@kf%f@f@ffkk#k#
	k#%fkk#@k#f@ffffk#k%#@%fkff#kfk%k@kk%kkk#k@@ffk@f@k%f%kfkff@f@ffffkff@#k@kf@kk%@f@kkf#kk#k@:=k%kkk#k@@ffk@f@k%%fkk#@k#f@ffffk#k%@#k%kkk#k@@ffk@f@k%k%f##kkf%#f%kfk#fkf#%@f@ffkk#k#
	@%fkk#@k#f@ffffk#k%kf%#k#k%kk@%k#f@#k#k#f@f@ffkk#k#%k#k@fkkkkf#f#kf#:=k#f@%kf#f#f%#k#%@kfkkf%k#f@%fkk#@k#f@ffffk#k%@ff%k#f@#k#k#f@f@ffkk#k#%k#k#
	fk%#fkfff%f%fkk#@k#f@ffffk#k%@%f#kfkk%k%k#f@#k#k#f@f@ffkk#k#%@kk@k#k:=k#f@%#kkfk#%#k%kkk#k@@ffk@f@k%k#f@%ff#f#fkf%f@ff%k#f@#k#k#f@f@ffkk#k#%k#k#
	fffk@%k#f@#k#k#f@f@ffkk#k#%%kf@ffff#%k%kkk#k@@ffk@f@k%f#fff##fffkkk@:=k#f@%kkk#k@@ffk@f@k%k%kf@ffff#%#k#%fkk#@k#f@ffffk#k%@f@%#fkfff%ffkk#k#
;TRIPLE MESS FRAGMENTS FOR: @
	fk#%f#kkk#@k%%fkk#@k#f@ffffk#k%%kkk#k@@ffk@f@k%k#fkf%kfkff@f@ffffkff@#k@kf@kk%fff@kk@f@kkf@:=kf%k#f@#k#k#f@f@ffkk#k#%%f#kfkk%ff%@f@k#f%%kfkff@f@ffffkff@#k@kf@kk%%fkk#@k#f@ffffk#k%@ffffkff@#k@kf@kk
	@kf@#%kkk##f%fkk@k%kkk#k@@ffk@f@k%k#f#%fkk#@k#f@ffffk#k%fk:=k%fkk#@k#f@ffffk#k%kff@%#fkfff%f%kfkff@f@ffffkff@#k@kf@kk%%fkk#@k#f@ffffk#k%fffkff@#k@kf@kk
	@kk@%fkk#@k#f@ffffk#k%k#k%kkk#k@@ffk@f@k%k#kf%kkk##f%f@f%fff@#kff%kfkk:=kf%k@k##k%kff%kffffk@f%@f%kfkff@f@ffffkff@#k@kf@kk%f%fkk#@k#f@ffffk#k%ff%k#f@#k#k#f@f@ffkk#k#%ff@#k@kf@kk
	#%k#f@#k#k#f@f@ffkk#k#%%k#f@#k#k#f@f@ffkk#k#%kkkf%kf#kkk%kkf@kkfkf:=kfk%fkk#@k#f@ffffk#k%f@f@fff%@fff%fkff@%kkk#k@@ffk@f@k%k@kf@kk
	@%k#f@#k#k#f@f@ffkk#k#%kf#f%kkk#k@@ffk@f@k%fk%#k@f%f#%kkf@k@@f%ffk@kf@#k:=kfk%fkk#@k#f@ffffk#k%%fkk#@k#f@ffffk#k%@f%#fff%@f%@kfkkf%fffkff@#k@kf@kk
	fk%f#kkk#@k%#kkk%fkk#@k#f@ffffk#k%%fkk#@k#f@ffffk#k%k%f@k#@f%kkkff#k#f#f:=kfk%fkk#@k#f@ffffk#k%f@%f#f@@ff#%f@fff%fkk#@k#f@ffffk#k%kf%k@#kk#f#%f@#k@kf@kk
	f%kkk#k@@ffk@f@k%f%fff@f#%#%fff##ffk%#k%fkk#@k#f@ffffk#k%f%k#f@#k#k#f@f@ffkk#k#%kf@#kf#@f@f@k:=kfk%k@k##k%%#ff#%ff%kfkff@f@ffffkff@#k@kf@kk%f@%fkk#@k#f@ffffk#k%ff%fkk#@k#f@ffffk#k%kff@#k@kf@kk
	#kf%@f#k@f%%@f@k#f%%k#f@#k#k#f@f@ffkk#k#%f@%fkk#@k#f@ffffk#k%%kfkff@f@ffffkff@#k@kf@kk%f#kk@kkfk#kfffff:=kfkf%fkk#@k#f@ffffk#k%@f%#kkfk#%@f%fkk#@k#f@ffffk#k%ffk%fkk#@k#f@ffffk#k%f@#k@kf@kk
	f#k#%fk#kfffk%k@@fk%k#f@#k#k#f@f@ffkk#k#%%fk@k%k%fkk#@k#f@ffffk#k%@k#fk@@fffff:=k%f#kfkk%f%@kf@@k%%k#f@#k#k#f@f@ffkk#k#%ff@%fkk#@k#f@ffffk#k%@ff%fkk#@k#f@ffffk#k%fkff@#k@kf@kk
	k##kk%fkk##f%#%kfkff@f@ffffkff@#k@kf@kk%k@ff%fkk#@k#f@ffffk#k%@ffkf##kf#:=k%f#kkk#@k%fk%fkk#@k#f@ffffk#k%%fkk#@k#f@ffffk#k%@f@ff%fkk#@k#f@ffffk#k%fkff@#k@kf@kk
	#kff#%k#f@#k#k#f@f@ffkk#k#%@k@f%k#f@#k#k#f@f@ffkk#k#%f@k#%fkk#kf%kkfk%#fk@ffk@%fffkk:=k%k#kf%f%f#f#kkfk%kff@f%kfkff@f@ffffkff@#k@kf@kk%%fkk#@k#f@ffffk#k%fffkff@#k@kf@kk
	ff%k#f@#k#k#f@f@ffkk#k#%kf%f@kffk%#k%fkk#@k#f@ffffk#k%kf%k@fkkfkk%#kf#k##k:=kfk%@kf@@k%ff@%f#k@@kkf%f@f%fkk#@k#f@ffffk#k%f%fkk#@k#f@ffffk#k%%k#f@#k#k#f@f@ffkk#k#%ff@#k@kf@kk
	#k#%k#f@#k#k#f@f@ffkk#k#%k@k%ff@fffff%#f@f@f%fkk#@k#f@ffffk#k%kfff#ff#k@:=kfkf%kkk#f#ff%f@f@%fkk#@k#f@ffffk#k%f%f@fkff%f%fkk#@k#f@ffffk#k%kff@#k@kf@kk
	@f%k#f@#k#k#f@f@ffkk#k#%#k%k#f@#k#k#f@f@ffkk#k#%@%f#kk%f#k@f#kff:=kfkf%fkk#@k#f@ffffk#k%@f@f%@k#k#k%f%fkk#@k#f@ffffk#k%fkf%fkk#@k#f@ffffk#k%@#k@kf@kk
	fk#f%fkk#@k#f@ffffk#k%f@%kkk##f%k%k#f@#k#k#f@f@ffkk#k#%kk%kfkff@f@ffffkff@#k@kf@kk%@kfkf##k:=kfkf%kffk@ffk%f@f@%fkk#@k#f@ffffk#k%fffk%fkk#@k#f@ffffk#k%f@#k@kf@kk
	#fk#f%k#f@#k#k#f@f@ffkk#k#%kff%#ffkfk@f%k#ff%kfkff@f@ffffkff@#k@kf@kk%k@#k@k:=kfk%kk@f@f%ff@%fkk#@k#f@ffffk#k%@ff%fkk#@k#f@ffffk#k%fk%k@f#kfk#%ff%kfkff@f@ffffkff@#k@kf@kk%#k@kf@kk
	@k@f%f#k@k#%%k#kf%k%fkk#@k#f@ffffk#k%k%fkk#@k#f@ffffk#k%ffk#@fk@f@ff:=kfk%@fkfk#%%ff#f#fkf%ff@%fkk#@k#f@ffffk#k%@f%fkk#@k#f@ffffk#k%ffkff@#k@kf@kk
	f%kk@k#fk@%%k#f@#k#k#f@f@ffkk#k#%fk%@ff#ffkf%kff%kfkff@f@ffffkff@#k@kf@kk%k%k#f@#k#k#f@f@ffkk#k#%f@f#ffk#f#:=k%fkk#@k#f@ffffk#k%kf%k@kffk%%fkk#@k#f@ffffk#k%@%fkk#@k#f@ffffk#k%@f%#ffkfk@f%fffkff@#k@kf@kk
	#f%k@f#kfk#%kk%fkk#@k#f@ffffk#k%ff%k#f@#k#k#f@f@ffkk#k#%kfk%f@kkkf#f%@#ffkk#:=kfkf%fkk#@k#f@ffffk#k%@f@%fkk#@k#f@ffffk#k%f%#kkkf#ff%%fkk#@k#f@ffffk#k%fkff@#k@kf@kk
	fff%kkk#k@@ffk@f@k%f#@%f@kf%ff%k@kffk%%fkk#@k#f@ffffk#k%f#%kfkff@f@ffffkff@#k@kf@kk%ffffkfff@kf:=kfkff%#kfkff%%kfkff@f@ffffkff@#k@kf@kk%f%k@@k@k%%kfkff@f@ffffkff@#k@kf@kk%ffffkff@#k@kf@kk
;TRIPLE MESS FRAGMENTS FOR: #
	f%#fk@ffk@%#%k#f@#k#k#f@f@ffkk#k#%%k#f@#k#k#f@f@ffkk#k#%kf#%k#f@#k#k#f@f@ffkk#k#%f#kfffkkf#:=k%f@fkff%kk%kkk#k@@ffk@f@k%k%f@fkff%@%kfkff@f@ffffkff@#k@kf@kk%ffk@f@k
	k%k#f@#k#k#f@f@ffkk#k#%%fkk#@k#f@ffffk#k%#%k#f@#k#k#f@f@ffkk#k#%f%@kf@@k%kkf@fkkk:=kk%k#f@#k#k#f@f@ffkk#k#%#%@f@k#f%%k#f@#k#k#f@f@ffkk#k#%%kkk##f%@@ffk@f@k
	fk#f%k#f@#k#k#f@f@ffkk#k#%k#ff#%fkk##f%f@#%fkk#@k#f@ffffk#k%k%kffffk@f%@kk#kkk#f:=k%f@ff%k%k#f@#k#k#f@f@ffkk#k#%#%k#f@#k#k#f@f@ffkk#k#%%kfkff@f@ffffkff@#k@kf@kk%@ffk@f@k
	#k%#k@f%%@fff%f%kkk#k@@ffk@f@k%k@#%k#f@#k#k#f@f@ffkk#k#%#ff##kfk:=kkk%ff#f#fkf%%kkk#k@@ffk@f@k%%k#f@#k#k#f@f@ffkk#k#%@@ffk@f@k
	f%fkk#@k#f@ffffk#k%#fk%k@#kk#f#%fk%kkk#k@@ffk@f@k%@%kk@f@f%ffkk@#kff:=kk%@kfkkf%%k#f@#k#k#f@f@ffkk#k#%#k%kfkff@f@ffffkff@#k@kf@kk%@ffk@f@k
	k%kf#f#f%%kfkff@f@ffffkff@#k@kf@kk%%fkk#@k#f@ffffk#k%%k#kf%fkkf#@fk#fk:=k%k#f@#k#k#f@f@ffkk#k#%%k#f@#k#k#f@f@ffkk#k#%#k%f#k@k#%@@%fkk#@k#f@ffffk#k%fk@f@k
	#f%k@@fk#ff%k%f#k@@kkf%%kkk#k@@ffk@f@k%f%kfkff@f@ffffkff@#k@kf@kk%%kkk#k@@ffk@f@k%ff##f@fkfkf:=kk%#ff#%%k#f@#k#k#f@f@ffkk#k#%%kkk#k@@ffk@f@k%%k#f@#k#k#f@f@ffkk#k#%@@ffk@f@k
	#%@fk##kkf%k%k#f@#k#k#f@f@ffkk#k#%k%k#f@#k#k#f@f@ffkk#k#%%kkk#k@@ffk@f@k%%f@kkkf#f%@kf#fff@:=k%fkf#%%k#f@#k#k#f@f@ffkk#k#%%k#f@#k#k#f@f@ffkk#k#%%kkk#k@@ffk@f@k%k@@ffk@f@k
	@fk%k@#kk#f#%fkk%k@k##k%%kkk#k@@ffk@f@k%fkf%k#f@#k#k#f@f@ffkk#k#%##fk#:=k%k#f@#k#k#f@f@ffkk#k#%%#kkk%k#%k#f@#k#k#f@f@ffkk#k#%@%fkk@%@ffk@f@k
	k#%#k#fff@k%k#%fkk#@k#f@ffffk#k%@ff%k#f@#k#k#f@f@ffkk#k#%k%k#f@#k#k#f@f@ffkk#k#%ff@kk:=k%f#kk%k%k#f@#k#k#f@f@ffkk#k#%%fk@k%%kkk#k@@ffk@f@k%%k#f@#k#k#f@f@ffkk#k#%@@ffk@f@k
	@kk%kkk#k@@ffk@f@k%%#kffkk%f@%k#f@#k#k#f@f@ffkk#k#%#%fkk#@k#f@ffffk#k%@k@kff@k##kfk@f:=k%f@kkkf#f%%k#f@#k#k#f@f@ffkk#k#%%k#f@#k#k#f@f@ffkk#k#%%kkk#k@@ffk@f@k%k@@ffk@f@k
	#kf%kkk#k@@ffk@f@k%@f%kfkff@f@ffffkff@#k@kf@kk%k%fkk#@k#f@ffffk#k%%@fk##kkf%#@fkkkk:=k%k#f@#k#k#f@f@ffkk#k#%k#%#kkkf#ff%%k#f@#k#k#f@f@ffkk#k#%@@ffk@f@k
	@%fff@#kff%k%fff##ffk%ffk%kfkff@f@ffffkff@#k@kf@kk%ffk@%kfkff@f@ffffkff@#k@kf@kk%k@fk@@kk#kkf@:=kk%@ff#%k%kkk#k@@ffk@f@k%k%kfkff@f@ffffkff@#k@kf@kk%@f%fkk#@k#f@ffffk#k%k@f@k
	k@%fkk#@k#f@ffffk#k%ff%kkk#k@@ffk@f@k%@%#ffkfk@f%f%kfkff@f@ffffkff@#k@kf@kk%ffff@#k@k@f:=k%fff##ffk%%k#f@#k#k#f@f@ffkk#k#%k#%k#f@#k#k#f@f@ffkk#k#%@%kfkff@f@ffffkff@#k@kf@kk%ffk@f@k
	k%f#f#kkfk%k%#k#fff@k%f%kfkff@f@ffffkff@#k@kf@kk%%k#f@#k#k#f@f@ffkk#k#%k%fkk#@k#f@ffffk#k%k#k#f#k:=kkk%kkk#k@@ffk@f@k%k@@%fkff#kfk%ffk%kfkff@f@ffffkff@#k@kf@kk%f@k
	k#%ff@fffff%k%kkk#k@@ffk@f@k%kf%kf@ffff#%#%k#f@#k#k#f@f@ffkk#k#%k%kfkff@f@ffffkff@#k@kf@kk%ffkfff:=k%#k@f%k%k#f@#k#k#f@f@ffkk#k#%#k%kfkff@f@ffffkff@#k@kf@kk%@%fkk#@k#f@ffffk#k%fk@f@k
	f%k#f@#k#k#f@f@ffkk#k#%%kf#f#f%#k#%fkk#@k#f@ffffk#k%%kkk#k@@ffk@f@k%ff#@f@ffff#f#:=k%k#k@#kfk%%k#f@#k#k#f@f@ffkk#k#%k#%k#f@#k#k#f@f@ffkk#k#%@@ffk@f@k
	kk%kkk#k@@ffk@f@k%ff%kkk#k@@ffk@f@k%f%k@#k@f%f%fkk@%k#f#k#:=k%k#f@#k#k#f@f@ffkk#k#%k%@ff#%%fff@f#%%kkk#k@@ffk@f@k%%k#f@#k#k#f@f@ffkk#k#%@@ffk@f@k
	fkk%kkk#k@@ffk@f@k%kk#kf%kf#f#f%##%k#f@#k#k#f@f@ffkk#k#%fk#f@%k#f@#k#k#f@f@ffkk#k#%@f#fk@:=kk%#k#k%k%kkk#k@@ffk@f@k%k@%k@fkkfkk%%kfkff@f@ffffkff@#k@kf@kk%ffk@f@k
	f%fkk#@k#f@ffffk#k%%kfkff@f@ffffkff@#k@kf@kk%%#fk@%kkkk#f#kf#fk#:=k%k#f@#k#k#f@f@ffkk#k#%%k#fff@k@%k#%k#f@#k#k#f@f@ffkk#k#%@@ffk@f@k

} 

;$OBFUSCATOR: $FUNCS_RESTORE_DEFAULTS:

;$OBFUSCATOR: $FUNCS_CHANGE_DEFAULTS: ,, -1

;FUNCTION ORIGINAL NAME: obf_dumpunclassed
kf@f#f#k#kfffk#f() { 
    global
;OBF_FUNC name: obf_dumpcommonobjfrags
;OBF_FUNC name: obf_dumpunclassed
;OBF_FUNC name: obf_dumpunsecclasses
;OBF_FUNC name: obf_dumpall
	k%f#kkk#@k%%#fk@%k%k#ff@kk#k#k@kkk#@f%#%ff#kkkk##fk@k#fkk@ffkf@f%@%fkf#f@k@kff#f#k@kfk#kf@k%@fk@fk@=k%f@kkfkkf#kkk@fkfk@kk%kfk%fkf#f@k@kff#f#k@kfk#kf@k%#f%@kk@kfk@%#%f##kkf%k@k#fkf
	#k%#fkfff%@f%k##fk##kf#ffk#f@f#@kkf%k%kfk#@ff##ff#f@ffkfkfkf%k#%#k@ff@kf@kfkf@fkk@#k%ffk##k=kk%@ffk#k@kk#@fkf#kf@f#%fk%ff#kkkk##fk@k#fkk@ffkf@f%#f#%k@@kf#k#k@@kk@ffk#f@%@%#ffkfk@f%k#fkf
;OBF_FUNC name: encode_hidestr
	#f%ff@kkkk#f#kf#fk#%%kk@k@kfff#@fffkfkkf@k@#k%f%#fffkkfff@f#k#kk@k%%fkk##f%k@@fkk=f%#fk@ffk@%f%k#f#@k@kk#f@@f@kkf#kk#k@%#%f@kkkf#f%f%k@@kf#k#k@@kk@ffk#f@%f%fk@k#k@f@fkk#f@kk@%k@kk
	@%@kfkkf%fk%k@ffkkf#@fk#fk%%@kffk@ffk@@k@fk@@kk#kkf@%%kf@ffff#%f#ff#k#=ff%k#@fkk@k#ffff@ffk#%#fk%#f@kkf#k%fkk%#k#kk@k#f@f@ffkfff#ff#k@%kk
;OBF_FUNC name: encode_shifthexdigit
	k%@f#k@f#f@k#kfffff@fkf#%%@k@fkfkfffk#@fk@f@ff%f%@f#f#f#kk@@k@fk#@f%f%k@#k@f%%#fk@%k@fk@f@k=f%k@fff#@f@ffff@#k@k@f%%#kk#kkkk@kk#f@k@@f#f@f#k%%#k#f#f@kkff@f@fkf#kkfk%f%fkfkkkk@%ffkf#kff#
	@k%kf#kkk%f%#k#f#f@kkff@f@fkf#kkfk%k@%#k@ff@kf@kfkf@fkk@#k%f%k@@fk#ff%fk#ffk=f%kk@f@f%#%k@fkkkf#k@f@@f@kkk%%#k@ff@kf@kfkf@fkk@#k%ff%ffk#ffk@f#ff#f#fffff%kf#kff#
;OBF_FUNC name: createhexshiftkeys
	kk%k@kffk%%fk#f#k#fkf@fff@kk@f@kkf@%%#fffkkfff@f#k#kk@k%k@fffk@k=kk%@kk@fk#k#k#kff@fkfkk%%ff@fffff%%@fkfkk@kk#k@fkkkkf#f#kf#%@%k@k@k@f#k@fkfkfff@k#kk@f%f#kk#k@k
	k%fkff@kk@kk@k#k%k@%kkk##f%#%k@kffk%k@%fkk##fff@f@ff##ff#%k%kkf#kfkkf@fkkk%fff#kf=kk%#fk#fkkffk#ff@k@#k@k%k%@fk#kk@f#k@f#kff%ff%#kkkf#ff%%@f@k#f%#kk#k@k
;OBF_FUNC name: hidestr
	k%@kk#f@k#f@k@kff@k##kfk@f%%f#f@@ff#%k#%fkff@kk@kk@k#k%%fkkf#fffffkffff#k#%%#k#f@f%k@kkk@@k#f=@k%@f#k@f#f@k#kfffff@fkf#%#%@fk##kkk#f#k#kk@#ff@k#ff%f@%#ffkfk@f%fk@f@f@
	#f%fff#@f@f%%fk#fkk#ff#f@#fk@kk#kkk#f%fk%fff#f#@ffff#@ffffkfff@kf%f%f#kkkf#kf#kfffkkf#%f@fk#ff@=@k%#k#fff@k%k%#f@kkf#k%%f#kkkf#kf#kfffkkf#%%ffk#ffk@f#ff#f#fffff%f@fk@f@f@
;OBF_FUNC name: decode_hidestr
	f#@%k#@fkk@k#ffff@ffk#%#f%f##kkf%k@%#kf#@f@kf#@fkkkk%f@%fkf#f@k@kff#f#k@kfk#kf@k%k@k@=kfk%fkk##fff@f@ff##ff#%%k##fk##kf#ffk#f@f#@kkf%%@fk##kkf%kk#%fk@k%@kf#f#@f
	f#%kkk#f#ff%#%@fk##kkk#f#k#kk@#ff@k#ff%@%fkff@kk@kk@k#k%#f%k##fk##kf#ffk#f@f#@kkf%@fk=kfkf%f#kk%%k#f#@k@kk#f@@f@kkf#kk#k@%kk#@%@ffk#k@kk#@fkf#kf@f#%f#f#@f
;OBF_FUNC name: decode_hexshiftkeys
	f%f@fkff%#f%fkk#kk#kf##kfk#f@k@f#fk@%k#%k@k##k%@k%@ffk#k@kk#@fkf#kf@f#%%#k@ff@kf@kfkf@fkk@#k%kk#f@f=f%@kk#f@k#f@k@kff@k##kfk@f%k#%k@f#kfk#%%k@k##k%%k#k#f@ffkkkff@kk%kk#f#f#
	f@#%#f@kkf#k%ff%k#ff@kk#k#k@kkk#@f%fk%#kk#kkkk@kk#f@k@@f#f@f#k%ff#kf#k=f%#kf@%#k#%ff#fkfk#@ffkk@#kff%kk%#fk#f@#ff##f@fkfkf%f#f#
;OBF_FUNC name: decode_shifthexdigit
	#%kfk#@ff##ff#f@ffkfkfkf%%#f@k@f%#f%k@fkkkf#k@f@@f@kkk%@%#fk@ffk@%#f#kf@k#=@%f@kkfkkf#kkk@fkfk@kk%%#kfk#f@f%%ff#kkkk##fk@k#fkk@ffkf@f%%#fk#fkkffk#ff@k@#k@k%fkkf@k@kff
	k#%k@k@k@f#k@fkfkfff@k#kk@f%%fff#@f#f@f#k#f@fk@f@#f%k#%kkfff@@f%#f#%kkk##f%ff#f#k@=@%kk@k#fk@%%fff#k#ff%k%@kffff#kf@#ffkkk@kkk%%#kff#k@k@fkf@k#kkfkfffkk%%k#ff@kk#k#k@kkk#@f%kkf@k@kff
;OBF_FUNC name: fixescapes
	k%f@ff%fkf%@f@k#f%k%#kfkf@f@f#kk@kkfk#kfffff%f#%ffk#ffk@f#ff#f#fffff%#ffk@k@=k#k#%k#ff@kk#k#k@kkk#@f%k%kk@f@f%@kf%@f@k@k#kf@f#f@f#k#kffk%@kkkkf
	k%k#ff@kk#k#k@kkk#@f%f%#fk#fkkffk#ff@k@#k@k%k%f@kf%kff%k@k##k%@fk#@kkk=k#%k#@fkk@k#ffff@ffk#%#%#ffkfk@f%f%fkf#f@k@kff#f#k@kfk#kf@k%@%fk@k#k@f@fkk#f@kk@%ff@kkkkf

;OBF_LABEL name: StartG
	ffkf#%f#kkk#@k%k@fk%@kf@#fkk@k#k#f#ffk%k@f#ffk%#ff#%%@f@k@k#kf@f#f@f#k#kffk%kfk##kkk#ff#fk#f=f##f%k#k#kf#kk@ffkfff%%#fffkkfff@f#k#kk@k%#k%@kk@kfk@%#kf%k@@kf#k#k@@kk@ffk#f@%fff@#kkkk#f#k@
	kk%fkk##f%ffk%#kk#kkkk@kk#f@k@@f#f@f#k%%#kf#@f@kf#@fkkkk%%f@k#@f%fk%k@ffkkf#@fk#fk%@k#k@ff@#ffkfk#f=f##%fff##ffk%f#f#%ff#kkkk##fk@k#fkk@ffkf@f%#%#kfkff%kf%@f#k@f#f@k#kfffff@fkf#%fff@%#kf#k@#k#ff##kfk%kkkk#f#k@
;OBF_LABEL name: Esc

}


;FUNCTION ORIGINAL NAME: obf_dumpunsecclasses
k#@f#k@fk@#f@f() { 
    global


}

;$OBFUSCATOR: $FUNCS_RESTORE_DEFAULTS:

;FUNCTION ORIGINAL NAME: obf_dumpall
kkkfkk#f#k@k#fkf() {  
    global
;OBF_GLOBVAR name: COUNT
	%fkfk%%@ff#%%kkf@ffk#@fkff##kkff@@k%%fk@k#k@f@fkk#f@kk@%%fkk##fff@f@ff##ff#%k@k@k=fff%@kf@#fkk@k#k#f#ffk%f%#kffkk%@#%k##ffk@ff@kfkkk@k##kk#%@fk@
	k%@f@k@k#kf@f#f@f#k#kffk%k%#kf@%f%#f@k@f%%kkf@ffk#@fkff##kkff@@k%%k@fkkkf#k@f@@f@kkk%@ff@f#=f%#f@kkf#k%f%kkk#fkkfk#kkkfff%@%@f#f#f#kk@@k@fk#@f%%#kff#k@k@fkf@k#kkfkfffkk%#f@fk@
;OBF_GLOBVAR name: Variable
	#%fkk##f%k%#ffkfk@f%@%f@kkfkkf#kkk@fkfk@kk%k%k@fff#@f@ffff@#k@k@f%#%k##ffk@ff@kfkkk@k##kk#%ff#k=@%kkf@ffk#@fkff##kkff@@k%#%kf@ffff#%%k@fkkkf#k@f@@f@kkk%%@kfkkf%kkf#
	%fkk@%%#kf#k@#k#ff##kfk%%k##fk##kf#ffk#f@f#@kkf%%kfk#@ff##ff#f@ffkfkfkf%fk@=%kk@k#fk@%%fkfkkff@kkf@f#ffk#f#%%k@@kf#k#k@@kk@ffk#f@%%fkk#kk#kf##kfk#f@k@f#fk@%%#f@kkf#k%fkkf#
;OBF_GLOBVAR name: hexdigits
	%@f#k@f#f@k#kfffff@fkf#%%#fk#fkkffk#ff@k@#k@k%%@fkfk#%%f@@ff@kk#fkk@f@k@f@ff@ff%%k#fff@k@%@kk@f=k%#kf#k@#k#ff##kfk%%ffk#ffk@f#ff#f#fffff%%kffffk@f%%f@@ff@kk#fkk@f@k@f@ff@ff%f@kf
	ff%f@@ff@kk#fkk@f@k@f@ff@ff%%#k@ff@kf@kfkf@fkk@#k%f%fff@f#%##fkf=k%@kk#f@k#f@k@kff@k##kfk@f%%@f#k@f%f%k@@kf#k#k@@kk@ffk#f@%%@fk##kkk#f#k#kk@#ff@k#ff%@kf
;OBF_GLOBVAR name: decodekey
	@%f@@ff@kk#fkk@f@k@f@ff@ff%k%#kkk%k%#k#kk@k#f@f@ffkfff#ff#k@%f%@fk@kfk@#kfffkkkk@f@k#%@=#%#kffkk%%kk#fk@kf#k#kffk@%#%k@k##k%%kkf@ffk#@fkff##kkff@@k%kkk@
	%@fk##kkk#f#k#kk@#ff@k#ff%%@fkfkk#fkfk##fk#%%#kfkff%%kfkfff#kf#k#kf#kff#fkfkk%f#f=#%#f#k#f%k%#kkkk#@kf#fff@%k%fk@k#k@f@fkk#f@kk@%k%k#f#@k@kk#f@@f@kkf#kk#k@%@
;OBF_GLOBVAR name: ishexchar
	@%kkk#fkkfk#kkkfff%k%@fk##kkk#f#k#kk@#ff@k#ff%#f%fkk##f%k%fkf#%##k#f=@%fkfk%%fkk#kf%%fk@k#k@f@fkk#f@kk@%%f#kkkf#kf#kfffkkf#%%kkk#fkkfk#kkkfff%fff@
	f%@kf@#fkk@k#k#f#ffk%%@fk##kkk#f#k#kk@#ff@k#ff%%kkfff@@f%%@kk@fk#k#k#kff@fkfkk%%k@f#kfk#%k@ff=@%fff#@f@f%%f@@ff@kk#fkk@f@k@f@ff@ff%#%k@fkkkf#k@f@@f@kkk%fff@
;OBF_GLOBVAR name: useshiftkey
	@%fff#k#ff%%kkf@ffk#@fkff##kkff@@k%%#k#f#f@kkff@f@fkf#kkfk%%#fk@ffk@%k@kkk#k=k%fff#@f@f%k%#f@k@f%%fk#f#k#fkf@fff@kk@f@kkf@%f%k@fkkkf#k@f@@f@kkk%f%k#@fkk@k#ffff@ffk#%kf##k
	f%#k#f#f@kkff@f@fkf#kkfk%#%k@#kk#f#%%ff#kfk%k%fff#f#@ffff#@ffffkfff@kf%%kk@k@kfff#@fffkfkkf@k@#k%k@#f=k%#kffkk%k%@kf@#fkk@k#k#f#ffk%ff%kkk#fkkfk#kkkfff%kkf##k



;LOS vars for function  named: decode_hidestr
;OBF_FUNC_9_LOSVAR name: newstr
	k@kk%kkk##f%%fkf@@fkf%#%@fkfkk@kk#k@fkkkkf#f#kf#%@ff@%#k@ff@kf@kfkf@fkk@#k%kkfkkkffkk@kk=@fk%@k@fkfkfffk#@fk@f@ff%%kkf@ffk#@fkff##kkff@@k%%@fk##kkk#f#k#kk@#ff@k#ff%fk%@kf@@k%fk#kk@@k
	k%kk@k@kfff#@fffkfkkf@k@#k%fk%ff@fffff%k#%#kff#k@k@fkf@k#kkfkfffkk%kk%@f@k@k#kf@f#f@f#k#kffk%%@f@f@f%f@ff@f=@fk%kk#kfkk@%@kf%k@fkkkf#k@f@@f@kkk%kfk%k#k#kf#kk@ffkfff%k%kf#f@fkkf#f#ffkk@ffkff@f%@@k
;OBF_FUNC_9_LOSVAR name: startstrlen
	@fkkk#k%fff##ffk%f%fk#fkk#ff#f@#fk@kk#kkk#f%f#ff@@%kfk#@ff##ff#f@ffkfkfkf%fffkkfkf#f=fk%#k#f@f%%fk#fff@kkkk@@kfkf##k%%fkff@kk@kk@k#k%f@%fff##ffk%#%k##ffk@ff@kfkkk@k##kk#%f#fffkf##f
	k%#kkkkkfkkf@kkfkf%k@@f%@fkfkk@kk#k@fkkkkf#f#kf#%@%ff@fffff%kff@%#kfk#f@f%k#k#fkfkff=fk%#fkkfffkkfk@#ffkk#%%fff#@f@f%k%k#ff@kk#k#k@kkk#@f%%kkk#f#ff%@#%#k@ff@kf@kfkf@fkk@#k%f#fffkf##f
;OBF_FUNC_9_LOSVAR name: charnum
	@f@f%ff#kfk%#%kkk#f#ff%k#kf%k##ffk@ff@kfkkk@k##kk#%#%k##fk##kf#ffk#f@f#@kkf%k%kk#ff#ffk#f#k#%ffffkfk@#fkf=k%kfkfff#kf#k#kf#kff#fkfkk%k#%@fkfkk#fkfk##fk#%%kkf@k@@f%ff%@fkfk#%#%fff#@f#f@f#k#f@fk@f@#f%@fff#@ff#
	k#%@kk@kfk@%%kf#f@fkkf#f#ffkk@ffkff@f%@%#k#f#f@kkff@f@fkf#kkfk%kf#@%@kffff#kf@#ffkkk@kkk%kkk@k@@f#kf#@kkk=kfk%#kf@%##%kkk#fkkfk#kkkfff%f%kkf@kkfk#k#f#k%k@f%@f#f#f#kk@@k@fk#@f%f#@ff#
;OBF_FUNC_9_LOSVAR name: hinibble
	@%@ffk#k@kk#@fkf#kf@f#%%fff#f#@ffff#@ffffkfff@kf%%f##kkf%ff%#k@ff@kf@kfkf@fkk@#k%@f#%f@ff%kf@kkkf#fkkf#k#=#f@k%@f@k#f%k%@fkfkk#fkfk##fk#%%k@@kf#k#k@@kk@ffk#f@%##%#kk#kkkk@kk#f@k@@f#f@f#k%@fk#f@f@f@k#
	kk@%k@#kkff@%fk%kkk#fkkfk#kkkfff%f@f%ff#kkkk##fk@k#fkk@ffkf@f%%kk@k@kfff#@fffkfkkf@k@#k%ffk#fkffkk#=#%kk#kff#k@fk@k@ffk@f#%@kk#%@kk@kfk@%k#%#kfkff%#f@f%fff#@f#f@f#k#f@fk@f@#f%#f@f@f@k#
;OBF_FUNC_9_LOSVAR name: lownibble
	k@kkk%@kfkff%#f@kk%fk#kkkffkkkkff#k#f#f%%f@kkfkkf#kkk@fkfk@kk%f#f@%@fkfkk#fkfk##fk#%kfkffff=f%ff#fkfk#@ffkk@#kff%%#k#fff@k%kf%ffk#ffk@f#ff#f#fffff%kf@%k#@fkk@k#ffff@ffk#%kfk@fkk@f
	fff%kkffkfkk%k%k#fff@k@%f%kkf@#f#ffkf@kfk##f%kk@%@fkfkk@kk#k@fkkkkf#f#kf#%k#f#k@@fkk=f#%fkff@kk@kk@k#k%f%k@#k@f%%@fk##kkk#f#k#kk@#ff@k#ff%%fkff@kk@kk@k#k%f@kkfk@fkk@f
;OBF_FUNC_9_LOSVAR name: mybinary
	#%k@k@k@f#k@fkfkfff@k#kk@f%k%kfk#fkf#%%fff##ffk%%f@@ff@kk#fkk@f@k@f@ff@ff%#%@f#k@f#f@k#kfffff@fkf#%kf#fffkkf@=k@k#%k@@kf#k#k@@kk@ffk#f@%%f@kffk%@#%kkf@#f#ffkf@kfk##f%f@kfkfk#
	kf%fkfk%f%kf#f@fkkf#f#ffkk@ffkff@f%kk%k@fkkkf#k@f@@f@kkk%fk%fff#@f@f%%kk#kff#k@fk@k@ffk@f#%k@f##kkf=k@%@kffff#kf@#ffkkk@kkk%#k@%ff#fkfk#@ffkk@#kff%f%#k#k%f%fk#kkkffkkkkff#k#f#f%kfkfk#

;PARAMETERS for function  named: encode_hidestr
;OBF_FUNC_5_PARAM name: startstr
	f%#kfkff%%k#kf%@#%f@@ff@kk#fkk@f@k@f@ff@ff%kf%kkf@ffk#@fkff##kkff@@k%%kk#fk@kf#k#kffk@%f#f#ff#f=fkf%k@k@k@f#k@fkfkfff@k#kk@f%@%kk#kff#k@fk@k@ffk@f#%f%kkk#f#ff%kf#%k#k#kf#kk@ffkfff%ff##f
	fk@f@%#fk@ffk@%f#kk%kk@k#fk@%%k##ffk@ff@kfkkk@k##kk#%%ffk#ffk@f#ff#f#fffff%ff@fkkkk#k@kf=f%kk#fk@kf#k#kffk@%%@fk@kfk@#kfffkkkk@f@k#%f@%@fff%f%kkf@#f#ffkf@kfk##f%k%k@f#kfk#%f##ff##f
;PARAMETERS for function  named: encode_shifthexdigit
;OBF_FUNC_6_PARAM name: hexvalue
	f#k%ff#fkfk#@ffkk@#kff%#fk%kkf@kkfk#k#f#k%@kf%#k#f@f%#kf%k#@fkk@k#ffff@ffk#%@#%f#kfkk%kkkfkk#=#%k@#kk#f#%f%fff#@f#f@f#k#f@fk@f@#f%%fkk#kk#kf##kfk#f@k@f#fk@%f@@f@f@kkk@k
	kkf%kk@k#fk@%f%fkk##fff@f@ff##ff#%k#k%@fk##kkf%fkk%f#k#k@@fkkkf@k#fk@@fffff%@kkfffff=#f%f@kkkf#f%k#%#kk#kkkk@kk#f@k@@f#f@f#k%@@%#kk#kkkk@kk#f@k@@f#f@f#k%@f%#k#kk@k#f@f@ffkfff#ff#k@%kkk@k
;PARAMETERS for function  named: hidestr
;OBF_FUNC_8_PARAM name: thisstr
	#f%@fff%f%#kkkkkfkkf@kkfkf%%@fk##kkf%fk#%fff#@f#f@f#k#f@fk@f@#f%k%k##fk##kf#ffk#f@f#@kkf%f#kfk#@ff@kkkf=#k@%k@#f@k%f#%fk@k#k@f@fkk#f@kk@%%kkf@kkfk#k#f#k%k@f%kkk#fkkfk#kkkfff%#k#@f
	@%k@fkkkf#k@f@@f@kkk%%fffk@kk#f#fff##fffkkk@%@f%@kk@kfk@%f%kk#ff#ffk#f#k#%k@fkfkfff#f=#k%f#f#kkfk%%#fkkfffkkfk@#ffkk#%f%f#kkkf#kf#kfffkkf#%k#%k@@kf#k#k@@kk@ffk#f@%@ff#k#@f
;PARAMETERS for function  named: decode_hidestr
;OBF_FUNC_9_PARAM name: startstr
	f@%kkf@k@@f%k%#kkkkkfkkf@kkfkf%%#ff#%%@fk@kfk@#kfffkkkk@f@k#%fk%fff#@f#f@f#k#f@fk@f@#f%f#f@#k#ff#=kk@%@fk##kkf%f%k##kk#@k@fff@ffkf##kf#%%@f@k@k#kf@f#f@f#k#kffk%kkkfffk@
	k%@fk#kk@f#k@f#kff%k%k@fff#@f@ffff@#k@k@f%#k#f%fkfkkkk@%ff%@kffk@ffk@@k@fk@@kk#kkf@%kf@f#fk@kkk=kk@%#ff#%f@%@f@k@k#kf@f#f@f#k#kffk%k%fk@k#k@f@fkk#f@kk@%kfffk@
;PARAMETERS for function  named: decode_hexshiftkeys
;OBF_FUNC_10_PARAM name: startstr
	f%f#f#kkfk%f%f#f##kffkkf@#kf#@f@f@k%k@%#k@ff@kf@kfkf@fkk@#k%@kf@f##kkkkfkfkkk@@k=#k@%#ff#%%@ffk#k@kk#@fkf#kf@f#%kf%fkff@kk@kk@k#k%fkkk@@k
	#f%#k@ff@kf@kfkf@fkk@#k%%k@#f@k%@%fkfkkkk@%%kfk#@ff##ff#f@ffkfkfkf%##f#%fffk@kk#f#fff##fffkkk@%#fkf@kk@ffkffk#f=#%ff#kkkk##fk@k#fkk@ffkf@f%@%#kf@kff@%%fffk@kk#f#fff##fffkkk@%k%fkk##fff@f@ff##ff#%k%k@@k@k%fkkk@@k
;PARAMETERS for function  named: decode_shifthexdigit
;OBF_FUNC_11_PARAM name: hexvalue
	kf%kkf@k@@f%%@fkfkk@kk#k@fkkkkf#f#kf#%@k%@kffk@ffk@@k@fk@@kk#kkf@%%fkkf#fffffkffff#k#%ff@fkkkffk#f@=#%f@kffk%%fff#@f#f@f#k#f@fk@f@#f%f%#kkkk#@kf#fff@%f@%kk#ff#ffk#f#k#%kf@fffk
	#f#%kkf@ffk#@fkff##kkff@@k%f@kkf%kkk#fkkfk#kkkfff%f@kk%kkf@k@@f%#ff@k#=#%ff#f#fkf%%fkf#f@k@kff#f#k@kfk#kf@k%f%@kfkkf%#%kfkfff#kf#k#kf#kff#fkfkk%@%k#k#kf#kk@ffkfff%kf@fffk
;PARAMETERS for function  named: fixescapes
;OBF_FUNC_12_PARAM name: forstr
	kf%f@@ff@kk#fkk@f@k@f@ff@ff%#kkk@%k@fkkkf#k@f@@f@kkk%%@kf@@k%k#f#k#f@k=#kf%kf#f@fkkf#f#ffkk@ffkff@f%@%kkfff@@f%f%fff#@f#f@f#k#f@fk@f@#f%kfkkf@fkk
	f@@%@f@k#f%kf%fk#fff@kkkk@@kfkf##k%#k%k@#f@k%%fk@k#k@f@fkk#f@kk@%f@kf@k#=#kf%k@#kk#f#%k@%kkf@#f#ffkf@kfk##f%kk%@f@k@k#kf@f#f@f#k#kffk%kkf@fkk




}


;FUNCTION ORIGINAL NAME: encode_hidestr
ffk#fkfkk@kk(fkff@ffkf##ff##f) { 
	global
	static onechar, newstr, secstartstr, k#fkf@kf 
	
	k%#kkkk#@kf#fff@%%fkk@%f%@ff#ffkf%kf@kf = 0123456789abcdef

	kk@k@%kk@k@kfff#@fffkfkkf@k@#k%f#kk#k%kkffkfkk%@k()
		
	newstr = 
	;convert to hexidecimal
	loop, % strlen(fk%fkf@@fkf%f%@fk@kfk@#kfffkkkk@f@k#%@f%k@@fk#ff%fk%#fffkkfff@f#k#kk@k%##ff##f)
	{
		strascii = % asc(substr(%fk@f@f#kkffff@fkkkk#k@kf%%#kf#k@f@%%kkk##f%, a_index, 1))
		hinibble = % strascii // 16
		lownibble = % strascii - (hinibble * 16)
		
		;shift the hex digits in order to encrypt them
		hinibble := f#%ffk#ffk@f#ff#f#fffff%ff%f#f@@ff#%%fk#kfffk%ffkf#kff#(hinibble)
		lownibble := f%ff@kkkk#f#kf#fk#%%fk#kfffk%%fkk##fff@f@ff##ff#%ffffkf#kff#(lownibble)
		
		newstr .= substr(k%fff#@f@f%%k@fff#@f@ffff@#k@k@f%%kf#f#f%%@fk@kfk@#kfffkkkk@f@k#%kf@kf, hinibble + 1, 1) . substr(k%fk#k#f#ff#@f@ffff#f#%%ffk#ffk@f#ff#f#fffff%k%k#kf%f%f@@fk@%@kf, lownibble + 1, 1)
	}
	
	fk%@f#f#f#kk@@k@fk#@f%f@%k@f#kfk#%%fkf@@fkf%ffkf##ff##f := newstr
	;now i'll reverse the hex string
	newstr = 
	loop, % strlen(f%k#fff@k@%kf%#fk@%f@ff%f@kkfkkf#kkk@fkfk@kk%f##ff##f) 
		newstr = % substr(fk%f#kfkk%f%k@k@k@f#k@fkfkfff@k#kk@f%@ff%fk@k#k@f@fkk#f@kk@%f##ff##f, a_index, 1) . newstr
	
	;convert key values to hex values. i can convert directly to
	;single hex digits because my keys only range from 1-15
	allhexkeys =
	loop, 4
		allhexkeys .=  substr(k%ff#fkfk#@ffkk@#kff%%k@@k@k%f%#fk@%kf@kf, key%a_index% + 1, 1)
	
	;stuff the key values into the string starting at character 2
	newstr := substr(newstr, 1, 1) . allhexkeys . substr(newstr, 2)
	
	return, newstr
}


;FUNCTION ORIGINAL NAME: encode_shifthexdigit
f#fffffkf#kff#(#fk#f@@f@f@kkk@k) { 
	global
	
	;each time i enter this routine i will use the next key value
	;to shift the hexvalue
	%fff#@f@f%%fkf@@fkf%%@kfk@kkk#k%++
	if (kk%fff@#kff%%@fk#kk@f#k@f#kff%%k@f#kfk#%fffkkf##k > 4)
		%f#kk%%@kfk@kkk#k%%kfk#fkf#% = 1	
	
	;add the shift key to the hexvalue 
	#fk#%#k@ff@kf@kfkf@fkk@#k%%kkk#f#ff%@@f@f@kkk@k += key%#k#k%%kk@fffkkf##k%%#k#fff@k%
	
	;if i go over, just substract 16 to simulate a circle of hex
	if (#fk#%#kk#kkkk@kk#f@k@@f#f@f#k%@%kkfff@@f%@f@%#f@kkf#k%f@kkk@k > 15) 
		%k#kf%%f#k##fk#@kf#kfk@#kkkfkk#%%fkk@% -= 16
		
	return #f%@kffff#kf@#ffkkk@kkk%#f%@f@f@f%@@f%f#f##kffkkf@#kf#@f@f@k%f@%fff@f#%kkk@k
	
}


;FUNCTION ORIGINAL NAME: createhexshiftkeys
kk@k@ff#kk#k@k() { 
	global
	
	;create random 4 entry 'encrypt' key, each entry can be 1-15
	loop, 4
		random, key%a_index%, 1, 15
		
	kk%#fff%@%kfkfff#kf#k#kf#kff#fkfkk%%f#kk%f%kk@k@kfff#@fffkfkkf@k@#k%kkf##k = 0
}


;SKIPPED MOVING function: 'hidestr()' to OBF CODE


;FUNCTION ORIGINAL NAME: decode_hidestr
kfkfkkk#@kf#f#@f(kk@f@fkkkfffk@) {  
	global	
;$OBFUSCATOR: $DEFGLOBVARS: %fkk##f%%k@k@kk@f%%f#kk%
	critical
	static @fk@kffkfk#kk@@k, fk@kf@#ff#fffkf##f, kfk##ff#k@fff#@ff#, #f@kk#k##f@fk#f@f@f@k#, f#kffkf@kkfk@fkk@f, k@k#k@#ff@kfkfk#
;$OBFUSCATOR: $DEFLOSVARS: %#fk@ffk@%%k@kk#k@ff@fkkfkkkffkk@kk%%#kkk%, %f#k@k#%%@fkkk#kf#f#ff@@kfffkkfkf#f%%#fff%, kfk##%#kkfk#%ff#k%@kk@kfk@%@f%kk#kff#k@fk@k@ffk@f#%f#@ff#, #f@kk#%@fkfkk@kk#k@fkkkkf#f#kf#%##f%fkk@%@%@f@k#f%fk#f@f@f@k#, f#kff%k@@kf#k#k@@kk@ffk#f@%%k#fff@k@%f@k%f@kf%kfk@fkk@f, k@%@fkfkk@kk#k@fkkkkf#f#kf#%#k@#%k#kf%ff@%fff#@f#f@f#k#f@fk@f@#f%fkfk#

	k%k#k#f@ffkkkff@kk%%kf#f#f%f%#f@kkf#k%%kk#fk@kf#k#kffk@%f@kf = % "0123456789abcdef"
		
	f#k%#k#f@f%%k@fff#@f@ffff@#k@k@f%%@kffk@ffk@@k@fk@@kk#kkf@%kk#f#f#(k%k@#k@f%%k##fk##kf#ffk#f@f#@kkf%@%kkf@#f#ffkf@kfk##f%%kkk#f#ff%@fkkkfffk@)
	
	k%#kfk#f@f%k@f%fff#f#@ffff#@ffffkfff@kf%%kkf@#f#ffkf@kfk##f%kkkfffk@ = % substr(kk%f#f@@ff#%@f%f#k#k@@fkkkf@k#fk@@fffff%fkk%fkff#kfk%kfffk@, 1, 1) . substr(kk%k@f#kfk#%@%kkk#fkkfk#kkkfff%@f%f@kkfkkf#kkk@fkfk@kk%%fff@f#%kkfffk@, 6)
	fk@k%#kffkk%f@%fk#k#f#ff#@f@ffff#f#%f%k#ff@kk#k#k@kkk#@f%#fffkf##f = % strlen(%f@ff%%kkf@k@@f%%f@k@ffkkf#f@#k#ff#%)
		
	@f%@ffk#k@kk#@fkf#kf@f#%@kff%k@fkkfkk%kf%@kfkkf%k#kk@@k = 
	loop, % strlen(kk@%f#f@@ff#%%@f#f#f#kk@@k@fk#@f%@f%kf#f@fkkf#f#ffkk@ffkff@f%kkfffk@) 
		@%#kf@kff@%f%#f@k@f%k%#kkkkkfkkf@kkfkf%kffkfk#kk@@k = % substr(kk%#fk#fkkffk#ff@k@#k@k%%kk#kfkk@%%@f@f@f%f@fkkkfffk@, a_index, 1) . %@fk##kkf%%fff##ffk%%kffkk#@kkff@ff@f%
	
	kk%#kff#k@k@fkf@k#kkfkfffkk%%kk#kfkk@%f@fkkkfffk@ = % @f%fk#kfffk%%fk#kfffk%k@kf%@fk##kkk#f#k#kk@#ff@k#ff%kfk#kk@@k
	@fk@%f@kf%kffk%kk#kff#k@fk@k@ffk@f#%k#k%k#f#@k@kk#f@@f@kkf#kk#k@%@@k = 
	k%@fff%fk##f%k@k@k@f#k@fkfkfff@k#kk@f%#k%fff#f#@ffff#@ffffkfff@kf%fff#@ff# = 1
	loop
	{
		if (kf%#ff#%k##%@fk@kfk@#kfffkkkk@f@k#%f#%fff@f#%k%fkfkkff@kkf@f#ffk#f#%fff#@ff# >f%#kffkk%%fff#@f#f@f#k#f@fk@f@#f%@kf@#ff#fffkf##f)
			break
			
		%kk@fkff@fkfffk#fkffkk#%%kfkfk##k%%@f@f@f% = % substr(k%f@k#@f%k@%fkkf#fffffkffff#k#%@fkkkfffk@, kfk#%k@ffkkf#@fk#fk%ff#k@%f#k@k#%fff%ff@kkkk#f#kf#fk#%@ff#, 1)
		%kkk##f%%@k@fff@f#kf@kkkf#fkkf#k#%%#kf#f#% = % instr(k%kkf@kkfk#k#f#k%f%#kf#k@f@%%kkf@ffk#@fkff##kkff@@k%f%f#kfkk%@kf, #f@kk%ff@kkkk#f#kf#fk#%k%ff#fkfk#@ffkk@#kff%#f@fk#%k@@fk#ff%f@f@f@k#) - 1
		
		f#k%k@@fk#ff%f%kffk@ffk%fk%kkk#fkkfk#kkkfff%@%kkf@ffk#@fkff##kkff@@k%kfk@fkk@f = % substr(kk@f%@kkf#f#fkf#ffk@kf@#k%%@ff#ffkf%fkkkfffk@, kfk##%f@kkkf#f%f%kfkfff#kf#k#kf#kff#fkfkk%%ff@kkkk#f#kf#fk#%k@fff#@ff# + 1, 1)
		f#kffkf%#kkkkkfkkf@kkfkf%k%f#k@k#%kfk@fkk@f = % instr(k%kkf@k@@f%%#kf#@f@kf#@fkkkk%%kk#kff#k@fk@k@ffk@f#%kf@kf, f#kf%fff@f#%f%k#@fkk@k#ffff@ffk#%f@k%fk@k#k@f@fkk#f@kk@%fk@fkk@f) - 1
		
		%#fff%%@k@fff@f#kf@kkkf#fkkf#k#%%@f@k#f% := @k%fkf#f@k@kff#f#k@kfk#kf@k%%#kfkff%%fff@#kff%%@kkf#f#fkf#ffk@kf@#k%fkkf@k@kff(#f@kk#%k##k@f%k#%f#kkkf#kf#kfffkkf#%f@fk#f@f@f@k#)
		f#kf%kfkfff#kf#k#kf#kff#fkfkk%kf@kkfk%kkffkfkk%@fkk@f := @kk%fk#kkkffkkkkff#k#f#f%%k##ffk@ff@kfkkk@k##kk#%kk%kfk#fkf#%f@k@kff(f#k%k@k##k%ff%kf#f@fkkf#f#ffkk@ffkff@f%f@%k##fk##kf#ffk#f@f#@kkf%kfk%kkfff@@f%@fkk@f)
		
		k@k#k@#%f##kkf%ff@%k#@fkk@k#ffff@ffk#%fkfk# = % #%k@fkkkf#k@f@@f@kkk%@k%ff#f#fkf%k#k#%kf@ffff#%#f@fk#f@f@f@k# * 16 + f#kffkf%k@#kk#f#%@kkf%fffk@kk#f#fff##fffkkk@%@fkk@f
		@fk@%k#f#@k@kk#f@@f@kkf#kk#k@%f%fkk##fff@f@ff##ff#%k%@fkfk#%fk#kk@@k .= chr(k@k%@kffk@ffk@@k@fk@@kk#kkf@%k%f#k@k#%%f#k@k#%%fk#kkkffkkkkff#k#f#f%#ff@kfkfk#)
		
		%fff#k#ff%%k#k@fkf#@kkkk@k@@f#kf#@kkk%%k@#f@k% += 2		
	}
		
	%f#kk%%kffkk#@kkff@ff@f%%f@kkkf#f% = % k#k#%kkk##f%fk@kff%#fkkfffkkfk@#ffkk#%kkkkf(@fk%fk@k%@k%#ff#%ff%@ffk#k@kk#@fkf#kf@f#%f%fff#@f#f@f#k#f@fk@f@#f%#kk@@k)
		
	return, @fk%f#kk%@%k##fk##kf#ffk#f@f#@kkf%f%kkf@k@@f%%k@k@k@f#k@fkfkfff@k#kk@f%kfk#kk@@k	
}


;FUNCTION ORIGINAL NAME: decode_hexshiftkeys
f#k##kk#f#f#(#k@kkfkfkkk@@k) { 
	global
;$OBFUSCATOR: $DEFGLOBVARS: #%fff#@f@f%%k@@kf#k#k@@kk@ffk#f@%%ff@kkkk#f#kf#fk#%k%f@kkkf#f%kkk@, @%@kfkff%%fkf#f@k@kff#f#k@kfk#kf@k%#%kf#f#f%%k@k@k@f#k@fkfkfff@k#kk@f%fff@, kk@%#ff#%f%kkk#fkkfk#kkkfff%fkk%f@kffk%f##k
	
	#%kkk##f%%kf#f@fkkf#f#ffkk@ffkff@f%#%fffk@kk#f#fff##fffkkk@%%fff@f#%kkk@ := "fff@kkf1ffkfkfkfff#k1fk@kf#@fffk@#kk"
	%f@f@k@ff%%k@@fk#ff%%f#f#kkfk% := "fff@f1ff@kffkk#f1fffffkf"
	
	%kk@k#fk@%%#k#kkkk@%%kf#f#f%%#k@f%%@k#ffff@%%#kffkk%1 = % substr(#k%f#k#k@@fkkkf@k#fk@@fffff%kkf%fkk@%kfk%fff#@f#f@f#k#f@fk@f@#f%k@@k, 2, 1)
	%#kfk#f@f%%#k#kkkk@%%kkf@k@@f%%@ff#ffkf%%f@kf%%@k#ffff@%2 = % substr(#k@%k@kffk%kk%@f#f#f#kk@@k@fk#@f%%kkf@ffk#@fkff##kkff@@k%fkkk@@k, 3, 1)
	%fkfk%%fkfk%%#k#kkkk@%%#f@k@f%%#k#fff@k%%@k#ffff@%3 = % substr(%@kfkff%%ff@k@f@kf@f##kkkkfkfkkk@@k%%k@kffk%, 4, 1)
	%fff@#kff%%#k#kkkk@%%kf#kkk%%f@k#@f%%@k#ffff@%%fkff#kfk%4 = % substr(#k%kkf@k@@f%@kk%@fk##kkk#f#k#kk@#ff@k#ff%kfkkk@@k, 5, 1)
	
	loop, 4
		%k#k@#kfk%%@f#k@f%%#k#kkkk@%%a_index% = % instr(k%@f@f@f%%#k#fff@k%%ff#fkfk#@ffkk@#kff%f%kkf@ffk#@fkff##kkff@@k%f@kf, %fff##ffk%%#k#kkkk@%%@f@f@f%%#fk@ffk@%%@k#ffff@%%fkk##f%%a_index%) - 1
			
	kk@%kkf@#f#ffkf@kfk##f%ff%fkk##f%kkf%#kkk%##k = 0
}	


;FUNCTION ORIGINAL NAME: decode_shifthexdigit
@kk@fkkf@k@kff(#kf#f@#kf@fffk) { 
	global
	
	%f#kkk#@k%%@kfk@kkk#k%%fkfkkkk@%++
	if (kk%fff#f#@ffff#@ffffkfff@kf%f%k@#kk#f#%%fkf#%f%kk#kff#k@fk@k@ffk@f#%kkf##k > 4)
		%k@#k@f%%@kfk@kkk#k%%#k@f% = 1	
	
	#kf%k#k#f@ffkkkff@kk%f@%#kf#@f@kf#@fkkkk%kf@%f#f@@ff#%fffk -= %ff#f#fkf%%#k#kkkk@%%f@kf%%@kfkkf%%kk@fffkkf##k%%@fk@kf%
	
	if (%#f#kf@kkfff@kk#ff@k#%%fkk@%%ff@fffff% < 0) 
		#k%@fk@kfk@#kfffkkkk@f@k#%#%kf#kkk%f@#kf@fffk += 16
		
	return #kf#f@%fk#k#f#ff#@f@ffff#f#%kf@f%k@#kkff@%ffk	
}


;FUNCTION ORIGINAL NAME: fixescapes
k#k#fk@kff@kkkkf(#kfk@fkkfkkf@fkk) { 
	global
	
	StringReplace, #kfk@f%ff#kkkk##fk@k#fkk@ffkf@f%kf%@ff#ffkf%kkf@fkk, #k%k@k@k@f#k@fkfkfff@k#kk@f%k@f%fkff#kfk%kk%k##k@f%fkkf@fkk, % "````", % "``", all
	StringReplace, #kf%fkff@kk@kk@k#k%%f#k#k@@fkkkf@k#fk@@fffff%%k#kf%%f#kk%fkkfkkf@fkk, #%kf#kkk%kfk%@k@fkfkfffk#@fk@f@ff%f%ff#kkkk##fk@k#fkk@ffkf@f%kfkkf@fkk, % "``n", % "`n", all
	StringReplace, #%fff##ffk%kf%fkfkkkk@%k%#fkkfffkkfk@#ffkk#%fk%fffk@kk#f#fff##fffkkk@%fkkf@fkk, %@fk##kkf%%#kkk%%f@@kf@#kkf@kf@k#%, % "``r", % "`r", all
	StringReplace, #%ff#kkkk##fk@k#fkk@ffkf@f%%fff@#kff%fk%@fk#kk@f#k@f#kff%fkkfkkf@fkk, #kf%f@kkfkkf#kkk@fkfk@kk%@fkk%ff@fffff%fkkf@fkk, % "``,", % "`,", all
	StringReplace, #k%k@#kk#f#%%#k@ff@kf@kfkf@fkk@#k%k%@kkf#f#fkf#ffk@kf@#k%fkk%fk@k%fkkf@fkk, #kfk%@kk@fk#k#k#kff@fkfkk%fk%f@kkfkkf#kkk@fkfk@kk%fkkf%f#kkk#@k%@fkk, % "``%", % "`%", all	
	StringReplace, #k%k##k@f%f%fffk@kk#f#fff##fffkkk@%@f%kf#f@fkkf#f#ffkk@ffkff@f%kfkkf@fkk, #kfk@f%ff#kkkk##fk@k#fkk@ffkf@f%kf%kf#kkk%kkf@fkk, % "``;", % "`;", all	
	StringReplace, #kf%fkf#f@k@kff#f#k@kfk#kf@k%@fkkfk%kk@k#fk@%kf@fkk, #kfk%@kf@#fkk@k#k#f#ffk%fkkf%k#f#@k@kk#f@@f@kkf#kk#k@%k%kkfff@@f%f@fkk, % "``t", % "`t", all
	StringReplace, #kfk%@f#k@f%@f%fff#@f#f@f#k#f@fk@f@#f%k%kkf@#f#ffkf@kfk##f%kkf@fkk, %fff@#kff%%fkfkkkk@%%f@@kf@#kkf@kf@k#%, % "``b", % "`b", all
	StringReplace, %#k#fff@k%%kfk#kkk@fk#f#k#f@k%%kf#kkk%, #kfk@fk%f@@ff@kk#fkk@f@k@f@ff@ff%f%kf@ffff#%kkf@fkk, % "``v", % "`v", all
	StringReplace, #kf%k@@fk#ff%k@f%kffffk@f%kk%k@fkkkf#k@f@@f@kkk%%@ffk#k@kk#@fkf#kf@f#%kf@fkk, #kfk%kk#kfkk@%@f%fffk@kk#f#fff##fffkkk@%k%#ffkfk@f%fkkf@fkk, % "``a", % "`a", all
	
	StringReplace, #kfk@fk%@fkfkk@kk#k@fkkkkf#f#kf#%fkk%k##k@f%f@fkk, %@kfkkf%%f@@kf@#kkf@kf@k#%%#kfkff%, % """""", % """", all
	
	return %#f@k@f%%kfk#kkk@fk#f#k#f@k%%k@#k@f%
}


Re: [TOOL] AHK Dynamic Obfuscator L - Protect your code by Obfuscation

Posted: 18 Jul 2019, 21:12
by NewberEnerNeeder1
lol@ahkstudent i also like that it uses fk so much haha

okay so i got the basic to work and have no idea how to do much more.

how do i obfuscate




"Loop, Read, C:\Program Files (x86)\myfile\myfile.txt"

"If A_loopreadline contains mykeyword"

or at least

"C:\Program Files (x86)\myfile\myfile.txt"
"mykeyword"

from this code below:

Code: Select all

Loop, Read, C:\Program Files (x86)\myfile\myfile.txt
{
	If A_loopreadline contains mykeyword
	{
		WordFound = 1
		break ; no need to continue running it 
	}



}