[TOOL] AHK Dynamic Obfuscator L - Protect your code by Obfuscation
-
- Posts: 9
- Joined: 12 Mar 2018, 10:30
Re: [TOOL] AHK Dynamic Obfuscator L - Protect your code by Obfuscation
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
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.
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.
EverFastAccess : Take Notes on anything the Fast way: Attach notes, Set reminders & Speed up research in 1 gesture - AHK topic
AHK Dynamic Obfuscator L - Protect your AHK code by Obfuscation - AHK topic
QuickModules for Outlook : Sort Outlook emails very quickly to multiple folders - AHK topic
Coding takes lots of time and efforts. If I have helped you or if you enjoy one of my free projects, please consider a small donation
Sorry I am working hard at the moment at a new job and can't commit on delays of answers & updates
AHK Dynamic Obfuscator L - Protect your AHK code by Obfuscation - AHK topic
QuickModules for Outlook : Sort Outlook emails very quickly to multiple folders - AHK topic
Coding takes lots of time and efforts. If I have helped you or if you enjoy one of my free projects, please consider a small donation
Sorry I am working hard at the moment at a new job and can't commit on delays of answers & updates
Re: [TOOL] AHK Dynamic Obfuscator L - Protect your code by Obfuscation
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.
This is a source already obfuscated to the example.
What is the solution to this?
What am I doing wrong?
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
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 am I doing wrong?
Re: [TOOL] AHK Dynamic Obfuscator L - Protect your code by Obfuscation
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.
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.
EverFastAccess : Take Notes on anything the Fast way: Attach notes, Set reminders & Speed up research in 1 gesture - AHK topic
AHK Dynamic Obfuscator L - Protect your AHK code by Obfuscation - AHK topic
QuickModules for Outlook : Sort Outlook emails very quickly to multiple folders - AHK topic
Coding takes lots of time and efforts. If I have helped you or if you enjoy one of my free projects, please consider a small donation
Sorry I am working hard at the moment at a new job and can't commit on delays of answers & updates
AHK Dynamic Obfuscator L - Protect your AHK code by Obfuscation - AHK topic
QuickModules for Outlook : Sort Outlook emails very quickly to multiple folders - AHK topic
Coding takes lots of time and efforts. If I have helped you or if you enjoy one of my free projects, please consider a small donation
Sorry I am working hard at the moment at a new job and can't commit on delays of answers & updates
Re: [TOOL] AHK Dynamic Obfuscator L - Protect your code by Obfuscation
Thank you for your reply.
This is part of the code in your example (mindynobf_obfuscated.ahk).
This code is what I did (mindynobf.ahk).
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?
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
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
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.
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.
EverFastAccess : Take Notes on anything the Fast way: Attach notes, Set reminders & Speed up research in 1 gesture - AHK topic
AHK Dynamic Obfuscator L - Protect your AHK code by Obfuscation - AHK topic
QuickModules for Outlook : Sort Outlook emails very quickly to multiple folders - AHK topic
Coding takes lots of time and efforts. If I have helped you or if you enjoy one of my free projects, please consider a small donation
Sorry I am working hard at the moment at a new job and can't commit on delays of answers & updates
AHK Dynamic Obfuscator L - Protect your AHK code by Obfuscation - AHK topic
QuickModules for Outlook : Sort Outlook emails very quickly to multiple folders - AHK topic
Coding takes lots of time and efforts. If I have helped you or if you enjoy one of my free projects, please consider a small donation
Sorry I am working hard at the moment at a new job and can't commit on delays of answers & updates
Re: [TOOL] AHK Dynamic Obfuscator L - Protect your code by Obfuscation
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
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
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.
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.
EverFastAccess : Take Notes on anything the Fast way: Attach notes, Set reminders & Speed up research in 1 gesture - AHK topic
AHK Dynamic Obfuscator L - Protect your AHK code by Obfuscation - AHK topic
QuickModules for Outlook : Sort Outlook emails very quickly to multiple folders - AHK topic
Coding takes lots of time and efforts. If I have helped you or if you enjoy one of my free projects, please consider a small donation
Sorry I am working hard at the moment at a new job and can't commit on delays of answers & updates
AHK Dynamic Obfuscator L - Protect your AHK code by Obfuscation - AHK topic
QuickModules for Outlook : Sort Outlook emails very quickly to multiple folders - AHK topic
Coding takes lots of time and efforts. If I have helped you or if you enjoy one of my free projects, please consider a small donation
Sorry I am working hard at the moment at a new job and can't commit on delays of answers & updates
Re: [TOOL] AHK Dynamic Obfuscator L - Protect your code by Obfuscation
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:
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
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)
{
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
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
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.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)
Re: [TOOL] AHK Dynamic Obfuscator L - Protect your code by Obfuscation
Good luck obfuscating Java with a JavaScript Obfuscator...Bluscream wrote: ↑14 Oct 2018, 02:28I 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)
"Nothing is quieter than a loaded gun." - Heinrich Heine
Re: [TOOL] AHK Dynamic Obfuscator L - Protect your code by Obfuscation
This seems very nice will have a look at it when reaching end of my current project
Thank you
Thank you
Re: [TOOL] AHK Dynamic Obfuscator L - Protect your code by Obfuscation
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.
-
- Posts: 104
- Joined: 07 Aug 2015, 15:53
Re: [TOOL] AHK Dynamic Obfuscator L - Protect your code by Obfuscation
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.
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
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
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
EverFastAccess : Take Notes on anything the Fast way: Attach notes, Set reminders & Speed up research in 1 gesture - AHK topic
AHK Dynamic Obfuscator L - Protect your AHK code by Obfuscation - AHK topic
QuickModules for Outlook : Sort Outlook emails very quickly to multiple folders - AHK topic
Coding takes lots of time and efforts. If I have helped you or if you enjoy one of my free projects, please consider a small donation
Sorry I am working hard at the moment at a new job and can't commit on delays of answers & updates
AHK Dynamic Obfuscator L - Protect your AHK code by Obfuscation - AHK topic
QuickModules for Outlook : Sort Outlook emails very quickly to multiple folders - AHK topic
Coding takes lots of time and efforts. If I have helped you or if you enjoy one of my free projects, please consider a small donation
Sorry I am working hard at the moment at a new job and can't commit on delays of answers & updates
-
- Posts: 150
- Joined: 28 Sep 2016, 11:14
- Contact:
Re: [TOOL] AHK Dynamic Obfuscator L - Protect your code by Obfuscation
@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:
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:
Hope you have a great week.
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.
Hope you have a great week.
- manehscripts
- Posts: 126
- Joined: 03 May 2019, 16:10
Re: [TOOL] AHK Dynamic Obfuscator L - Protect your code by Obfuscation
Hello guys!
@DigiDon I'm have a problem while trying to obfuscate this code below:
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:
@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
}
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%
}
-----------------------------------------------------------
Stop to think, shut up to resist, and act to win!
Stop to think, shut up to resist, and act to win!
-
- Posts: 47
- Joined: 26 Mar 2019, 06:06
Re: [TOOL] AHK Dynamic Obfuscator L - Protect your code by Obfuscation
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:
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
}
}
Return to “Scripts and Functions (v1)”
Who is online
Users browsing this forum: Jasonosaj and 55 guests