手脱两层Aspack 2.12壳(含IAT修复)
【破解作者】 iDiGGer
【使用工具】 PEID、OllyDBG_1.10_caocong_20060212、Import REConstructor v1.6 Final
【破解平台】 winXPSP2
【软件名称】 国内某软件
【软件简介】 略
【加壳方式】 ASPack 2.12
【破解声明】 兴趣所致,略有心得,与大家共享
--------------------------------------------------------------------------------
【破解内容】
用PEID检测为ASPack 2.12 -> Alexey Solodovnikov,
用工具脱壳后,程序可正常运行,再检测还为ASPack 2.12 -> Alexey Solodovnikov,
再用工具脱之后,检测为Borland C++ 1999, 但程序已无法运行。
下面使用OD手工脱之
设置OD忽略所有异常
OD载入,提示访问异常,按Shift+F9停在此处
00522001 > 60 PUSHAD
00522002 E8 03000000 CALL mgr.0052200A
00522007 - E9 EB045D45 JMP 45AF24F7
0052200C 55 PUSH EBP
0052200D C3 RETN
按F8后,输入命令hr esp(esp定律)
按F9,断在此处
005223B0 /75 08 JNZ SHORT mgr.005223BA
005223B2 |B8 01000000 MOV EAX,1
005223B7 |C2 0C00 RETN 0C
005223BA \68 01F05100 PUSH mgr.0051F001 <--- 第一层脱壳后OEP
005223BF C3 RETN
再按F9两次,断在此处
0051F3B0 /75 08 JNZ SHORT mgr.0051F3BA
0051F3B2 |B8 01000000 MOV EAX,1
0051F3B7 |C2 0C00 RETN 0C
0051F3BA \68 24154000 PUSH mgr.00401524 <--- 第二层脱壳后OEP
0051F3BF C3 RETN
按F7三次,来到此处
00401524 /EB 10 JMP SHORT mgr.00401536 <--- OEP
00401526 |66:623A BOUND DI,DWORD PTR DS:[EDX]
00401529 |43 INC EBX
0040152A |2B2B SUB EBP,DWORD PTR DS:[EBX]
0040152C |48 DEC EAX
0040152D |4F DEC EDI
0040152E |4F DEC EDI
0040152F |4B DEC EBX
00401530 |90 NOP
00401531 -|E9 98F04A00 JMP 008B05CE
00401536 \A1 8BF04A00 MOV EAX,DWORD PTR DS:[4AF08B]
0040153B C1E0 02 SHL EAX,2
0040153E A3 8FF04A00 MOV DWORD PTR DS:[4AF08F],EAX
00401543 52 PUSH EDX
00401544 6A 00 PUSH 0
00401546 E8 37BD0A00 CALL mgr.004AD282 ; JMP 到 kernel32.GetModuleHandleA
0040154B 8BD0 MOV EDX,EAX
0040154D E8 5EFF0900 CALL mgr.004A14B0
00401552 5A POP EDX
00401553 E8 BCFE0900 CALL mgr.004A1414
00401558 E8 93FF0900 CALL mgr.004A14F0
0040155D 6A 00 PUSH 0
0040155F E8 7C140A00 CALL mgr.004A29E0
00401564 59 POP ECX
00401565 68 34F04A00 PUSH mgr.004AF034
0040156A 6A 00 PUSH 0
0040156C E8 11BD0A00 CALL mgr.004AD282 ; JMP 到 kernel32.GetModuleHandleA
00401571 A3 93F04A00 MOV DWORD PTR DS:[4AF093],EAX
00401576 6A 00 PUSH 0
00401578 E9 C36A0A00 JMP mgr.004A8040
0040157D > E9 AA140A00 JMP mgr.004A2A2C
此时用插件OllyDump,Dump出(取消重建输入表选项)
不要退出OD,还要用此进程修复IAT
IAT的修复
运行Import REConstructor v1.6 Final
选mgr进程(刚才OD载入之进程)
将OEP改为00001524,按IAT AutoSearch
提示如下
Found address which may be in the Original IAT. Try 'Get Import'.
(If it is not correct, try RVA: 000D9000 Size:00008000)
将RVA改为000D9000, Size改为00008000
按Get Imports, 再按Show Invalid
按右键,选Delete Trunks
最后按Fix Dump修复刚才Dump出的程序即可。
经测试程序运行正常。
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!