Русский / Russian English / Английский

Сейчас на форуме: Vicshann (+1 невидимый пользователь)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS ·

 eXeL@B —› Софт, инструменты —› DISJumping
<< . 1 . 2 .
Посл.ответ Сообщение

Ранг: 18.4 (новичок)
Статус: Участник

Создано: 30 марта 2007 13:03 New!
Цитата · Личное сообщение · #1

Не подскажете прогу (или idc) для приведения за-jmp-енного кода к читабельному виду?
Или инфу чтоб сделать анализатор...
работоспособнасть ненужна - главное чтоб изучать можно было без бессмысленных переходов
вручную собирать код уже достало



Ранг: 213.5 (наставник)
Статус: Участник
забанен

Создано: 31 марта 2007 02:20 New!
Цитата · Личное сообщение · #2

AlCr0 пишет:
В принципе ведь цель пока - получать корректный и читаемый листинг, а не работоспособный код.

http://exelab.ru/f/index.php?action=vthread&forum=7&topic=7355




Ранг: 528.7 (!)
Статус: Участник
Победитель турнира 2010

Создано: 31 марта 2007 15:19 New!
Цитата · Личное сообщение · #3

Попробуй мой ИДЦ скрипт. Когда-то писал для себя уже не помню для какой проги. Прыгает по коротким джампам с выводом в лог. Как помню был один трабл связаный с ИДОВЫМ движком - неправильно выводятся команды работы со строками и их префиксы (movsb, movsd, setb...). И скрипт заточеный именно под НОВЕКС, когда-то копался.

{ Атач доступен только для участников форума } - NOVEX.rar



Ранг: 18.4 (новичок)
Статус: Участник

Создано: 02 апреля 2007 08:32 New!
Цитата · Личное сообщение · #4

Пока еще ненаучил распознавать возможные варианты завермишеленых циклов... - есть такие, что вываливаются "в развернутом виде"
Доделаю - пока вопрос времени.

Demon666 спс за ссыль!
поиском я в нее не попал - другие кейворды просил искать

OKOB спс! побыстрому подправил твой скрипт под мусор с длинными прыжками
то что доктор прописал!
пока правда тоже бяка с циклами... надо топик почитать и научить

OKOB пишет:
неправильно выводятся команды работы со строками и их префиксы (movsb, movsd, setb...).

в пятой вроде все нормуль.

OKOB пишет:
... заточеный именно под НОВЕКС, когда-то копался.

тож ковырялся. все просто оказалось. когда разобрался - так стало жалко времени на вермишель -
я "в отместку" прямо в драйвер эмулятор засунул - до сих пор наверно где-то сам себя "в попу" клюет



Ранг: 18.4 (новичок)
Статус: Участник

Создано: 05 апреля 2007 08:35 New!
Цитата · Личное сообщение · #5

Подскажите: как в IDA средствами IDC определить какому адресному пространству принадлежит адрес? (если есть такая возможность без отладки)
например для dll - как определить находится ли данный dword в текущей dll или это замаскированный переход в другую, или точка возврата в вызвавший процесс?
про системные можно не писать - там все понятно



Ранг: 5.6 (гость)
Статус: Участник

Создано: 05 апреля 2007 14:32 New!
Цитата · Личное сообщение · #6

AlCr0,

Может мой старый скриптик сгодится. Писал для себя, когда занимался Гуардантом. За код не ругать, т.к. он написан в 2003 году и этом мой первый скрипт для Иды.

Скрипт пробегает по текущей функции (начиная с позиции курсора) и выводит в консоль чистый код.

Из косяков, насколько помню, скрипт не обрабатывал табличные переходы, вроде:

jmp dword ptr [offset+x]

offset dd 1
dd 2
dd 3


{ Атач доступен только для участников форума } - deNovex.idc



Ранг: 18.4 (новичок)
Статус: Участник

Создано: 06 апреля 2007 14:06 New!
Цитата · Личное сообщение · #7

xlETO
спс! учту все полезности

xlETO пишет:
не обрабатывал табличные переходы

как раз занимаюсь обработкой таких переходов

только закончил лекарство от всяких "фиктивных" точек возврата

push offset_XXXXXXXX
retn


Тут исчо зосада - переход через SEH, довольно откровенно. такой тож для анализатора лишним не будет

времени вот не хватает - медленно получается




Ранг: 353.0 (мудрец)
Статус: Участник
resreveR

Создано: 06 апреля 2007 15:04 New!
Цитата · Личное сообщение · #8

универсально сехи думаю не сможешь анализировать.. сколько там всего вариантов?



Ранг: 18.4 (новичок)
Статус: Участник

Создано: 06 апреля 2007 15:20 · Поправил: AlCr0 New!
Цитата · Личное сообщение · #9

пока только один вижу:


002F10A0 C2 0C00 RETN 0C ;в стеке - 00000000, попадаем в SEH и на расконопаченный код


соседние ветки кода пока в переходах - надо дописать обработку условных переходов
сорри за тафтологию




Ранг: 353.0 (мудрец)
Статус: Участник
resreveR

Создано: 06 апреля 2007 15:48 New!
Цитата · Личное сообщение · #10

AlCr0
ну..насколкьой я понял ты о местах вида
1. ставим сех
2. вызываем исключение
3. убираем сех, ровняем стэк и продолжаем

еще же может быть и модификация еип/регистров в сехе и т.д... сильно много вариантов =(



Ранг: 18.4 (новичок)
Статус: Участник

Создано: 06 апреля 2007 16:33 New!
Цитата · Личное сообщение · #11

lord_Phoenix пишет:
модификация еип/регистров в сехе

надо будет потом... на примерах разобрать

lord_Phoenix
стоит/нет калькулятор стека писать?
например чтоб определять - куда данный возврат возможен
или чтоб потом можно было определять занесение/изменение/ использование стекового мусора
да... много чего



Ранг: 18.4 (новичок)
Статус: Участник

Создано: 06 апреля 2007 16:34 New!
Цитата · Личное сообщение · #12

ЗЫ хотя, что я спрашиваю - так-то не долго добавить...



Ранг: 213.5 (наставник)
Статус: Участник
забанен

Создано: 06 апреля 2007 18:45 New!
Цитата · Личное сообщение · #13

AlCr0
Я вот не пойму, тебе для самопознания нужно это или чем тебя не устаревает мой плагин к ольке?
То, что ты пытаешься сделать – мой плагин почти все это умеет делать, единственное я не добавил в паблик версию эмуляцию в реальном времени RET`а, там тупо заглушка стоит…
Ты можешь в любой момент включать/выключать запись в лог, настроек всяких много – че в плагине ни так как тебе хочется???




Ранг: 353.0 (мудрец)
Статус: Участник
resreveR

Создано: 06 апреля 2007 18:53 New!
Цитата · Личное сообщение · #14

Demon666
причем здесь лог? деобфускатор надо



Ранг: 213.5 (наставник)
Статус: Участник
забанен

Создано: 06 апреля 2007 21:13 New!
Цитата · Личное сообщение · #15

Хм… ну дык в плуге это реализовано… причем всего лишь двумя опциями и никакого мусора нет…

P. S.
lord_Phoenix
Удали все мои посты из этой темы, чтобы не позориццо




Ранг: 353.0 (мудрец)
Статус: Участник
resreveR

Создано: 06 апреля 2007 21:47 New!
Цитата · Личное сообщение · #16

Demon666
хм, твой плуг сам вписывает деобфусцирвоанный код обратно? или дает какую возможность =)
вообщем я запутался =)
AlCr0 пишет:
ЗЫ хотя, что я спрашиваю - так-то не долго добавить...

добавляй!



Ранг: 213.5 (наставник)
Статус: Участник
забанен

Создано: 07 апреля 2007 13:33 New!
Цитата · Личное сообщение · #17

lord_Phoenix
Ну и я не пойму чего ты хочешь…
Берем аттач, грузим в Олю, там ДЛЯ ПРИМЕРА есть экспортируемая функа InitProtApp
Переходим на ее начало, в Оле давим New origin here
Меню->Options->Debugging options->Trace->Always trace over system DLLs
в плуге галочки на
Address
Command
String
Comments
Anti PREFIX
Kill jmp 0; значение ноль запрещает вообще запись в лог любых jmp/jcc подобных команд

Trace into (Ctrl+F11) ждем немного и Esc, все…
Открываем лог, который плуг записал и видим что, нет ни одного jmp/jcc
Далее скролим чуть ниже и видим “декрипто”
00381C94 XOR EDX,EDX
EDX=00000000
00382E34 DIV EDI
EAX=00002BF6 EDX=00001F7A
00383236 MOV ECX,DWORD PTR DS:[ESI+EDX]
ECX=A200000F
0038280B ADD DWORD PTR SS:[EBP-4],ECX Stack SS:[0006F890]=ED894F5F
0038358B INC EBX
EBX=00000020
003814B4 CMP EBX,DWORD PTR SS:[EBP+8]
0038266E CALL 00386F51
003865FF PUSH EBP
00386A81 MOV EBP,ESP
EBP=0006F87C
00386598 PUSH EBX
00386CCB PUSH ESI
00386A72 PUSH EDI
00386CE7 MOV EBX,003B68FC
EBX=003B68FC
00386F90 MOV ESI,003B6900
ESI=003B6900
00386715 MOV EDI,003B68F8
EDI=003B68F8
00386A55 PUSH DWORD PTR DS:[ESI] DS:[003B6900]=68EC25F8
003869C3 PUSH DWORD PTR DS:[EBX] DS:[003B68FC]=6DD118F6
003862AF CALL 003B1B48
003B1B48 MOV EAX,DWORD PTR SS:[ESP+4]
EAX=6DD118F6
003B1B4C MOV ECX,DWORD PTR SS:[ESP+8]
ECX=68EC25F8
003B1B50 ROL EAX,CL
EAX=F66DD118
003B1B52 RETN
003862C4 ADD ESP,8
00386CFA MOV EDX,DWORD PTR DS:[3B68F4]
EDX=0B2AECD4
00386F39 IMUL EDX,DWORD PTR DS:[ESI]
EDX=79401160
00386671 MOV ECX,DWORD PTR DS:[EDI]
ECX=78F5F732
00386685 SUB ECX,EDX
ECX=FFB5E5D2
00386507 XOR EAX,ECX
EAX=09D834CA
003866C4 XOR EAX,15071970
EAX=1CDF2DBA
003867F5 MOV DWORD PTR DS:[ESI],EAX DS:[003B6900]=1CDF2DBA
00386FBF PUSH DWORD PTR DS:[EDI] DS:[003B68F8]=78F5F732
0038638C PUSH DWORD PTR DS:[ESI] DS:[003B6900]=1CDF2DBA
00386C27 CALL 003B1B48
003B1B48 MOV EAX,DWORD PTR SS:[ESP+4]
003B1B4C MOV ECX,DWORD PTR SS:[ESP+8]
ECX=78F5F732
003B1B50 ROL EAX,CL
EAX=B6E8737C
003B1B52 RETN
0038643A ADD ESP,8
003869CB IMUL DWORD PTR DS:[EBX] DS:[003B68FC]=6DD118F6
EAX=A26E9928 EDX=E0A545D1
003869F1 MOV EDX,DWORD PTR DS:[3B68F4]
EDX=0B2AECD4
00386B2C ADD EDX,DWORD PTR DS:[EBX]
EDX=78FC05CA
0038661C XOR EAX,EDX
EAX=DA929CE2
0038664A XOR EAX,23021964
EAX=F9908586
00386788 MOV DWORD PTR DS:[EBX],EAX DS:[003B68FC]=F9908586
00386AB1 PUSH DWORD PTR DS:[EBX] DS:[003B68FC]=F9908586
0038634D PUSH DWORD PTR DS:[3B68F4] DS:[003B68F4]=0B2AECD4
003864BE CALL 003B1B48
003B1B48 MOV EAX,DWORD PTR SS:[ESP+4]
EAX=0B2AECD4
003B1B4C MOV ECX,DWORD PTR SS:[ESP+8]
ECX=F9908586
003B1B50 ROL EAX,CL
EAX=CABB3502
003B1B52 RETN
00386B7E ADD ESP,8
00386ACA IMUL DWORD PTR DS:[EDI] DS:[003B68F8]=78F5F732
EAX=E39F4864 EDX=E6D49292
00386ACC PUSH 0038668D
00386AD1 RETN
0038668D MOV ECX,DWORD PTR DS:[ESI]
ECX=1CDF2DBA
00386D4E IMUL ECX,DWORD PTR DS:[EBX]
ECX=B233915C
00386262 SUB EAX,ECX
EAX=316BB708
00386D05 XOR EAX,5101971
EAX=347BAE79
00386CA2 MOV DWORD PTR DS:[EDI],EAX DS:[003B68F8]=347BAE79
0038676B PUSH DWORD PTR DS:[ESI] DS:[003B6900]=1CDF2DBA
003867E1 PUSH DWORD PTR DS:[EDI] DS:[003B68F8]=347BAE79
00386A14 CALL 003B1B48
003B1B48 MOV EAX,DWORD PTR SS:[ESP+4]
003B1B4C MOV ECX,DWORD PTR SS:[ESP+8]
ECX=1CDF2DBA
003B1B50 ROL EAX,CL
EAX=E4D1EEB9
003B1B52 RETN
0038639C ADD ESP,8
00386C55 IMUL DWORD PTR DS:[ESI] DS:[003B6900]=1CDF2DBA
EAX=56A4F76A EDX=FCEF4420
003865A7 MOV EDX,DWORD PTR DS:[3B68F4]
EDX=0B2AECD4
00386A65 IMUL EDX,DWORD PTR DS:[EBX]
EDX=90C21AF8
00386A3E ADD EAX,EDX
EAX=E7671262
00386F9B XOR EAX,11041938
EAX=F6630B5A
00386F67 MOV DWORD PTR DS:[3B68F4],EAX DS:[003B68F4]=F6630B5A
0038694A MOV EAX,DWORD PTR DS:[3B68F4]
00386B9B XOR EAX,DWORD PTR DS:[EDI]
EAX=C218A523
00386F83 POP EDI
EDI=0002A2C2
00386A6A POP ESI
ESI=00382300
003867AD POP EBX
EBX=00000020
0038633B POP EBP
EBP=0006F894
00386F58 RETN

Изучаем, все видно как на ладони, как преобразуются данные, куда пишутся, откуда считываются, если встретятся строки в регистрах плагин и их запишет, потратил несколько минут… короче я это вообще не считаю за какую-то защиту, это даже стремно вообще так называть.




Ранг: 353.0 (мудрец)
Статус: Участник
resreveR

Создано: 07 апреля 2007 13:38 New!
Цитата · Личное сообщение · #18

афаир топикстартер хотел или готовый деобфускатор или скрипт для иды..а не просто лог выполнения получить



Ранг: 213.5 (наставник)
Статус: Участник
забанен

Создано: 07 апреля 2007 14:05 New!
Цитата · Личное сообщение · #19

AlCr0 пишет:
Не подскажете прогу (или idc) для приведения за-jmp-енного кода к читабельному виду?
Или инфу чтоб сделать анализатор...
работоспособнасть ненужна
- главное чтоб изучать можно было без бессмысленных переходов
AlCr0 пишет:
идея, конечно, не плохая, и нечто подобное уже приходило мне в голову (брать переходы, проверять что перед ними и решать - сохранять в output или нет) ...

AlCr0 пишет:
dll распаковывает часть себя, SAAT структуру, кусок защищенной проги и делает все это "вприпрыжку"
я хочу проанализировать распаковку и сделать распаковщик

AlCr0 пишет:
В принципе ведь цель пока - получать корректный и читаемый листинг, а не работоспособный код.





Ранг: 353.0 (мудрец)
Статус: Участник
resreveR

Создано: 07 апреля 2007 14:19 New!
Цитата · Личное сообщение · #20

Demon666
ну тогда тему пора прикрыть.. все топикстартер может прочесть в топике,обсуждать нечего
зы. если надо будет, что дописать - пишите в пм


<< . 1 . 2 .
 eXeL@B —› Софт, инструменты —› DISJumping
Эта тема закрыта. Ответы больше не принимаются.

Видеокурс ВЗЛОМ