手里有一个图形软件总是要注册,特别的让我郁闷,因为也刚刚的学习脱壳,所以就想式着弄一下,PEID载入是PEBundle 2.0x - 2.4x-> Jeremy Collake的壳。发现这个壳特别的绕,所以请好友帮忙弄了一下,并且让他教给我了方法,现在整理一下呵呵,不敢用原创一词
00924000 > 9C pushfd //F8单步
00924001 60 pushad
00924002 E8 02000000 call SwishMax.00924009 //在这里用ESP定律
来到此
009243E7 9D popfd //F8单步
009243E8 68 00309000 push SwishMax.00903000
009243ED C3 retn //继续单步,跳到
00903000 9C pushfd //F8单步
00903001 60 pushad
00903002 E8 02000000 call SwishMax.00903009 //ESP定律
009033E7 9D popfd //单步
009033E8 68 00108E00 push SwishMax.008E1000
009033ED C3 retn //继续F8
008E1000 9C pushfd //F8
008E1001 60 pushad
008E1002 E8 02000000 call SwishMax.008E1009 //ESP定律
008E13E7 9D popfd //单步
008E13E8 68 00E08D00 push SwishMax.008DE000
008E13ED C3 retn //F8
008DE000 9C pushfd
008DE001 60 pushad
008DE002 E8 02000000 call SwishMax.008DE009 //ESP定律
008DE3E7 9D popfd
008DE3E8 68 00708C00 push SwishMax.008C7000
008DE3ED C3 retn //F8
008C7000 /EB 06 jmp short SwishMax.008C7008 //F8
008C7002 |68 61462600 push 264661
008C7007 |C3 retn
008C7008 \9C pushfd
008C7009 60 pushad
008C700A E8 02000000 call SwishMax.008C7011 //f7
下面一路F7
008C8220 8B9D 39974000 mov ebx,dword ptr ss:[ebp+409739]
008C8226 8B8D 3D974000 mov ecx,dword ptr ss:[ebp+40973D]
008C822C 8B95 E6904000 mov edx,dword ptr ss:[ebp+4090E6]
008C8232 8DBD 6BA14000 lea edi,dword ptr ss:[ebp+40A16B]
008C8238 56 push esi
008C8239 52 push edx
008C823A 6A 40 push 40
008C823C 57 push edi
008C823D 51 push ecx
008C823E 53 push ebx
008C823F E8 F60B0000 call SwishMax.008C8E3A //此处应该是这个壳最让人头疼的地方,F8会跳飞,F7会跳到别的地方,总之一旦到了此处很难绝处逢生,所以要在上面找一个没有实现的跳转,让他实现跳转(我朋友和我说的)
008C821D /74 2E je short SwishMax.008C824D //就是这里了,把je short SwishMax.008C824D改成jmp short SwishMax.008C824D,让跳转实现
008C821F |60 pushad
008C8220 |8B9D 39974000 mov ebx,dword ptr ss:[ebp+409739]
008C8226 |8B8D 3D974000 mov ecx,dword ptr ss:[ebp+40973D]
008C822C |8B95 E6904000 mov edx,dword ptr ss:[ebp+4090E6]
008C824D 57 push edi //我们这下来到了这,已经接近OEP了
008C824E AD lods dword ptr ds:[esi]
008C824F 85C0 test eax,eax
008C8251 0F84 9B000000 je SwishMax.008C82F2
一路F8
008C8299 FF95 DA904000 call dword ptr ss:[ebp+4090DA]
008C829F 64:67:8F06 0000 pop dword ptr fs:[0]
008C82A5 83C4 04 add esp,4
008C82A8 85C0 test eax,eax
008C82AA 74 07 je short SwishMax.008C82B3
008C82AC 8BC8 mov ecx,eax
008C82AE 5E pop esi
008C82AF 5F pop edi
008C82B0 ^ EB 9B jmp short SwishMax.008C824D //往回跳
008C82B2 B9 E8000000 mov ecx,0E8 //在此处F4
008C854F 9D popfd
008C8550 50 push eax //胜利就在眼前了哈
008C8551 68 61466600 push SwishMax.00664661
008C8556 C2 0400 retn 4 //F7
00664661 55 push ebp //梦寐以求的OEP哈哈
00664662 8BEC mov ebp,esp
00664664 6A FF push -1
00664666 68 70DA7600 push SwishMax.0076DA70
0066466B 68 94D36600 push SwishMax.0066D394
00664670 64:A1 00000000 mov eax,dword ptr fs:[0]
脱壳到这就算完成了,下面就是修复,在好友的说明下已经弄好了,可是不同的软件可能修复会不一样,所以这里就不说了哈
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)