1 (изменено: sememix, 2017-03-04 14:02:01)

Тема: 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
}

2

Re: AHK: Обфускатор

Как ты заполняешь Replacement.ini?

3

Re: AHK: Обфускатор

Foma, вручную. Просто указываем название функций и переменных.

4

Re: AHK: Обфускатор

Жутко неудобно.
И как получится если в одном месте "var", а в другом "var_sekret"? Не получится так, что var будет изменена в обоих  переменных, а "_sekret" так и останется?

5

Re: AHK: Обфускатор

Foma, да. За то прост. "var_sekret" просто выше в списке указать и всё

6

Re: AHK: Обфускатор

У меня свой примерно такой же. Довольно много времени уходит. Надеялся, что тут лучше реализовано.

7

Re: AHK: Обфускатор

Так автоматизируйте вывод переменных и функций используемых в скрипте, чтоб было проще.

8

Re: AHK: Обфускатор

Сделал как умел. Всё равно надо сортировать, что-то вручную проверять. В моих кривых программах на 2000 строк и 500 переменных процедура занимает много времени и внимания.

9

Re: AHK: Обфускатор

Foma, свою прогу на 1000 строк, перебрал за 5 минут и всё выписал.

10

Re: AHK: Обфускатор

Наверное ты мало используешь имен переменных типа var1, varvar2varvar, которые надо обрабатывать особо, иначе они потом  не сработают как var%A_index%, varvar%A_index%varvar в циклах. Может у тебя ещё и ini маленький, или в нём не нужны переменные с читаемыми именами.