Посл.ответ |
Сообщение |
![](img/s8.gif) Ранг: 673.3 (! !), 400thx Активность: 0.4↘0.31 Статус: Участник CyberMonk
|
Создано: 04 декабря 2008 18:02 · Поправил: Модератор · Личное сообщение · #1
![](img/smilies/s1.gif) Какие есть методы по борьбе с обфускацией ? Цель написать анализатор заменяющий 10 обфусцированных команд в одну настоящую. Для этого наверное нужно делить по блокам , а потом уже в них искать смысл и изменения. Бывает что между командами лежит просто мусор , который даже не используется =) Поэтому пока что эту часть я хочу просто опустить .. и отследить одну команду выполненую 10 или более команд без изменения смысла той самой одной.
У кого нить есть информация с РАН фаха Кибернетики ? Там професора пишут ух какие тексты.
----- RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube | Сообщение посчитали полезным: |
|
![](img/s7.gif) Ранг: 355.4 (мудрец), 55thx Активность: 0.32↘0 Статус: Uploader 5KRT
|
Создано: 04 декабря 2008 19:06 · Личное сообщение · #2
Информация о создании обфускатора на основе макросов в masm'е правда для таблицы импорта
interpol.blog.ru/
мб чем-то полезно.
----- Gutta cavat lapidem. Feci, quod potui. Faciant meliora potentes | Сообщение посчитали полезным: |
Ранг: 162.4 (ветеран), 11thx Активность: 0.06↘0 Статус: Участник
|
Создано: 04 декабря 2008 19:27 · Личное сообщение · #3
Обычно обфускация табличная. Надо тока востановать эту таблицу и проделать все обратно. (регистры могут быть разные)
| Сообщение посчитали полезным: |
![](img/s8.gif) Ранг: 673.3 (! !), 400thx Активность: 0.4↘0.31 Статус: Участник CyberMonk
|
Создано: 04 декабря 2008 19:33 · Личное сообщение · #4
может быть =) но это руками надо делать , а я о програмном методе фиксирующем изменения логики масивов из кода
----- RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube | Сообщение посчитали полезным: |
![](img/s5.gif) Ранг: 126.7 (ветеран) Активность: 0.14↘0 Статус: Участник #CCh
|
Создано: 04 декабря 2008 21:24 · Личное сообщение · #5
mak пишет:
Цель написать анализатор заменяющий 10 обфусцированных команд в одну настоящую.
mak пишет:
я о програмном методе фиксирующем изменения логики масивов из кода
а в чем проблема? если именно из 10 команд, именно 1, то проверь как изменились регистры и пр., одна команда - это не 5 обфусцированных.. или конкретней объясни что нужно
----- invoke OpenFire | Сообщение посчитали полезным: |
![](img/s8.gif) Ранг: 673.3 (! !), 400thx Активность: 0.4↘0.31 Статус: Участник CyberMonk
|
Создано: 04 декабря 2008 21:50 · Личное сообщение · #6
10 примерное число , может быть 50 или меньше, все описано выше , ничего большего не надо. Важный момент пропустил , это определение начала и конца действия в массиве обфусцированных данных той самой одной команды. Вот
----- RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube | Сообщение посчитали полезным: |
Ранг: 481.4 (мудрец), 109thx Активность: 0.18↘0 Статус: Участник Тот самый :)
|
Создано: 05 декабря 2008 15:02 · Поправил: Hexxx · Личное сообщение · #7
Как я себе представляю деобфускацию:
берем обфусцированный код и команда в команду транслируем его в сишный код.
Типа было:
mov eax, 0x10
mov ecx, 0x40
sub ecx, eax
mov ebx, ecx
Транслируем в си:
unsigned long eax,ebx,ecx;
eax=0x10;
ecx=0x40;
ecx-=eax;
ebx=ecx;
далее компилируем полученый сишный код любым нормальным оптимизирующим компилером с включенной полной оптимизацией.
На выходе получаем бинарь в котором:
mov ebx, 0x30
Занимаемся анализом нового бинаря где все просто и уютно.
----- Реверсивная инженерия - написание кода идентичного натуральному | Сообщение посчитали полезным: |
![](img/s6.gif) Ранг: 209.5 (наставник), 42thx Активность: 0.1↘0 Статус: Участник WinCE ARM M@sTeR
|
Создано: 05 декабря 2008 16:07 · Личное сообщение · #8
Ога, предложение Hexxx верное, только по умному это достигается через всякие SSA и dead code elimination, что и делает компилер с оптимизацией
----- Get busy living or get busy dying © | Сообщение посчитали полезным: |
![](img/s8.gif) Ранг: 673.3 (! !), 400thx Активность: 0.4↘0.31 Статус: Участник CyberMonk
|
Создано: 05 декабря 2008 18:03 · Личное сообщение · #9
![](img/smilies/s1.gif) спасибо , уже есть направление куда смотреть
----- RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube | Сообщение посчитали полезным: |
Ранг: 13.7 (новичок) Активность: 0.02↘0 Статус: Участник
|
Создано: 05 декабря 2008 18:05 · Личное сообщение · #10
А ассемлерного оптимизирующего компилятора нет? А то есть длинный кусок кода, на С оччень долго траслировать. Хотя способ классный. Но, как я понимаю, лишних временных переменных, например, сишный компилятор не уберет?
| Сообщение посчитали полезным: |
Ранг: 210.5 (наставник), 2thx Активность: 0.14↘0 Статус: Участник
|
Создано: 05 декабря 2008 18:20 · Личное сообщение · #11
XoDeR пишет:
А то есть длинный кусок кода, на С оччень долго траслировать.
Попробуй HexRays
| Сообщение посчитали полезным: |
Ранг: 13.7 (новичок) Активность: 0.02↘0 Статус: Участник
|
Создано: 05 декабря 2008 19:00 · Личное сообщение · #12
HexRays почему-то не хавает команды fpu (типо fsin), пишет такие команды в asm-блоке, добавляет какие-то непонятные макросы (__MKCSHR__ -аналог асмового shr ). и полученый с-код надо еще долго править, чтобы скомпилился. Может кто сталкивался с такими задачами, подскажите как сделать эффективнее и быстрее.
| Сообщение посчитали полезным: |
![](img/s8.gif) Ранг: 673.3 (! !), 400thx Активность: 0.4↘0.31 Статус: Участник CyberMonk
|
Создано: 05 декабря 2008 19:04 · Личное сообщение · #13
![](img/smilies/s1.gif) задача стоит не ручная , а програмная , поэтому хексрэйс в баню)))
У меня есть оптимизатор на АСМЕ , но без исходников , нужно его разобрать ![](img/smilies/s2.gif) и глянуть что там. 7591_05.12.2008_CRACKLAB.rU.tgz - opti1.zip
----- RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube | Сообщение посчитали полезным: |
![](img/s5.gif) Ранг: 154.2 (ветеран), 66thx Активность: 0.08↘0 Статус: Участник REVENGE Crew
|
Создано: 05 декабря 2008 23:51 · Поправил: kioresk · Личное сообщение · #14
Hexxx пишет:
берем обфусцированный код и команда в команду транслируем его в сишный код.
Транслировать в сишный код не обязательно, тем более что иногда перевести алго на си автоматом без ручного вмешательства не получается.
Когда копал Code Virtualizer'а, то попалась интересная статья http://www.woodmann.com/forum/showthread.php?t=12015 об оптимизации обфуцированного кода хендлов ее вм.
Там для разбора обфуцированного кода применяется набор синтаксических правил, описанный в формате BNF.
Выгода в том, что не надо самому писать код, анализирующий команды. Т.е. описывается набор правил по которым в дальнейшем автоматом генерируется код, разбирающий их.
Поэтому, хоть что именно ты ковыряешь и не знаю, но имхо может лучше копать в эту сторону.
| Сообщение посчитали полезным: |
![](img/s8.gif) Ранг: 673.3 (! !), 400thx Активность: 0.4↘0.31 Статус: Участник CyberMonk
|
Создано: 06 декабря 2008 00:04 · Личное сообщение · #15
kioresk оч интересно , как раз по теме ты )))
P.S. выше оптимизатор работает только в директории масма , на нем лежит пекомпакт , вот унпаченная версия , кому интересно 4fe7_05.12.2008_CRACKLAB.rU.tgz - opti_unpacked.exe
----- RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube | Сообщение посчитали полезным: |
![](img/s8.gif) Ранг: 673.3 (! !), 400thx Активность: 0.4↘0.31 Статус: Участник CyberMonk
|
Создано: 06 декабря 2008 01:23 · Личное сообщение · #16
Немного инфы по формату BNF - включено Appendix B BNF Grammar для МАСМ и Описание стандарта ISO/IEC 14977:1996(E) Extended BNF
Надо только разобрать , или оптимизировать для универсальности не только к Code Virtualizer , для этого данные бнф формата и понадобятся. Хотя по идее должно быть и для другого подходяще 65cb_05.12.2008_CRACKLAB.rU.tgz - bnf.rar
----- RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube | Сообщение посчитали полезным: |
![](img/s5.gif) Ранг: 154.2 (ветеран), 66thx Активность: 0.08↘0 Статус: Участник REVENGE Crew
|
Создано: 06 декабря 2008 13:27 · Личное сообщение · #17
Ну универсальным сделать врядли получиться, т.к. у разных протов разные наборы обфуцированных комманд, и все возможные варианты описывать устанешь, хотя основные принципы одни и те же.
Там в конце статьи прикреплен архив с исходниками подобного оптимизатора, посмотри их, если не заметил.
| Сообщение посчитали полезным: |
![](img/s8.gif) Ранг: 673.3 (! !), 400thx Активность: 0.4↘0.31 Статус: Участник CyberMonk
|
Создано: 06 декабря 2008 13:52 · Личное сообщение · #18
заметил конечно ) мой глаз видит то что не нужно ))
Варианты может да , но можно составить таблицы разныйх варинтов , в них выявить общие направления , далее не что остались вынести в дополнительный анализ, то есть детектить по сигнатуре но особым образом и потом уже использовать маленькое дополнение , тоесть остаток табличный.
----- RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube | Сообщение посчитали полезным: |
![](img/s5.gif) Ранг: 192.7 (ветеран), 154thx Активность: 0.07↘0 Статус: Участник The ONE
|
Создано: 06 декабря 2008 19:27 · Личное сообщение · #19
Может на основе графов сделать - принцип как у работы антивиря - на основе кода строится графы и при анализе отсеиваются замыкающиеся - таким способом отсеиваем бесполезный код.
----- Сотрудник DHARMA | Сообщение посчитали полезным: |
Ранг: 481.4 (мудрец), 109thx Активность: 0.18↘0 Статус: Участник Тот самый :)
|
Создано: 07 декабря 2008 14:28 · Личное сообщение · #20
TrueLies пишет:
Может на основе графов сделать - принцип как у работы антивиря - на основе кода строится графы и при анализе отсеиваются замыкающиеся - таким способом отсеиваем бесполезный код.
Если метаморф - не проканает.
----- Реверсивная инженерия - написание кода идентичного натуральному | Сообщение посчитали полезным: |
![](img/s8.gif) Ранг: 527.7 (!), 381thx Активность: 0.16↘0.09 Статус: Участник Победитель турнира 2010
|
Создано: 08 декабря 2008 13:38 · Личное сообщение · #21
Вопрос общий для реверсинга протекта и малвары.
И если заниматься вопросами деобфускации не на коленке, то стоит имхо обратить внимание
на работы бельгийских товарищей diablo.elis.ugent.be/obfuscation и Red Team (Riverside Research Institute).
Вот кусок предлагающейся по вопросу топика инфы rapidshare.com/files/171388363/deobfus.ZIP.html
----- 127.0.0.1, sweet 127.0.0.1 | Сообщение посчитали полезным: |
![](img/s8.gif) Ранг: 673.3 (! !), 400thx Активность: 0.4↘0.31 Статус: Участник CyberMonk
|
Создано: 08 декабря 2008 14:50 · Личное сообщение · #22
OKOB ![](img/smilies/s1.gif) СэнкЮ интересно
----- RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube | Сообщение посчитали полезным: |
Ранг: 352.4 (мудрец), 4thx Активность: 0.15↘0 Статус: Участник retired
|
Создано: 08 декабря 2008 17:12 · Личное сообщение · #23
OKOB
когда я в последний раз смотрел эту поделку бельгийских товарищей, она даже не собиралась. сейчас все лучше?
| Сообщение посчитали полезным: |
![](img/s9.gif) Ранг: 2014.5 (!!!!), 1278thx Активность: 1.34↘0.25 Статус: Модератор retired
|
Создано: 08 декабря 2008 22:15 · Личное сообщение · #24
Лично я где-то года 2 назад честно и безуспешно пробовал слить и собрать. Судя по тому, что последняя версия года 2005, не изменилось ничего.
| Сообщение посчитали полезным: |
![](img/s8.gif) Ранг: 673.3 (! !), 400thx Активность: 0.4↘0.31 Статус: Участник CyberMonk
|
Создано: 27 декабря 2008 16:31 · Личное сообщение · #25
![](img/smilies/s1.gif) скомпильте ПЛЗ , у меня нет всех нужных хидеров , как всегда вообщем. Компилнг с выводом асм листинга пожалуста и без всяких проверок стэка и всяких других вещей. чисто исходник и все. Сэнкс 0032_27.12.2008_CRACKLAB.rU.tgz - oreans.rar
----- RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube | Сообщение посчитали полезным: |
Ранг: 352.4 (мудрец), 4thx Активность: 0.15↘0 Статус: Участник retired
|
Создано: 28 декабря 2008 14:36 · Личное сообщение · #26
mak
там не в хедерах дело - тебе нужны flex/bison/gcc под винду чтобы это собрать
| Сообщение посчитали полезным: |
Ранг: 101.0 (ветеран), 344thx Активность: 1.15↘0 Статус: Участник
|
Создано: 28 декабря 2008 15:56 · Личное сообщение · #27
Нужен компилятор yacc
| Сообщение посчитали полезным: |
![](img/s8.gif) Ранг: 673.3 (! !), 400thx Активность: 0.4↘0.31 Статус: Участник CyberMonk
|
Создано: 28 декабря 2008 16:41 · Личное сообщение · #28
Вот начинается ![](img/smilies/s1.gif) Си же универсален .. ![](img/smilies/s13.gif) Спасибо попробую
----- RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube | Сообщение посчитали полезным: |
Ранг: 101.0 (ветеран), 344thx Активность: 1.15↘0 Статус: Участник
|
Создано: 28 декабря 2008 19:25 · Поправил: progopis · Личное сообщение · #29
mak пишет:
Си же универсален
А кто тебе сказал что там Си? Он там есть, но не всё:
GCC у меня и так стоял. Соберу остальное - попробую скомпилить.
Добавлено:
Перевожу на русский: не хватает двух файлов - y.tab.c и y.tab.h
Добавлено:
А ещё заявлют о полной совместимости между Bison и YACC... Bison генерит файл parser.asm.tab.c, а должен y.tab.c
Ну допустим переименовал. Вторая проблема - параметр -lfl. Он отвечает за линковку файла вместе со статической библиотекой flex'а, только вот линковщик этот параметр не знает...
| Сообщение посчитали полезным: |
Ранг: 352.4 (мудрец), 4thx Активность: 0.15↘0 Статус: Участник retired
|
Создано: 28 декабря 2008 22:15 · Личное сообщение · #30
progopis пишет:
Он отвечает за линковку файла вместе со статической библиотекой flex'а, только вот линковщик этот параметр не знает...
проверь, может ли линкер до либы дотянуться (libfl.a)
| Сообщение посчитали полезным: |