看黑鹰的教程,发现这个壳没有用到esp定律来脱,所以就自己实验了下。发现可以用esp定律。
文件下载地址:https://files.cnblogs.com/tk091/PECompact2.55.rar
下面是脱文:
首先OD载入程序,找到第一个esp凸显变红的地方,在命令行输入hr esp
shift+F9运行。
1 77578D0B 3B45 F8 cmp eax, dword ptr [ebp-8] 2 77578D0E 72 09 jb short 77578D19 3 77578D10 3B45 F4 cmp eax, dword ptr [ebp-C] 4 77578D13 0F82 E9EF0400 jb 775C7D02 5 77578D19 FF75 F0 push dword ptr [ebp-10] 6 77578D1C FF73 04 push dword ptr [ebx+4] 7 77578D1F E8 48000000 call 77578D6C
alt+F9返回到程序领空。
1 0101BAC3 53 push ebx 2 0101BAC4 51 push ecx 3 0101BAC5 57 push edi 4 0101BAC6 56 push esi
然后往下看,直接F4运行到有call或者跳转的前一句,再F8单步,一直到
1 0101BB58 5E pop esi 2 0101BB59 5F pop edi 3 0101BB5A 59 pop ecx 4 0101BB5B 5B pop ebx 5 0101BB5C 5D pop ebp 6 0101BB5D - FFE0 jmp eax ; PECompac.0100739D
这个jmp就直接跳到OEP了。
1 0100739D . 6A 70 push 70 2 0100739F . 68 98180001 push 01001898 3 010073A4 ? E8 BF010000 call 01007568 4 010073A9 . 33DB xor ebx, ebx 5 010073AB . 53 push ebx 6 010073AC ? 8B3D CC100001 mov edi, dword ptr [10010CC] ; kernel32.GetModuleHandleA
脱壳,修复,搞定收工。