程序:一个游戏的外挂 免费版
壳:ASProtect 2.1x SKE -> Alexey Solodovnikov
工具:Aspr2.XX_IATfixer_v1.02s
OllyDBG 1.10
ImportREC 1.6
LordPE
------------------------------------------------------------------------------------------------------------------------
一、修复IAT,找到OEP:
OD载入,运行VolX的Aspr2.XX_IATfixer_v1.02s脚本:
00401000 > 68 01406900 PUSH BDKS.00694001 ; OD载入停在这里
00401005 E8 01000000 CALL BDKS.0040100B
0040100A C3 RETN
0040100B C3 RETN
0040100C 84C3 TEST BL,AL
脚本结束后停在这里,OD的记录里记载着OEP地址,LOG中记载着IAT的起始地址及大小:
01230290 55 PUSH EBP ; 00050B31C,OEP地址
01230291 F2: PREFIX REPNE:
01230292 EB 01 JMP SHORT 01230295
01230294 9A 8D6C5144 2EE>CALL FAR EB2E:44516C8D
0123029B 01F3 ADD EBX,ESI
0123029D 83ED 44 SUB EBP,44
012302A0 BD 1EE94700 MOV EBP,47E91E
看脚本LOG记录:
OEP=0050B31C-00400000=0010b31c
信息=iatstartaddr: 00512190-00400000=00112190
信息=iatsize: 000007F4
使用LORDPE完整转存,保存成dumpd.exe,启动\ImportREC v1.6F Fix,填入OEP 0010b31c.RVA=00112190,Size=7F4--->获取输入表,指针全部正确。修复转储文件,得到dumped_.exe。
二、补区段
Alt+M,打开内存窗口。
在00BA0000~012E0000下所有Priv类型F2断点,然后逐步F9,看程序运行中需要壳中的哪些区段。
可以看出程序运行需要壳中的下面区段
00BA0000-00BD0000
00FF0000-01033000
01040000-01054000
01200000-01201000
01230000-01234000
012A0000-012A1000
012B0000-012B1000
012C0000-012C1000
012D0000-012D1000
012E0000-012E1000
共10个区段,此时LordPE--->区域转存--->上面的10个区段。
再用LordPE加载dumped_.exe,选取区段表SECTIONS,右击从硬盘载入区段。分别将这10个区段载入。
我只载入了一个 就提示我『头部无足够的可用空间』
我试过 重建PE 但是 还是 不能完全载入进去! 请高手 们 教教 怎么添加这个载入的空间啊,小弟先谢过了!
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!