[Полезное] Обфускатор для AHK
|
|
Rinat_Namazov |
Дата: Понедельник, 12.02.2018, 18:31 | Сообщение # 1
|
Боец
Сообщений: 122
Статус: Offline
|
ВступлениеНемногие знают что для AHK создан только один единственный обфускатор кода. И как им пользоваться у всех остаются только одни вопросы, да еще в добавок он выложен на англоязычном форуме. И сегодня вы научитесь им пользоваться. Большинство AHK скриптов легко декомпилируются, так что обфускация может быть спугнет потенциального взло*щика в попытке разобраться в коде. Хот и на маленьком примере кода кажется что можно разобраться, то в больших кодах будет надоедать. Так для начала нам нужно скачать сам обфускатор, он кстати идет в виде исходника. Ссылка: *ТыК*Инструкция1. Для удобства создадим папку на рабочем столе 2. В этой папке создаем 3 файла, например: 1) includemap.txt 2) transmap.txt 3) obfuscated.ahk Можно использовать и другие названия. 3. В эту же папку переносим наш исходник и открыв его, в начало вставляем следующий текст:Код ;$obfuscator: $dump_secfrags_forclasses: common ;$obfuscator: $dump_tmessfrags_forclasses: common ;$obfuscator: $globvarfrags_dumpall: ;$obfuscator: $losvarfrags_dumpall: ;$obfuscator: $paramfrags_dumpall: ;$obfuscator: $funcfrags_dumpclass: unclassed ;$obfuscator: $funcfrags_dumpclass: unsecclasses ;$obfuscator: $labelfrags_dumpclass: unclassed ;$obfuscator: $labelfrags_dumpclass: unsecclasses ;$obfuscator: $sysfuncfrags_dumpall: ;$obfuscator: $defglobvars: ;$obfuscator: $defsysfuncs:
В этой строчке можно указать переменные через запятую которые нужно обфусцировать. Например:Код ;$obfuscator: $defglobvars: test, mynick, guitext1
В этой строчке можно указать системные команды через запятую которые нужно обфусцировать. Только работает это как-то странно. Например:Код ;$obfuscator: $defsysfuncs: dllcall, strget, numput
После выполнения всего кода, вставляем следующий текст Желательно перед началом функций и классов - в противном случае может быть что-то не работатьКод ;$obfuscator: $end_autoexecute:
Сохраняем наш исходник 4. Открываем файл includemap.txt и пишем туда полный путь до оригинального исходника. 5. Запускаем обфускатор в скаченном файле он находиться по следующему пути: autohotkey-obfuscator-master > dynamicobfuscator-source-code > dynamicobfuscator.ahk
6. В меню обфускатора выбираем "create translations map". В первом поле указываем путь к файлу "includemap.txt". Во втором поле указываем путь к файлу "transmap.txt". Жмем "create translations map", и далее жмем "ok". 7. В главном меню выбираем "obfuscate source code". И в первых двух полях должен быть указать путь к файлам, которые указывались в "create translations map". Можно указать и другой, если вы перенесли эти фалы. В третьем поле указываем путь к файлу "obfuscated.ahk". В этом же меню наверху есть 3 галочки. И при установке первой галочке в коде удаляется все знаки табуляции(отступы), а также комментарии. Код без знаков табуляции не особо удобно читать. В двух других пока не разбирался, но можете сами поэкспериментировать на более мене длинных кодах, так как на маленьком кажется что просто меняются рандомные символы. жмем "obfuscate program", далее жмем "ok" и еще раз "ok". 8. Теперь в файле "obfuscated.ahk" будет находиться обфусцированный код. Пример обфусцированного кода: *ТыК*
|
|
|
|
bozhenka |
Дата: Вторник, 27.02.2018, 07:49 | Сообщение # 2
|
Новичок
Сообщений: 17
Статус: Offline
|
Помниться я как-то искал такой, но потом не разобрался, ибо куча всякой фигни там была. Но спасибо, что все нормально объяснил. Плюс с меня.
|
|
|
|
Joni228 |
Дата: Среда, 28.02.2018, 20:56 | Сообщение # 3
|
Бывалый
Сообщений: 314
Статус: Offline
|
Может способ и отличный.. но кроме я ничего не увидел...
|
|
|
|
Rinat_Namazov |
Дата: Среда, 28.02.2018, 23:48 | Сообщение # 4
|
Боец
Сообщений: 122
Статус: Offline
|
Цитата Joni228 ( ) Может способ и отличный.. но кроме я ничего не увидел... Че-то не то делаешь может, у меня еще была проблема что обфускатор крашило, спасло переустановка ahk.
|
|
|
|
Wyareri |
Дата: Четверг, 01.03.2018, 11:18 | Сообщение # 5
|
Боец
Сообщений: 56
Статус: Offline
|
Цитата Joni228 ( ) я ничего не увидел... По началу тоже такое было несколько раз, но потом как-то взяло и обфусцировалось. И все последующие разы норм обфусцировалось.
|
|
|
|
Joni228 |
Дата: Понедельник, 05.03.2018, 22:10 | Сообщение # 6
|
Бывалый
Сообщений: 314
Статус: Offline
|
Цитата Rinat_Namazov ( ) Че-то не то делаешь может, у меня еще была проблема что обфускатор крашило, спасло переустановка ahk.
Цитата Wyareri ( ) По началу тоже такое было несколько раз, но потом как-то взяло и обфусцировалось. И все последующие разы норм обфусцировалось.
Скрипты которые я ставил на продажу я вообще проектил, было нормально. Сейчас какой то трабл пошел. С Обфускатор я разобрался с исходным кодом от разработчика. Правда муторно если для большего кода, да и косяки есть.
|
|
|
|
Rinat_Namazov |
Дата: Понедельник, 05.03.2018, 22:16 | Сообщение # 7
|
Боец
Сообщений: 122
Статус: Offline
|
Цитата Joni228 ( ) Скрипты которые я ставил на продажу я вообще проектил, было нормально. Проектил? Протектор может? Протектор не какого смысла не имеет, ведь вся проблема в движке, нужно его переделывать.
Цитата Joni228 ( ) Правда муторно если для большего кода, да и косяки есть. Если в функции повторяются переменные, если две и более одинаковые переменные используется тогда это конечно ломает весь код.
|
|
|
|
trenisk |
Дата: Пятница, 09.03.2018, 22:03 | Сообщение # 8
|
Любитель
Сообщений: 42
Статус: Offline
|
Ошибка Был код до этой штуки:
Код #MaxThreadsPerHotkey 3 :?c:/autoad:: :?c:.фгещфв:: autoad: #MaxThreadsPerHotkey 1 AntiCrash() ShowDialog("1", "Автоматическое обьявление", "Введите желаемое обьявления", "Выбрать") while (isDialogOpen()) { } aadd: if SmartLoop { SmartLoop := false return } SmartLoop := true Loop { Text := "{ffffff}Для остановки процесса нажмите F1" addChatMessage(text) sendchat("/ad " readString(hGTA, dwSAMP + 0x12D8F8, 256)" [pjr " getId() "]") sleep 900 if not SmartLoop break } return А стал
Код #MaxThreadsPerHotkey 3 :?c:/kf%fff@kfffk#ffk#ffff%f%k#kffkfkffkfk#%fkf%ffk#k#fkk#ffk#%@kffkfkfkfffkkfk#:: :?c:.фгещфв:: kffffkf@kffkfkfkfffkkfk#: #MaxThreadsPerHotkey 1 AntiCrash() ShowDialog("1", "Автоматическое обьявление", "Введите желаемое обьявления", "Выбрать") while (isDialogOpen()) { } f@fff@fff@ffk#kfk#f@kffkk#kf: if SmartLoop { SmartLoop := false return } SmartLoop := fkkfk%fkk#ffffk#fkk#ff%fkk%fff@fkkfkfk#fkk#ffffkf%#fkk%f@f@fkf@f@kfkfkfk#kfkf%f%kffkffkfk#fkkfkfk#%fff@kff@k#k#f@fff@fkkff@kf Loop { Text := "{ffffff}Для остановки процесса нажмите F1" addChatMessage(text) sendchat("/ad " readString(hGTA, dwSAMP + 0x12D8F8, 256)" [pjr " getId() "]") sleep 900 if not SmartLoop break } return
Сообщение отредактировал trenisk - Пятница, 09.03.2018, 22:19 |
|
|
|
Joni228 |
Дата: Пятница, 09.03.2018, 22:26 | Сообщение # 9
|
Бывалый
Сообщений: 314
Статус: Offline
|
Цитата trenisk ( ) Ошибка Был код до этой штуки: Код #MaxThreadsPerHotkey 3 :?c:/autoad:: :?c:.фгещфв:: autoad: #MaxThreadsPerHotkey 1 AntiCrash() ShowDialog("1", "Автоматическое обьявление", "Введите желаемое обьявления", "Выбрать") while (isDialogOpen()) { } aadd: if SmartLoop { SmartLoop := false return } SmartLoop := true Loop { Text := "{ffffff}Для остановки процесса нажмите F1" addChatMessage(text) sendchat("/ad " readString(hGTA, dwSAMP + 0x12D8F8, 256)" [pjr " getId() "]") sleep 900 if not SmartLoop break } return
А стал Код #MaxThreadsPerHotkey 3 :?c:/kf%fff@kfffk#ffk#ffff%f%k#kffkfkffkfk#%fkf%ffk#k#fkk#ffk#%@kffkfkfkfffkkfk#:: :?c:.фгещфв:: kffffkf@kffkfkfkfffkkfk#: #MaxThreadsPerHotkey 1 AntiCrash() ShowDialog("1", "Автоматическое обьявление", "Введите желаемое обьявления", "Выбрать") while (isDialogOpen()) { } f@fff@fff@ffk#kfk#f@kffkk#kf: if SmartLoop { SmartLoop := false return } SmartLoop := fkkfk%fkk#ffffk#fkk#ff%fkk%fff@fkkfkfk#fkk#ffffkf%#fkk%f@f@fkf@f@kfkfkfk#kfkf%f%kffkffkfk#fkkfkfk#%fff@kff@k#k#f@fff@fkkff@kf Loop { Text := "{ffffff}Для остановки процесса нажмите F1" addChatMessage(text) sendchat("/ad " readString(hGTA, dwSAMP + 0x12D8F8, 256)" [pjr " getId() "]") sleep 900 if not SmartLoop break } return
Ты так и не принял мой сурс который я тебе дал? Там короче какие обфукаторы поставишь, так и зашифрует.
|
|
|
|
trenisk |
Дата: Пятница, 09.03.2018, 22:52 | Сообщение # 10
|
Любитель
Сообщений: 42
Статус: Offline
|
Joni228, так ты мне скинул только ссылку на этот пост
|
|
|
|
Dworkin |
Дата: Четверг, 15.03.2018, 22:16 | Сообщение # 11
|
Боец
Сообщений: 110
Статус: Offline
|
Тестировал этот обфускатор. Не обфуцирует классы. Хотя может надо что-то дополнительное указывать? И еще есть такой код:
Код colItems := objWMIService.ExecQuery("SELECT * FROM Win32_LogicalDisk")._NewEnum после обфускации он превращается примернов это:
Код asdu%%151asd := &6^%&!*AS.ExecQuery(AS*D*&ASjSADU)._NewEnum Если я вручную указываю обфуцировать ExecQuery, то скрипт выдает ошибку что мол с точкой что-то не так. То есть точкой между &6^%&!*AS и ExecQuery
|
|
|
|
Rinat_Namazov |
Дата: Четверг, 15.03.2018, 22:24 | Сообщение # 12
|
Боец
Сообщений: 122
Статус: Offline
|
Цитата Dworkin ( ) Тестировал этот обфускатор. Не обфуцирует классы. Хотя может надо что-то дополнительное указывать? Возможно, не особо интересовался какие у него опции указывать надо. Ну есть такая проблема, если указывать что нужно обфусцирвовать переменную testvar И даже если она будет в функциях/классах, он ее тоже обфусцирует и в итоге хрень выходить.
Цитата Dworkin ( ) И еще есть такой код: Код colItems := objWMIService.ExecQuery("SELECT * FROM Win32_LogicalDisk")._NewEnum
после обфускации он превращается примернов это: Код asdu%%151asd := &6^%&!*AS.ExecQuery(AS*D*&ASjSADU)._NewEnum
Если я вручную указываю обфуцировать ExecQuery, то скрипт выдает ошибку что мол с точкой что-то не так. То есть точкой между &6^%&!*AS и ExecQuery Ну анализировать код довольно сложно, в самом движке, частично анализ идет по словам, а где-то по символьно проверяет и т.д. Я сам запарился когда хотел переводить AHK код в байт-код, в движке то изи переделать, а транслировать код гемор, и в итоге забил.
|
|
|
|