PECompact 2.5 Retail
这几天没事,研究一个软件,发现是加了PECompact 2.5 Retail的壳,到网上百度了一下,发现无论是有关PECompact 2.5 Retail壳的文章还是动画教程,脱的方法只有一个,就是手脱,于是我就找了一篇文章看了下,是在那个流虫社区看的,写的特别好,按他的方法,我一步步走了下去,可到最后的时候,我发现,文章上所到达的OEP和我到达的OEP不一样,刚开始我以为我走错了,我就又走了几次,发现还是和文章上的OEP不一样,最后我直接脱下来,修复了一下,发现可以运行了,这时我才知道,原来我的也是正确的,下面我把PECompact 2.5 Retail单步脱法给大家演示一下,
载放OD,会停在这里
00401000 > B8 A0700D01 mov eax,lhc.010D70A0 载入后停在这里F8下一步
00401005 50 push eax
00401006 64:FF35 0000000>push dword ptr fs:[0]
0040100D 64:8925 0000000>mov dword ptr fs:[0],esp
00401014 33C0 xor eax,eax
00401016 8908 mov dword ptr ds:[eax],ecx 单步到这一步时会跳走
00401018 50 push eax
7C92E460 8B1C24 mov ebx,dword ptr ss:[esp] 跳到这里了,接着F8
7C92E463 51 push ecx
7C92E464 53 push ebx
7C92E465 E8 E6C40100 call ntdll.7C94A950
7C92E46A 0AC0 or al,al
7C92E46C 74 0C je short ntdll.7C92E47A
7C92E46E 5B pop ebx
7C92E46F 59 pop ecx
7C92E470 6A 00 push 0x0
7C92E472 51 push ecx
7C92E473 E8 C8EBFFFF call ntdll.ZwContinue 到这个CALL一定要进,
7C92E478 EB 0B jmp short ntdll.7C92E485
7C92D040 > B8 20000000 mov eax,0x20 进后会来到这里接着走
7C92D045 BA 0003FE7F mov edx,0x7FFE0300
7C92D04A FF12 call dword ptr ds:[edx] 到这里要进
7C92D04C C2 0800 retn 0x8
7C92E4F0 > 8BD4 mov edx,esp 进后到这里,
7C92E4F2 0F34 sysenter 到这一步返回
7C92E4F4 > C3 retn
010D70D2 55 push ebp 返回到这里
010D70D3 53 push ebx 接着F8
010D70D4 51 push ecx
010D70D5 57 push edi
010D70D6 56 push esi
010D70D7 52 push edx
010D70D8 8D98 5712001>lea ebx,dword ptr ds:[eax+0x10001257]
010D70DE 8B53 18 mov edx,dword ptr ds:[ebx+0x18]
010D70E1 52 push edx
010D70E2 8BE8 mov ebp,eax
010D70E4 6A 40 push 0x40
010D70E6 68 00100000 push 0x1000
010D70EB FF73 04 push dword ptr ds:[ebx+0x4]
010D70EE 6A 00 push 0x0
010D70F0 8B4B 10 mov ecx,dword ptr ds:[ebx+0x10]
010D70F3 03CA add ecx,edx
010D70F5 8B01 mov eax,dword ptr ds:[ecx]
010D70F7 FFD0 call eax
010D70F9 5A pop edx
010D70FA 8BF8 mov edi,eax
010D70FC 50 push eax
010D70FD 52 push edx
010D70FE 8B33 mov esi,dword ptr ds:[ebx]
010D7100 8B43 20 mov eax,dword ptr ds:[ebx+0x20]
010D7103 03C2 add eax,edx
010D7105 8B08 mov ecx,dword ptr ds:[eax]
010D7107 894B 20 mov dword ptr ds:[ebx+0x20],ecx
010D710A 8B43 1C mov eax,dword ptr ds:[ebx+0x1C]
010D710D 03C2 add eax,edx
010D710F 8B08 mov ecx,dword ptr ds:[eax]
010D7111 894B 1C mov dword ptr ds:[ebx+0x1C],ecx
010D7114 03F2 add esi,edx
010D7116 8B4B 0C mov ecx,dword ptr ds:[ebx+0xC]
010D7119 03CA add ecx,edx
010D711B 8D43 1C lea eax,dword ptr ds:[ebx+0x1C]
010D711E 50 push eax
010D711F 57 push edi
010D7120 56 push esi ; lhc.010D645C
010D7121 FFD1 call ecx
010D7123 5A pop edx ; lhc.00400000
010D7124 58 pop eax
010D7125 0343 08 add eax,dword ptr ds:[ebx+0x8]
010D7128 8BF8 mov edi,eax
010D712A 52 push edx
010D712B 8BF0 mov esi,eax
010D712D 8B46 FC mov eax,dword ptr ds:[esi-0x4]
010D7130 83C0 04 add eax,0x4
010D7133 2BF0 sub esi,eax
010D7135 8956 08 mov dword ptr ds:[esi+0x8],edx
010D7138 8B4B 0C mov ecx,dword ptr ds:[ebx+0xC]
010D713B 894E 14 mov dword ptr ds:[esi+0x14],ecx
010D713E FFD7 call edi
010D7140 8985 3F13001>mov dword ptr ss:[ebp+0x1000133F],eax
010D7146 8BF0 mov esi,eax
010D7148 8B4B 14 mov ecx,dword ptr ds:[ebx+0x14]
010D714B 5A pop edx
010D714C EB 0C jmp short lhc.010D715A
010D714E 03CA add ecx,edx
010D7150 68 00800000 push 0x8000
010D7155 6A 00 push 0x0
010D7157 57 push edi
010D7158 FF11 call dword ptr ds:[ecx]
010D715A 8BC6 mov eax,esi
010D715C 5A pop edx
010D714E 03CA add ecx,edx
010D7150 68 00800000 push 0x8000
010D7155 6A 00 push 0x0
010D7157 57 push edi
010D7158 FF11 call dword ptr ds:[ecx]
010D715A 8BC6 mov eax,esi
010D715C 5A pop edx
010D715D 5E pop esi
010D715E 5F pop edi
010D715F 59 pop ecx
010D7160 5B pop ebx
010D7161 5D pop ebp
010D7162 - FFE0 jmp eax 这里就是传说中的大跳,跳向OEP
008576E4 55 push ebp | 然后这里就是传说中的OEP,
008576E5 8BEC mov ebp,esp | 他们的章上的OEP是:6A 70 push 70
008576E7 83C4 F0 add esp,-0x10 |
008576EA B8 7C678500 mov eax,lhc.0085677C
008576EF E8 7C0ABBFF call lhc.00408170
008576F4 33C0 xor eax,eax
008576F6 55 push ebp
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!