Тема: AHK: Обфускатор
Написал несложный обфускатор для AHK, основанный на замене переменных и названий функций на случайно созданные.
В файл Replacement.ini пишем название наших функций и переменных.
Пример.
Наш исходник (мой первый флудер ВК ) -
Menu, Tray, Icon, Shell32.dll, 44
IniRead, mess1, %A_ScriptDir%\SettingReloger.ini, Setting, Сообщение1
IniRead, mess2, %A_ScriptDir%\SettingReloger.ini, Setting, Сообщение2
IniRead, token, %A_ScriptDir%\SettingReloger.ini, Setting, Token
IniRead, idz, %A_ScriptDir%\SettingReloger.ini, Setting, idz
IniRead, kol, %A_ScriptDir%\SettingReloger.ini, Setting, kol
IniRead, Zapusk, %A_ScriptDir%\SettingReloger.ini, Setting, Первый запуск
if Zapusk = ERROR
MsgBox, Не забудьте все настроить и нажать кнопку "Настройки"
Gui, Add, Text, x2 y30 w75 h25 , VK token:
Gui, Add, Text, x2 y50 w75 h25 , Сообщение1:
Gui, Add, Text, x2 y70 w75 h25 , Сообщение2:
Gui, Add, Text, x2 y90 w75 h25 , ID жертвы:
Gui, Add, Text, x2 y110 w90 h25 , Кол-во кругов:
xFORinput = x77
wFORinput = w100
Gui, Add, Edit, %xFORinput% y30 %wFORinput% h20 vtoken, %token%
Gui, Add, Edit, %xFORinput% y50 %wFORinput% h20 vmess1, %mess1%
Gui, Add, Edit, %xFORinput% y70 %wFORinput% h20 vmess2, %mess2%
Gui, Add, Edit, %xFORinput% y90 %wFORinput% h20 vidz, %idz%
Gui, Add, Edit, %xFORinput% y110 %wFORinput% h20 vkol, %kol%
Gui, Add, Button, x2 y148 w160 gSaveSetting, Сохранить настройки
Gui, Add, Button, x2 y170 w160 h30 gStart, Запустить
Gui, Font, S14 Cblue Bold, comic sans ms
Gui, Add, Text, x2 y0 w160 h30 , Sememix FLOOD VK
Gui, Show, AutoSize, Sememix FLOOD VK
Return
SaveSetting:
GuiControlGet, mess1
GuiControlGet, mess2
GuiControlGet, token
GuiControlGet, idz
GuiControlGet, kol
IniWrite, %mess1%, %A_ScriptDir%\SettingReloger.ini, Setting, Сообщение1
IniWrite, %mess2%, %A_ScriptDir%\SettingReloger.ini, Setting, Сообщение2
IniWrite, %token%, %A_ScriptDir%\SettingReloger.ini, Setting, Token
IniWrite, %idz%, %A_ScriptDir%\SettingReloger.ini, Setting, idz
IniWrite, %kol%, %A_ScriptDir%\SettingReloger.ini, Setting, kol
IniWrite, 1, %A_ScriptDir%\SettingReloger.ini, Setting, Первый запуск
TrayTip, Поздравляю, Успешно сохранено, 1, 1
return
Start:
slep = 10000
tim := kol * (slep // 1000) * 2
MsgBox,
(
Нажмите "ОК" и мы будем флудить нашей жертве
Сообщение1 : [ %mess1% ]
Сообщение2 : [ %mess2% ]
Количество повторов : [ %kol% ]
VK ID жертвы : [ %idz% ]
Весь процесс займёт %tim% секунд
Для выключения программы нажмите Alt + U
---===[Всё сохранено]===---
)
Gui, Submit
HTTP := ComObjCreate("WinHTTP.WinHTTPRequest.5.1")
if kol > 0
loop %kol%
{
HTTP.Open("GET", "https://api.vk.com/method/messages.send?user_id=" idz "&message=" mess1 "&access_token=" token)
HTTP.Send()
sleep %slep%
HTTP.Open("GET", "https://api.vk.com/method/messages.send?user_id=" idz "&message=" mess2 "&access_token=" token)
HTTP.Send()
sleep %slep%
}
else
msgbox, Количество кругов < 1
reload
!U::
reload
return
return
Наш файл Replacement.ini -
mess1
mess2
SaveSetting
idz
kol
Zapusk
xFORinput
wFORinput
tim
В итоге мы получили (после декомпиляции, оно естественно будет без коментариев и без лишний строк) -
; Obfuscated by Sememix https://vk.com/sememix
Menu, Tray, Icon, Shell32.dll, 44
IniRead, DecompilerError1I@#@$j#$#i$j$i@jj@1@$jIiI1jiiillll@I$#ij@jiII##@#$IiiIj$jli, %A_ScriptDir%\SettingReloger.ini, Setting, Сообщение1
IniRead, DecompilerError#I$$j@i@#@j1i1i@#jil@#111#1jIj@j$I###l$@i1l$#1i$@$1$@#l@jli$, %A_ScriptDir%\SettingReloger.ini, Setting, Сообщение2
IniRead, token, %A_ScriptDir%\SettingReloger.ini, Setting, Token
IniRead, DecompilerError#@##lliiiiI#ij$il1ll#I1l##j1$j1$IIjll1j1@l$$@l@I#lII#jIllji1, %A_ScriptDir%\SettingReloger.ini, Setting, DecompilerError#@##lliiiiI#ij$il1ll#I1l##j1$j1$IIjll1j1@l$$@l@I#lII#jIllji1
IniRead, DecompilerError$lij#jj$iI@l@li$#i##I1@j@j$lij1jij###j#$1$$l1#1$$@@ij11I@1#i, %A_ScriptDir%\SettingReloger.ini, Setting, DecompilerError$lij#jj$iI@l@li$#i##I1@j@j$lij1jij###j#$1$$l1#1$$@@ij11I@1#i
IniRead, DecompilerError@Ij#l@j$l@$1i$$I@Iiijl@i$@j$$jj#IjIiIjI1$@$#i$#jiji1i#I$$ij#, %A_ScriptDir%\SettingReloger.ini, Setting, Первый запуск
if DecompilerError@Ij#l@j$l@$1i$$I@Iiijl@i$@j$$jj#IjIiIjI1$@$#i$#jiji1i#I$$ij# = ERROR
MsgBox, Не забудьте все настроить и нажать кнопку "Настройки"
Gui, Add, Text, x2 y30 w75 h25 , VK token:
Gui, Add, Text, x2 y50 w75 h25 , Сообщение1:
Gui, Add, Text, x2 y70 w75 h25 , Сообщение2:
Gui, Add, Text, x2 y90 w75 h25 , ID жертвы:
Gui, Add, Text, x2 y110 w90 h25 , Кол-во кругов:
DecompilerError1lljIj1iI#j$I$#IjiliIi#I@#ll@iiIij$#lI1I1$@#$@@I$ij@I1Ij$l#1 = x77
DecompilerError1j$#11Iil$1@1i#l$$1j$@#l1III@iIi$1$1ij##I@i@j1ljI#i@#$I@$II1 = w100
Gui, Add, Edit, %DecompilerError1lljIj1iI#j$I$#IjiliIi#I@#ll@iiIij$#lI1I1$@#$@@I$ij@I1Ij$l#1% y30 %DecompilerError1j$#11Iil$1@1i#l$$1j$@#l1III@iIi$1$1ij##I@i@j1ljI#i@#$I@$II1% h20 vtoken, %token%
Gui, Add, Edit, %DecompilerError1lljIj1iI#j$I$#IjiliIi#I@#ll@iiIij$#lI1I1$@#$@@I$ij@I1Ij$l#1% y50 %DecompilerError1j$#11Iil$1@1i#l$$1j$@#l1III@iIi$1$1ij##I@i@j1ljI#i@#$I@$II1% h20 vDecompilerError1I@#@$j#$#i$j$i@jj@1@$jIiI1jiiillll@I$#ij@jiII##@#$IiiIj$jli, %DecompilerError1I@#@$j#$#i$j$i@jj@1@$jIiI1jiiillll@I$#ij@jiII##@#$IiiIj$jli%
Gui, Add, Edit, %DecompilerError1lljIj1iI#j$I$#IjiliIi#I@#ll@iiIij$#lI1I1$@#$@@I$ij@I1Ij$l#1% y70 %DecompilerError1j$#11Iil$1@1i#l$$1j$@#l1III@iIi$1$1ij##I@i@j1ljI#i@#$I@$II1% h20 vDecompilerError#I$$j@i@#@j1i1i@#jil@#111#1jIj@j$I###l$@i1l$#1i$@$1$@#l@jli$, %DecompilerError#I$$j@i@#@j1i1i@#jil@#111#1jIj@j$I###l$@i1l$#1i$@$1$@#l@jli$%
Gui, Add, Edit, %DecompilerError1lljIj1iI#j$I$#IjiliIi#I@#ll@iiIij$#lI1I1$@#$@@I$ij@I1Ij$l#1% y90 %DecompilerError1j$#11Iil$1@1i#l$$1j$@#l1III@iIi$1$1ij##I@i@j1ljI#i@#$I@$II1% h20 vDecompilerError#@##lliiiiI#ij$il1ll#I1l##j1$j1$IIjll1j1@l$$@l@I#lII#jIllji1, %DecompilerError#@##lliiiiI#ij$il1ll#I1l##j1$j1$IIjll1j1@l$$@l@I#lII#jIllji1%
Gui, Add, Edit, %DecompilerError1lljIj1iI#j$I$#IjiliIi#I@#ll@iiIij$#lI1I1$@#$@@I$ij@I1Ij$l#1% y110 %DecompilerError1j$#11Iil$1@1i#l$$1j$@#l1III@iIi$1$1ij##I@i@j1ljI#i@#$I@$II1% h20 vDecompilerError$lij#jj$iI@l@li$#i##I1@j@j$lij1jij###j#$1$$l1#1$$@@ij11I@1#i, %DecompilerError$lij#jj$iI@l@li$#i##I1@j@j$lij1jij###j#$1$$l1#1$$@@ij11I@1#i%
Gui, Add, Button, x2 y148 w160 gDecompilerError$$##I#@jili$#jjiji##$$l#j$jlj#jIiI#j@j1$iI$1liII@1#jl$#I1l$#, Сохранить настройки
Gui, Add, Button, x2 y170 w160 h30 gStart, Запустить
Gui, Font, S14 Cblue Bold, comic sans ms
Gui, Add, Text, x2 y0 w160 h30 , Sememix FLOOD VK
Gui, Show, AutoSize, Sememix FLOOD VK
Return
DecompilerError$$##I#@jili$#jjiji##$$l#j$jlj#jIiI#j@j1$iI$1liII@1#jl$#I1l$#:
GuiControlGet, DecompilerError1I@#@$j#$#i$j$i@jj@1@$jIiI1jiiillll@I$#ij@jiII##@#$IiiIj$jli
GuiControlGet, DecompilerError#I$$j@i@#@j1i1i@#jil@#111#1jIj@j$I###l$@i1l$#1i$@$1$@#l@jli$
GuiControlGet, token
GuiControlGet, DecompilerError#@##lliiiiI#ij$il1ll#I1l##j1$j1$IIjll1j1@l$$@l@I#lII#jIllji1
GuiControlGet, DecompilerError$lij#jj$iI@l@li$#i##I1@j@j$lij1jij###j#$1$$l1#1$$@@ij11I@1#i
IniWrite, %DecompilerError1I@#@$j#$#i$j$i@jj@1@$jIiI1jiiillll@I$#ij@jiII##@#$IiiIj$jli%, %A_ScriptDir%\SettingReloger.ini, Setting, Сообщение1
IniWrite, %DecompilerError#I$$j@i@#@j1i1i@#jil@#111#1jIj@j$I###l$@i1l$#1i$@$1$@#l@jli$%, %A_ScriptDir%\SettingReloger.ini, Setting, Сообщение2
IniWrite, %token%, %A_ScriptDir%\SettingReloger.ini, Setting, Token
IniWrite, %DecompilerError#@##lliiiiI#ij$il1ll#I1l##j1$j1$IIjll1j1@l$$@l@I#lII#jIllji1%, %A_ScriptDir%\SettingReloger.ini, Setting, DecompilerError#@##lliiiiI#ij$il1ll#I1l##j1$j1$IIjll1j1@l$$@l@I#lII#jIllji1
IniWrite, %DecompilerError$lij#jj$iI@l@li$#i##I1@j@j$lij1jij###j#$1$$l1#1$$@@ij11I@1#i%, %A_ScriptDir%\SettingReloger.ini, Setting, DecompilerError$lij#jj$iI@l@li$#i##I1@j@j$lij1jij###j#$1$$l1#1$$@@ij11I@1#i
IniWrite, 1, %A_ScriptDir%\SettingReloger.ini, Setting, Первый запуск
TrayTip, Поздравляю, Успешно сохранено, 1, 1
return
Start:
slep = 10000
DecompilerErrorlIiI1i1@#@$I$ijI$$$Ii$ji@jl1ljI$ii#1@I1@$1$jiIi$jI1#@1$#1l$j := DecompilerError$lij#jj$iI@l@li$#i##I1@j@j$lij1jij###j#$1$$l1#1$$@@ij11I@1#i * (slep // 1000) * 2
MsgBox,
(
Нажмите "ОК" и мы будем флудить нашей жертве
Сообщение1 : [ %DecompilerError1I@#@$j#$#i$j$i@jj@1@$jIiI1jiiillll@I$#ij@jiII##@#$IiiIj$jli% ]
Сообщение2 : [ %DecompilerError#I$$j@i@#@j1i1i@#jil@#111#1jIj@j$I###l$@i1l$#1i$@$1$@#l@jli$% ]
Количество повторов : [ %DecompilerError$lij#jj$iI@l@li$#i##I1@j@j$lij1jij###j#$1$$l1#1$$@@ij11I@1#i% ]
VK ID жертвы : [ %DecompilerError#@##lliiiiI#ij$il1ll#I1l##j1$j1$IIjll1j1@l$$@l@I#lII#jIllji1% ]
Весь процесс займёт %DecompilerErrorlIiI1i1@#@$I$ijI$$$Ii$ji@jl1ljI$ii#1@I1@$1$jiIi$jI1#@1$#1l$j% секунд
Для выключения программы нажмите Alt + U
---===[Всё сохранено]===---
)
Gui, Submit
HTTP := ComObjCreate("WinHTTP.WinHTTPRequest.5.1")
if DecompilerError$lij#jj$iI@l@li$#i##I1@j@j$lij1jij###j#$1$$l1#1$$@@ij11I@1#i > 0
loop %DecompilerError$lij#jj$iI@l@li$#i##I1@j@j$lij1jij###j#$1$$l1#1$$@@ij11I@1#i%
{
HTTP.Open("GET", "https://api.vk.com/method/messages.send?user_id=" DecompilerError#@##lliiiiI#ij$il1ll#I1l##j1$j1$IIjll1j1@l$$@l@I#lII#jIllji1 "&message=" DecompilerError1I@#@$j#$#i$j$i@jj@1@$jIiI1jiiillll@I$#ij@jiII##@#$IiiIj$jli "&access_token=" token)
HTTP.Send()
sleep %slep%
HTTP.Open("GET", "https://api.vk.com/method/messages.send?user_id=" DecompilerError#@##lliiiiI#ij$il1ll#I1l##j1$j1$IIjll1j1@l$$@l@I#lII#jIllji1 "&message=" DecompilerError#I$$j@i@#@j1i1i@#jil@#111#1jIj@j$I###l$@i1l$#1i$@$1$@#l@jli$ "&access_token=" token)
HTTP.Send()
sleep %slep%
}
else
msgbox, Количество кругов < 1
reload
!U::
reload
return
return
Сам Обфускатор -
#NoTrayIcon
LongStringReplacement := 60
Symbols := "ijlI1@#$"
StartVariable := "DecompilerError"
NameReplacement = %A_ScriptDir%/Replacement.ini
FileSelectFile, SelectedFile, 3, ,Открыть файл, Текстовые файлы (*.ahk)
if SelectedFile =
MsgBox, Перезапустите и попробуйте ещё раз.
else
{
Name := SelectedFile
Obfuscated(Name, NameReplacement)
}
Obfuscated(Name, NameReplacement) ; На вход получает 2 файла. 1 - переменная с текстом сходника. 2 - функции которые нужно заменить через enter.
{
global LongStringReplacement
global Symbols
FileRead, TextName, %Name%
Loop, read, %NameReplacement%
{
function := A_LoopReadLine
AnswerRandomStr := RandomStr(LongStringReplacement, Symbols)
StringReplace, TextName, TextName, %function%, %AnswerRandomStr%, 1
}
FileAppend, `; Obfuscated by Sememix https://vk.com/sememix`n, Obfuscated.ahk
FileAppend, %TextName%, Obfuscated.ahk
ExitApp
}
RandomStr(long, str)
{
global StartVariable
strlong := StrLen(str)
Answer := StartVariable
loop %long%
{
Random, RanNumber, 1, % StrLen(str)
Answer .= SubStr(str, RanNumber, 1)
}
return Answer
}