eXeL@B —› Протекторы —› ASProtect ручная распаковка |
Посл.ответ | Сообщение |
|
Создано: 01 ноября 2005 06:49 · Личное сообщение · #1 Драсте all, вот первая в жизни попытка ручками распаковать прогу: notepad.gridinsoft.com После прочитывания пачки tutorials делал вот что: 1) PiD говорит что это asprotect 1.23 2) Olly ловит кучу исключений, последнее из которых на 0xDAA76A где видим вот что: 00DAA76A mov dword ptr ds:[eax],44D9AD1F 00DAA770 mov byte ptr ds:[10FDFEFA],al 00DAA775 lods byte ptr ds:[esi] 00DAA776 pop dword ptr fs:[0] 00DAA77C add esp,4 00DAA77F lea eax,dword ptr ds:[ecx+edx*2+7] 00DAA783 pop eax 00DAA784 mov eax,dword ptr ds:[DB9804] 00DAA789 mov eax,dword ptr ds:[eax] 00DAA78B mov ebp,dword ptr ds:[eax+1C] .......................... 3) этот блок отличается от описаного во всех tutorials.... 4) поставил breakpoint на 0xDAA77C 5) по достижении 0xDAA77C убрал этот breakpoint и добавил "memory breakpoin on access" на главную секцию (start=0x410000, size=0x317000) 6) попал в 0x7175f8 который похож на OEP 7) чуть позже исполняется 0x4076e4 что точно есть дельфийский код Ну а теперь вопросы: a) 0xDAA76A это кусок asprotect-a? Что он делает? b) 0x7175f8 вроде самый первый application code. Это и есть origianl entry point? И его надо прописать в PE header-e& c) зациклил, сделал dump LordPE, а как исправлять imports? ImpRec/Revirgin просто так на работают... Спасибо. |
|
Создано: 01 ноября 2005 08:23 · Личное сообщение · #2 |
|
Создано: 02 ноября 2005 05:50 · Личное сообщение · #3 s0larian пишет: 6) попал в 0x7175f8 который похож на OEP Чем похож, какой- код? Как правило, прога начинается с push ebp или эмуляции этой команды. s0larian пишет: a) 0xDAA76A это кусок asprotect-a? Что он делает? Это код аспра. Конечно можно разбираться построчно в этом коде - но зачем? s0larian пишет: 0x7175f8 вроде самый первый application code. Это и есть origianl entry point? Не обязательно. Как можно ответить не видя кода проги? s0larian пишет: c) зациклил, сделал dump LordPE, а как исправлять imports Если в Олли - то не надо циклить. Что касается импорта, то смотри по форуму, как его восстанавливать в аспре. Писать слишком много. |
|
Создано: 02 ноября 2005 08:38 · Личное сообщение · #4 tar4 пишет: Чем похож, какой- код? Как правило, прога начинается с push ebp или эмуляции этой команды. 007175F8 push ebp 007175F9 mov ebp, esp 007175FB mov ecx, 5 00717600 push 0 00717602 push 0 00717604 dec ecx 00717605 jnz short loc_717600 00717607 push ebx 00717608 mov eax, offset dword_7168B8 0071760D call sub_4076E4 00717612 xor eax, eax 00717614 push ebp 00717615 push offset loc_717772 0071761A push dword ptr fs:[eax] 0071761D mov fs:[eax], esp 00717620 mov eax, ds:dword_724204 00717625 mov eax, [eax] 00717627 call sub_493A64 0071762C call sub_402C44 00717631 dec eax 00717632 jnz loc_717706 00717638 lea edx, [ebp+var_14] 0071763B mov eax, 1 00717640 call sub_402CA4 00717645 mov eax, [ebp+var_14] 00717648 mov edx, offset aUninstallgridi ; "/uninstallgridinsoft" ........... Функция начинает разбирать command line arguments - логично. Похоже на entry point. Единственное что странно так это адрес. Остальные функции находятся в начале секции: sub_4076E4, sub_402C44.... |
|
Создано: 02 ноября 2005 11:03 · Личное сообщение · #5 s0larian Я смотрел последнюю версию с сайта - 0071916C PUSH EBP 0071916D MOV EBP,ESP 0071916F MOV ECX,5 00719174 PUSH 0 00719176 PUSH 0 00719178 DEC ECX 00719179 JNZ SHORT gsnote3.00719174 0071917B PUSH EBX 0071917C MOV EAX,gsnote3.00718424 00719181 CALL gsnote3.00407704 00719186 XOR EAX,EAX 00719188 PUSH EBP 00719189 PUSH gsnote3.007192E6 0071918E PUSH DWORD PTR FS:[EAX] 00719191 MOV DWORD PTR FS:[EAX],ESP 00719194 MOV EAX,DWORD PTR DS:[726204] 00719199 MOV EAX,DWORD PTR DS:[EAX] 0071919B CALL gsnote3.00493A2C 007191A0 CALL gsnote3.00402C44 007191A5 DEC EAX 007191A6 JNZ gsnote3.0071927A 007191AC LEA EDX,DWORD PTR SS:[EBP-14] 007191AF MOV EAX,1 007191B4 CALL gsnote3.00402CA4 007191B9 MOV EAX,DWORD PTR SS:[EBP-14] 007191BC MOV EDX,gsnote3.007192FC ; ASCII "/uninstallgridinsoft" Это оеп, причем не защищен. Каллы аспра - CALL 01030000 Секция кода имеет длину 00319000h,следовательно 00401000+00319000h = 0071A000 - т.е. OEP лежит в секции кода, всё верно. Судя по адресу последнего экспепшена имеешь дело с аспром версии 1.33 build 03.07 ----- "Пусть видят, что мы не шутим. Стволы для понта, ножи для дела" Lock, Stock & Two Smoking Barrels |
|
Создано: 02 ноября 2005 12:09 · Личное сообщение · #6 Smon хм я почему то тут встал 007174C8 55 PUSH EBP 007174C9 8BEC MOV EBP,ESP 007174CB 83C4 F0 ADD ESP,-10 007174CE 53 PUSH EBX 007174CF 56 PUSH ESI 007174D0 57 PUSH EDI 007174D1 33C9 XOR ECX,ECX 007174D3 894D F0 MOV DWORD PTR SS:[EBP-10],ECX 007174D6 8955 F8 MOV DWORD PTR SS:[EBP-8],EDX 007174D9 8945 FC MOV DWORD PTR SS:[EBP-4],EAX 007174DC 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8] 007174DF E8 90DECEFF CALL gsnote3.00405374 007174E4 33C0 XOR EAX,EAX 007174E6 55 PUSH EBP 007174E7 68 54757100 PUSH gsnote3.00717554 007174EC 64:FF30 PUSH DWORD PTR FS:[EAX] 007174EF 64:8920 MOV DWORD PTR FS:[EAX],ESP 007174F2 C745 F4 FFFFFFF>MOV DWORD PTR SS:[EBP-C],-1 007174F9 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 007174FC 8B40 08 MOV EAX,DWORD PTR DS:[EAX+8] 007174FF 8B10 MOV EDX,DWORD PTR DS:[EAX] 00717501 FF52 14 CALL DWORD PTR DS:[EDX+14] 00717504 8BF0 MOV ESI,EAX 00717506 4E DEC ESI 00717507 85F6 TEST ESI,ESI |
|
Создано: 02 ноября 2005 12:35 · Личное сообщение · #7 |
|
Создано: 04 ноября 2005 01:47 · Личное сообщение · #8 |
|
Создано: 04 ноября 2005 03:56 · Личное сообщение · #9 |
|
Создано: 04 ноября 2005 04:37 · Поправил: s0larian · Личное сообщение · #10 Хмм..... По идее, каждый переход такого типа находится в мелкой библиотечной функции, которая делает переход по адресу из import table. То есть, в jmp dword ptr ds:[73D2B0] 73D2B0 это указатель который находится в IAT. Так? Если так, то теперь мне надо понять где этот IAT начинается, где заканчивается. В памяти есть секция по адресу 73D000 размером 0x4000, в которой находятся эти указатели. Елки, а что делать дальше? |
|
Создано: 04 ноября 2005 07:29 · Личное сообщение · #11 ОК, смотрю в Olly на этот IAT: 0073D1F4 7C91188A ntdll.RtlDeleteCriticalSection 0073D1F8 7C9010ED ntdll.RtlLeaveCriticalSection 0073D1FC 7C901005 ntdll.RtlEnterCriticalSection 0073D200 7C809FA1 kernel32.InitializeCriticalSection 0073D204 7C809B14 kernel32.VirtualFree 0073D208 7C809A81 kernel32.VirtualAlloc 0073D20C 7C80995D kernel32.LocalFree 0073D210 7C8099BD kernel32.LocalAlloc 0073D214 7C8092AC kernel32.GetTickCount 0073D218 1E5A5B73 0073D21C 7C8114AB kernel32.GetVersion 0073D220 2374811B 0073D224 7C809794 kernel32.InterlockedDecrement ............... попадаются пробелы без имён функций с какими-то кривыми адресами... |
|
Создано: 04 ноября 2005 11:36 · Личное сообщение · #12 s0larian http://www.exelab.ru/art/arc4.php ----- once you have tried it, you will never want anything else |
eXeL@B —› Протекторы —› ASProtect ручная распаковка |
Эта тема закрыта. Ответы больше не принимаются. |