Сейчас на форуме: -Sanchez- (+8 невидимых) |
eXeL@B —› Основной форум —› Деобфускация асм кода |
Посл.ответ | Сообщение |
|
Создано: 30 апреля 2017 23:26 · Поправил: v00doo · Личное сообщение · #1 Понадобилось набросать деобфускатор кода (самого стандартного), ранее не писал ничего подобного, а под x64 ничего нормального не нашлось. Если у кого есть какая информация, менее водянистая, чем большая часть статей с очевидными вещами про управление потоком или чисткой блоков. Допустим паттерны можно набросать (да их будет много в итоге) против фейковых call'ов и жампов, но возникает вопрос про организацию сворачивания кода с вычислениями значений тех же регистров, например: SUB EAX,10345678 AND EAX,10345678 XOR EAX,DEADC0DE могут же быть размыты по коду... Может уже давно существуют алгоритмы на основе каких-нибудь графов, а может еще у кого-то есть сырцы codedoctor (хотя, конечно же нет) или может кто-то реверсил? (я в курсе про шаблоны, но о процессе обработки там не в курсе). В общем любая информация приветствуется. Ps Огромная просьба, НЕ ПИСАТЬ в тему про моторы и прочие вещи, недоступные для понимания простым и глупым смертным, ибо з**ло в каждой теме это говно. |
|
Создано: 30 апреля 2017 23:51 · Поправил: difexacaw · Личное сообщение · #2 v00doo > Огромная просьба, НЕ ПИСАТЬ в тему про моторы и прочие вещи, недоступные для понимания простым и глупым смертным Улыбнуло, спс Это делается в несколько этапов. На первом этапе происходит абстрагирование от машкода и выделение его структуры - описание графом. Получаются многоуровневые списки, которые описывают ветви - связи между блоками кода. На втором этапе выполняется выделение данных в граф - связываются источники и приёмники данных, выделяются операции. В отличии от первого этапа данная операция весьма сложна. На третьем этапе используется семантический и прочий разбор - солверы. Это очень сложное всё. В виксах не используется декомпиляция из за её сложности. Обычно достаточно первых двух этапов, далее с описателями можно выполнять любые действия и использовать шаблны. Поэтому следует выбрать вариант решения наиболее простой, доступный. ----- vx |
|
Создано: 01 мая 2017 00:01 · Личное сообщение · #3 v00doo в этой теме | Сообщение посчитали полезным: v00doo |
|
Создано: 01 мая 2017 00:06 · Личное сообщение · #4 Тут можно накопать множество инфы по автоматике Но там всякие LLVM, выносящая мозг матчасть, поэтому врядле вам это нужно. Я бы это не стал рассматривать. Добавлено спустя 8 минут v00doo Могу привести вам пример свёртки кода, используя только конструктор(первый этап). Следует заметить что не используются абстрактые шаблона - хардкод, что не есть хорошо, хоть и работает. c34f_01.05.2017_EXELAB.rU.tgz - Int29.rar ----- vx |
|
Создано: 01 мая 2017 00:16 · Поправил: dosprog · Личное сообщение · #5 |
|
Создано: 01 мая 2017 00:28 · Личное сообщение · #6 |
|
Создано: 01 мая 2017 00:33 · Поправил: difexacaw · Личное сообщение · #7 Это проблемы не алгоритмов - разбором кода занимается дизасм, ксед к примеру. Проблема в том, что не удаётся после абстрагирования(декомпиляции) применить шаблоны. dosprog прав, на коленке это реализовать не получится. Тем более что тс это нужно с нуля сделать, без использования моторов Задача оверхед. ----- vx |
|
Создано: 01 мая 2017 00:53 · Личное сообщение · #8 |
|
Создано: 01 мая 2017 00:53 · Поправил: reversecode · Личное сообщение · #9 было несколько деобфускаторов один для ида, на питоне, автор помоему его давно забросил, если есть познания в питоне то mirror ДО ПОСЛЕ основная идея деобфускатора(ов) загнать асм код в асм компилер, а компилер его прооптимизирует, выбросит все ненужное и дальше показать дизасм из того что собрал компилер был еще такой плаг как ariadne но по моему он не взлетел хотя авторы тогда на форуме показывали оптимистические результаты, даже чего то там на VMP намекали.. но если обфускация статическая, то ее проще снять по шаблону, тех инструкций которыми замусорили | Сообщение посчитали полезным: v00doo |
|
Создано: 01 мая 2017 00:56 · Личное сообщение · #10 |
|
Создано: 01 мая 2017 01:08 · Личное сообщение · #11 эту свертку делает любой компилятор(оптимизатор его) поэтому сейчас активно выбираются спецы со знанием llvm внутренностей некоторые деобфускаторы построенны на llvm, на гитхабе можно найти но все они теоретиеские, т.е. нужно подтачивать под свою задачу помню llvm+qemu деобфускатор, ... тоже где то на гитхабе есть но готовых утилит с одной готовой кнопочкой - "сделать зашибись", конечно нет, может в приватах ... в секьюрити конторах выпилинных для себя |
|
Создано: 01 мая 2017 01:21 · Поправил: -=AkaBOSS=- · Личное сообщение · #12 v00doo dosprog пишет: стоит задуматься хотя бы о разборе такого типа конструкций ну на любой анализатор можно придумать хитрую конструкцию, которая заставит его споткнуться. даже мусорных ветвлений не надо, хватит и банальной самомодификации типа Code:
паттерны это не настолько плохая идея, чтобы сразу её отметать - хотя бы часть кода получится упростить для понимания, а потом уже можно думать дальше. Со временем придёт понимание, что нужно хранить состояние регистров и эмулировать выполнение команд, чтобы определять возможную самомодификацию и предсказывать ветвления. Но до этого еще надо дорасти) | Сообщение посчитали полезным: v00doo |
|
Создано: 01 мая 2017 01:32 · Поправил: dosprog · Личное сообщение · #13 -=AkaBOSS=- пишет: хватит и банальной самомодификации типа Плохо с точки зрения состояния исходного текста. С ним неудобно работать. Фишка обфускации в том, чтобы программа оставалась читаемой и модифицируемой, в исходном виде, но дизассемблировать её было трудно. Всё это очень индивидуально для каждой конкретной программы. Поняв в чём подлость, можно с нею попытаться бороться. Но иногда остаётся только ругаться. И часто программы, хитромудро загаженные, ничего особо эксклюзивного, кроме загаженности, из себя не представляют, можно пользоваться альтернативным софтом. --Добавлено-- ) Вот, для тестирования будущего деобфускатора, "тряпка" : 6c0d_01.05.2017_EXELAB.rU.tgz - DUMMY.EXE |
|
Создано: 01 мая 2017 01:41 · Поправил: v00doo · Личное сообщение · #14 VT-x пишет: --> Про кодетоктор <-- Я не настолько тупой, чтобы я не мог погуглить. -=AkaBOSS=- пишет: ну на любой анализатор можно придумать хитрую конструкцию, которая заставит его споткнуться. даже мусорных ветвлений не надо, хватит и банальной самомодификации типа Именно так, для того, что под исследованием пока с головой хватает паттернов. dosprog, приписка в шапке темы для кого? VT-x касается тоже самое. reversecode пишет: основная идея деобфускатора(ов) загнать асм код в асм компилер, а компилер его прооптимизирует, выбросит все ненужное и дальше показать дизасм из того что собрал компилер Именно о подобном подумывал, спасибо за сырцы, я сгуглил поменьше так-то, в общем-то мне нужна как раз именно эта часть (идея). dosprog пишет: Вот, для тестирования будущего деобфускатора, "тряпка" У меня есть своя, я лишь хотел собрать материала чтобы автоматизировать это менее уродливо, чем я бы мог с наскоку это пытаться делать, я не собираюсь делать революций. |
|
Создано: 01 мая 2017 01:46 · Поправил: dosprog · Личное сообщение · #15 v00doo пишет: приписка в теме для кого? ) Наверно, то ты для себя "набросал", не знаю. Вон, в прошлом посте возьми DUMMY.EXE и попытайся орудовать паттернами. ) О графах и моторах то уже будет после v00doo пишет: я лишь хотел собрать материала чтобы автоматизировать это менее уродливо Задача не решается автоматически в принципе, что бы там кто ни говорил. |
|
Создано: 01 мая 2017 01:49 · Поправил: v00doo · Личное сообщение · #16 |
|
Создано: 01 мая 2017 01:51 · Поправил: dosprog · Личное сообщение · #17 |
eXeL@B —› Основной форум —› Деобфускация асм кода |
Эта тема закрыта. Ответы больше не принимаются. |