| Посл.ответ |
Сообщение |
|
Создано: 30 марта 2007 13:03:46 Личное сообщение #1
Не подскажете прогу (или idc) для приведения за-jmp-енного кода к читабельному виду?
Или инфу чтоб сделать анализатор...
работоспособнасть ненужна - главное чтоб изучать можно было без бессмысленных переходов
вручную собирать код уже достало
|
|
|
Создано: 31 марта 2007 02:20:19 Личное сообщение #2 |
|
Создано: 31 марта 2007 15:19:00 Личное сообщение #3
Попробуй мой ИДЦ скрипт. Когда-то писал для себя уже не помню для какой проги. Прыгает по коротким джампам с выводом в лог. Как помню был один трабл связаный с ИДОВЫМ движком - неправильно выводятся команды работы со строками и их префиксы (movsb, movsd, setb...). И скрипт заточеный именно под НОВЕКС, когда-то копался. cbe7_31.03.2007_CRACKLAB.rU.tgz - NOVEX.rar
|
|
Создано: 2 апреля 2007 08:32:18 Личное сообщение #4
Пока еще ненаучил распознавать возможные варианты завермишеленых циклов... - есть такие, что вываливаются "в развернутом виде"
Доделаю - пока вопрос времени.
Demon666 спс за ссыль!
поиском я в нее не попал - другие кейворды просил искать
OKOB спс! побыстрому подправил твой скрипт под мусор с длинными прыжками
то что доктор прописал!
пока правда тоже бяка с циклами... надо топик почитать и научить
OKOB пишет:
неправильно выводятся команды работы со строками и их префиксы (movsb, movsd, setb...).
в пятой вроде все нормуль.
OKOB пишет:
... заточеный именно под НОВЕКС, когда-то копался.
тож ковырялся. все просто оказалось. когда разобрался - так стало жалко времени на вермишель -
я "в отместку" прямо в драйвер эмулятор засунул - до сих пор наверно где-то сам себя "в попу" клюет
|
|
Создано: 5 апреля 2007 08:35:25 Личное сообщение #5
Подскажите: как в IDA средствами IDC определить какому адресному пространству принадлежит адрес? (если есть такая возможность без отладки)
например для dll - как определить находится ли данный dword в текущей dll или это замаскированный переход в другую, или точка возврата в вызвавший процесс?
про системные можно не писать - там все понятно
|
|
Создано: 5 апреля 2007 14:32:13 Личное сообщение #6
AlCr0,
Может мой старый скриптик сгодится. Писал для себя, когда занимался Гуардантом. За код не ругать, т.к. он написан в 2003 году и этом мой первый скрипт для Иды.
Скрипт пробегает по текущей функции (начиная с позиции курсора) и выводит в консоль чистый код.
Из косяков, насколько помню, скрипт не обрабатывал табличные переходы, вроде:
jmp dword ptr [offset+x]
offset dd 1
dd 2
dd 3 2193_05.04.2007_CRACKLAB.rU.tgz - deNovex.idc
|
|
Создано: 6 апреля 2007 14:06:29 Личное сообщение #7
xlETO
спс! учту все полезности
xlETO пишет:
не обрабатывал табличные переходы
как раз занимаюсь обработкой таких переходов
только закончил лекарство от всяких "фиктивных" точек возврата
push offset_XXXXXXXX
retn
Тут исчо зосада - переход через SEH, довольно откровенно. такой тож для анализатора лишним не будет
времени вот не хватает - медленно получается
|
|
Создано: 6 апреля 2007 15:04:09 Личное сообщение #8
универсально сехи думаю не сможешь анализировать.. сколько там всего вариантов?
----- Тут не могла быть ваша реклама
|
|
Создано: 6 апреля 2007 15:20:18 · Поправил: AlCr0 Личное сообщение #9
пока только один вижу:
002F10A0 C2 0C00 RETN 0C ;в стеке - 00000000, попадаем в SEH и на расконопаченный код
соседние ветки кода пока в переходах - надо дописать обработку условных переходов
сорри за тафтологию
|
|
Создано: 6 апреля 2007 15:48:01 Личное сообщение #10
AlCr0
ну..насколкьой я понял ты о местах вида
1. ставим сех
2. вызываем исключение
3. убираем сех, ровняем стэк и продолжаем
еще же может быть и модификация еип/регистров в сехе и т.д... сильно много вариантов =(
----- Тут не могла быть ваша реклама
|
|
Создано: 6 апреля 2007 16:33:45 Личное сообщение #11
lord_Phoenix пишет:
модификация еип/регистров в сехе
надо будет потом... на примерах разобрать
lord_Phoenix
стоит/нет калькулятор стека писать?
например чтоб определять - куда данный возврат возможен
или чтоб потом можно было определять занесение/изменение/ использование стекового мусора
да... много чего
|
|
Создано: 6 апреля 2007 16:34:17 Личное сообщение #12
ЗЫ хотя, что я спрашиваю - так-то не долго добавить...
|
|
Создано: 6 апреля 2007 18:45:12 Личное сообщение #13
AlCr0
Я вот не пойму, тебе для самопознания нужно это или чем тебя не устаревает мой плагин к ольке?
То, что ты пытаешься сделать – мой плагин почти все это умеет делать, единственное я не добавил в паблик версию эмуляцию в реальном времени RET`а, там тупо заглушка стоит…
Ты можешь в любой момент включать/выключать запись в лог, настроек всяких много – че в плагине ни так как тебе хочется???
----- ЗЫ: истЕна где-то рядом, Welcome@Google.com
|
|
Создано: 6 апреля 2007 18:53:40 Личное сообщение #14
Demon666
причем здесь лог? деобфускатор надо
----- Тут не могла быть ваша реклама
|
|
Создано: 6 апреля 2007 21:13:10 Личное сообщение #15
Хм… ну дык в плуге это реализовано… причем всего лишь двумя опциями и никакого мусора нет…
P. S.
lord_Phoenix
Удали все мои посты из этой темы, чтобы не позориццо
----- ЗЫ: истЕна где-то рядом, Welcome@Google.com
|
|
Создано: 6 апреля 2007 21:47:40 Личное сообщение #16
Demon666
хм, твой плуг сам вписывает деобфусцирвоанный код обратно? или дает какую возможность =)
вообщем я запутался =)
AlCr0 пишет:
ЗЫ хотя, что я спрашиваю - так-то не долго добавить...
добавляй!
----- Тут не могла быть ваша реклама
|
|
Создано: 7 апреля 2007 13:33:42 Личное сообщение #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
Изучаем, все видно как на ладони, как преобразуются данные, куда пишутся, откуда считываются, если встретятся строки в регистрах плагин и их запишет, потратил несколько минут… короче я это вообще не считаю за какую-то защиту, это даже стремно вообще так называть.
----- ЗЫ: истЕна где-то рядом, Welcome@Google.com
|
|
Создано: 7 апреля 2007 13:38:41 Личное сообщение #18
афаир топикстартер хотел или готовый деобфускатор или скрипт для иды..а не просто лог выполнения получить
----- Тут не могла быть ваша реклама
|
|
Создано: 7 апреля 2007 14:05:49 Личное сообщение #19
AlCr0 пишет:
Не подскажете прогу (или idc) для приведения за-jmp-енного кода к читабельному виду?
Или инфу чтоб сделать анализатор...
работоспособнасть ненужна - главное чтоб изучать можно было без бессмысленных переходов
AlCr0 пишет:
идея, конечно, не плохая, и нечто подобное уже приходило мне в голову (брать переходы, проверять что перед ними и решать - сохранять в output или нет) ...
AlCr0 пишет:
dll распаковывает часть себя, SAAT структуру, кусок защищенной проги и делает все это "вприпрыжку"
я хочу проанализировать распаковку и сделать распаковщик
AlCr0 пишет:
В принципе ведь цель пока - получать корректный и читаемый листинг, а не работоспособный код.
----- ЗЫ: истЕна где-то рядом, Welcome@Google.com
|
|
Создано: 7 апреля 2007 14:19:04 Личное сообщение #20
Demon666
ну тогда тему пора прикрыть.. все топикстартер может прочесть в топике,обсуждать нечего
зы. если надо будет, что дописать - пишите в пм
----- Тут не могла быть ваша реклама
|