Сейчас на форуме: bartolomeo, johnniewalker, NIKOLA, vasilevradislav (+6 невидимых) |
![]() |
eXeL@B —› Софт, инструменты —› DISJumping |
<< . 1 . 2 . |
Посл.ответ | Сообщение |
|
Создано: 30 марта 2007 13:03 · Личное сообщение · #1 |
|
Создано: 31 марта 2007 02:20 · Личное сообщение · #2 AlCr0 пишет: В принципе ведь цель пока - получать корректный и читаемый листинг, а не работоспособный код. http://exelab.ru/f/action=vthread&forum=7&topic=7355 ----- ЗЫ: истЕна где-то рядом, Welcome@Google.com ![]() |
|
Создано: 31 марта 2007 15:19 · Личное сообщение · #3 Попробуй мой ИДЦ скрипт. Когда-то писал для себя уже не помню для какой проги. Прыгает по коротким джампам с выводом в лог. Как помню был один трабл связаный с ИДОВЫМ движком - неправильно выводятся команды работы со строками и их префиксы (movsb, movsd, setb...). И скрипт заточеный именно под НОВЕКС, когда-то копался. ![]() ----- 127.0.0.1, sweet 127.0.0.1 ![]() |
|
Создано: 02 апреля 2007 08:32 · Личное сообщение · #4 Пока еще ненаучил распознавать возможные варианты завермишеленых циклов... - есть такие, что вываливаются "в развернутом виде" ![]() Доделаю - пока вопрос времени. Demon666 спс за ссыль! поиском я в нее не попал - другие кейворды просил искать OKOB спс! побыстрому подправил твой скрипт под мусор с длинными прыжками то что доктор прописал! ![]() пока правда тоже бяка с циклами... надо топик почитать и научить OKOB пишет: неправильно выводятся команды работы со строками и их префиксы (movsb, movsd, setb...). в пятой вроде все нормуль. OKOB пишет: ... заточеный именно под НОВЕКС, когда-то копался. тож ковырялся. все просто оказалось. когда разобрался - так стало жалко времени на вермишель - я "в отместку" прямо в драйвер эмулятор засунул - до сих пор наверно где-то сам себя "в попу" клюет ![]() ![]() |
|
Создано: 05 апреля 2007 08:35 · Личное сообщение · #5 Подскажите: как в IDA средствами IDC определить какому адресному пространству принадлежит адрес? (если есть такая возможность без отладки) например для dll - как определить находится ли данный dword в текущей dll или это замаскированный переход в другую, или точка возврата в вызвавший процесс? про системные можно не писать - там все понятно ![]() |
|
Создано: 05 апреля 2007 14:32 · Личное сообщение · #6 AlCr0, Может мой старый скриптик сгодится. Писал для себя, когда занимался Гуардантом. За код не ругать, т.к. он написан в 2003 году и этом мой первый скрипт для Иды. Скрипт пробегает по текущей функции (начиная с позиции курсора) и выводит в консоль чистый код. Из косяков, насколько помню, скрипт не обрабатывал табличные переходы, вроде: jmp dword ptr [offset+x]
![]() ![]() |
|
Создано: 06 апреля 2007 14:06 · Личное сообщение · #7 xlETO спс! учту все полезности ![]() xlETO пишет: не обрабатывал табличные переходы как раз занимаюсь обработкой таких переходов только закончил лекарство от всяких "фиктивных" точек возврата
Тут исчо зосада - переход через SEH, довольно откровенно. такой тож для анализатора лишним не будет времени вот не хватает - медленно получается ![]() |
|
Создано: 06 апреля 2007 15:04 · Личное сообщение · #8 |
|
Создано: 06 апреля 2007 15:20 · Поправил: AlCr0 · Личное сообщение · #9 |
|
Создано: 06 апреля 2007 15:48 · Личное сообщение · #10 |
|
Создано: 06 апреля 2007 16:33 · Личное сообщение · #11 lord_Phoenix пишет: модификация еип/регистров в сехе надо будет потом... на примерах разобрать lord_Phoenix стоит/нет калькулятор стека писать? например чтоб определять - куда данный возврат возможен или чтоб потом можно было определять занесение/изменение/ использование стекового мусора да... много чего ![]() |
|
Создано: 06 апреля 2007 16:34 · Личное сообщение · #12 |
|
Создано: 06 апреля 2007 18:45 · Личное сообщение · #13 AlCr0 Я вот не пойму, тебе для самопознания нужно это или чем тебя не устаревает мой плагин к ольке? То, что ты пытаешься сделать – мой плагин почти все это умеет делать, единственное я не добавил в паблик версию эмуляцию в реальном времени RET`а, там тупо заглушка стоит… Ты можешь в любой момент включать/выключать запись в лог, настроек всяких много – че в плагине ни так как тебе хочется??? ----- ЗЫ: истЕна где-то рядом, Welcome@Google.com ![]() |
|
Создано: 06 апреля 2007 18:53 · Личное сообщение · #14 |
|
Создано: 06 апреля 2007 21:13 · Личное сообщение · #15 |
|
Создано: 06 апреля 2007 21:47 · Личное сообщение · #16 |
|
Создано: 07 апреля 2007 13:33 · Личное сообщение · #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 ![]() |
|
Создано: 07 апреля 2007 13:38 · Личное сообщение · #18 |
|
Создано: 07 апреля 2007 14:05 · Личное сообщение · #19 AlCr0 пишет: Не подскажете прогу (или idc) для приведения за-jmp-енного кода к читабельному виду? Или инфу чтоб сделать анализатор... работоспособнасть ненужна - главное чтоб изучать можно было без бессмысленных переходов AlCr0 пишет: идея, конечно, не плохая, и нечто подобное уже приходило мне в голову (брать переходы, проверять что перед ними и решать - сохранять в output или нет) ... AlCr0 пишет: dll распаковывает часть себя, SAAT структуру, кусок защищенной проги и делает все это "вприпрыжку" я хочу проанализировать распаковку и сделать распаковщик AlCr0 пишет: В принципе ведь цель пока - получать корректный и читаемый листинг, а не работоспособный код. ----- ЗЫ: истЕна где-то рядом, Welcome@Google.com ![]() |
|
Создано: 07 апреля 2007 14:19 · Личное сообщение · #20 |
<< . 1 . 2 . |
![]() |
eXeL@B —› Софт, инструменты —› DISJumping |
Эта тема закрыта. Ответы больше не принимаются. |