【目标】:PECOMPACT2.5 加壳的 NOTEPAD
【工具】:Olydbg1.1(diy版)、LORDPE、ImportREC1.6
【任务】:脱壳
【操作平台】:WinXP sp2
【作者】: 天津小白
先用 OD载入 ,忽略所有异常
01001000 n> $ B8 C0AA0101 mov eax,notepad.0101AAC0
01001005 . 50 push eax
01001006 . 64:FF35 0000000>push dword ptr fs:[0]
0100100D . 64:8925 0000000>mov dword ptr fs:[0],esp
01001014 . 33C0 xor eax,eax
01001016 . 8908 mov dword ptr ds:[eax],ecx
01001018 . 50 push eax
01001019 . 45 inc ebp
0100101A . 43 inc ebx
0100101B . 6F outs dx,dword ptr es:[edi]
0100101C . 6D ins dword ptr es:[edi],dx
0100101D . 70 61 jo short notepad.01001080
0100101F . 637432 00 arpl word ptr ds:[edx+esi],si
01001023 .- EB D6 jmp short notepad.01000FFB
01001025 C6 db C6
下断点:BP VirtualFree ,F9运行
7C809B14 k> 8BFF mov edi,edi //断下,取消断点 ; notepad.<ModuleEntryPoint>
7C809B16 55 push ebp
7C809B17 8BEC mov ebp,esp
7C809B19 FF75 10 push dword ptr ss:[ebp+10]
7C809B1C FF75 0C push dword ptr ss:[ebp+C]
7C809B1F FF75 08 push dword ptr ss:[ebp+8]
7C809B22 6A FF push -1
7C809B24 E8 09000000 call kernel32.VirtualFreeEx
7C809B29 5D pop ebp
7C809B2A C2 0C00 retn 0C //F4,这里,F8返回
003E00C0 58 pop eax //返回到这里
003E00C1 EB 03 jmp short 003E00C6
003E00C3 33C0 xor eax,eax
003E00C5 48 dec eax
003E00C6 5D pop ebp
003E00C7 5B pop ebx
003E00C8 5F pop edi
003E00C9 5E pop esi
003E00CA C2 0C00 retn 0C //F4过来,F8返回
003E0D2E 8BC8 mov ecx,eax //返回到这里,继续向下
003E0D30 40 inc eax
003E0D31 74 74 je short 003E0DA7
。。。。。。。。。。。。
003E0DA0 5E pop esi
003E0DA1 5F pop edi
003E0DA2 5B pop ebx
003E0DA3 C9 leave
003E0DA4 C2 0400 retn 4 //F4这里,F8返回
003E086F 85C0 test eax,eax //返回这里,继续向下
003E0871 0F85 A6000000 jnz 003E091D
003E0877 56 push esi
003E0878 E8 31030000 call 003E0BAE
003E087D 56 push esi
003E087E E8 50020000 call 003E0AD3
。。。。。。。
003E096F 5D pop ebp
003E0970 5E pop esi
003E0971 5F pop edi
003E0972 5B pop ebx
003E0973 C3 retn //F4过来,F8返回
0101AB6D 8985 5B120010 mov dword ptr ss:[ebp+1000125B],eax ; notepad.0100739D //返回到这里
0101AB73 8BF0 mov esi,eax
0101AB75 59 pop ecx
0101AB76 5A pop edx
0101AB77 EB 0C jmp short notepad.0101AB85
0101AB79 03CA add ecx,edx
0101AB7B 68 00800000 push 8000
0101AB80 6A 00 push 0
0101AB82 57 push edi
0101AB83 FF11 call dword ptr ds:[ecx]
0101AB85 8BC6 mov eax,esi
0101AB87 5A pop edx
0101AB88 5E pop esi
0101AB89 5F pop edi
0101AB8A 59 pop ecx
0101AB8B 5B pop ebx
0101AB8C 5D pop ebp
0101AB8D FFE0 jmp eax //飞向OEP EAX=0100739D
LORDPE DUMP,IMPORTREC 修复,OEP=0100739D-01000000=739D,iat autosearch 得到输入表,修复完工
这是本人第一次写脱壳文章,比较简单,还往各位前辈指教!
[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法