这是shoooo大侠写的一个压缩壳,我是一个小菜鸟,简单脱了一下这个壳,只是研究,没有其他目的,希望大侠看了不要怪我。
脱壳目标:堀北压缩0.28 beta主程序
用OD载入之后来到这里:
00401000 >/$ 68 71EA4A00 push 004AEA71
00401005 |. E8 01000000 call 0040100B
0040100A \. C3 retn
0040100B $ C3 retn
命令行下断点:bp VirtualFree,中断十五次之后,观察堆栈:
0012FF94 00432A70 /CALL 到 VirtualFree
0012FF98 00380000 |Address = 00380000
0012FF9C 00000000 |Size = 0
0012FFA0 00008000 \FreeType = MEM_RELEASE
0012FFA4 7C930738 ntdll.7C930738
这时清除断点,按F9返回,来到这里:
00432A70 61 popad
00432A71 B8 E5A70000 mov eax, 0A7E5
00432A76 BA 00004000 mov edx, 00400000
00432A7B 03C2 add eax, edx
00432A7D FFE0 jmp eax ; 跳向OEP
0040A7E5 55 push ebp ; Dump!
0040A7E6 8BEC mov ebp, esp
0040A7E8 6A FF push -1
0040A7EA 68 C0F54000 push 0040F5C0
0040A7EF 68 00BC4000 push 0040BC00
0040A7F4 64:A1 00000000 mov eax, fs:[0]
0040A7FA 50 push eax
0040A7FB 64:8925 0000000>mov fs:[0], esp
0040A802 83EC 58 sub esp, 58
0040A805 53 push ebx
0040A806 56 push esi
0040A807 57 push edi
0040A808 8965 E8 mov [ebp-18], esp
0040A80B FF15 28F04000 call [40F028] ; kernel32.GetVersion
Dump之后直接用ImportRec修复,添入OEP:A7E5,自动查找IAT后修复即可。
比较简单的一个压缩壳,嘻嘻,最近比较忙,一直没时间,拿来练练手。
评论