目标文件:UnPackMe_!EP(EXE Pack)1.2.exe(下面附件为目标文件)
查壳:!EP(EXE Pack)1.2
用到的工具:OD,LOADPE,ImportREC
下面开始:
OD载入加壳程序:
停在入口:
0046B0FF > 60 pushad
0046B100 68 54B04600 push UnPackMe.0046B054 ; ASCII "KERNEL32.DLL"
0046B105 B8 48B04600 mov eax,<&KERNEL32.GetModuleHandleA>
0046B10A FF10 call dword ptr ds:[eax]
0046B10C 68 B3B04600 push UnPackMe.0046B0B3 ; ASCII "GlobalAlloc"
0046B111 50 push eax
0046B112 B8 44B04600 mov eax,<&KERNEL32.GetProcAddress>
0046B117 FF10 call dword ptr ds:[eax]
0046B119 68 00920400 push 49200
0046B11E 6A 40 push 40
0046B120 FFD0 call eax
0046B122 8905 CAB04600 mov dword ptr ds:[46B0CA],eax
0046B128 89C7 mov edi,eax
0046B12A BE 00104000 mov esi,UnPackMe.00401000
按Ctrl+F查找命令:jmp edx
找到这个:
0046B297 FFD0 call eax
0046B299 61 popad
0046B29A BA B0714200 mov edx,UnPackMe.004271B0
0046B29F FFE2 jmp edx 在这下断点
0046B2A1 90 nop
0046B2A2 C3 retn
0046B2A3 44 inc esp
0046B2A4 0000 add byte ptr ds:[eax],al
在上面jmp edx 行下F2断点,进行程序后断在上面的断点
单步走一下,就到了OEP
004271B0 55 push ebp
004271B1 8BEC mov ebp,esp
004271B3 6A FF push -1
004271B5 68 600E4500 push UnPackMe.00450E60
004271BA 68 C8924200 push UnPackMe.004292C8
004271BF 64:A1 00000000 mov eax,dword ptr fs:[0]
004271C5 50 push eax
004271C6 64:8925 0000000>mov dword ptr fs:[0],esp
004271CD 83C4 A8 add esp,-58
004271D0 53 push ebx
004271D1 56 push esi
004271D2 57 push edi
004271D3 8965 E8 mov dword ptr ss:[ebp-18],esp
看一下,是VC写的,好了,DUMP下来,修复IAT,脱壳成功。
我个方法是我今天在练习时总结的,声明一下,如果网上原来有的话,就算我发了一个重复的话题。
另外希望看雪的大侠能加我进正式会员,以我现在的水平也写不出什么有价值的文章,不要笑我。
[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法