直到显示变成
0167:004F2D72 E9148B1DA8 JMP A86CB88B 0167:004F2D77 8E4F00 MOV CS,[EDI+00] 0167:004F2D7A EB01 JMP 004F2D7D 0167:004F2D7C EB89 JMP 004F2D07 0167:004F2D7E 041C ADD AL,1C 0167:004F2D80 EB02 JMP 004F2D84 0167:004F2D82 EBE8 JMP 004F2D6C 0167:004F2D84 61 POPAD 0167:004F2D85 EB01 JMP 004F2D88 0167:004F2D87 E850EB02E9 CALL E95218DC 0167:004F2D8C 17 POP SS 0167:004F2D8D E802000000 CALL 004F2D94 0167:004F2D92 E91758C35E JMP 5F1285AE 0167:004F2D94 58 POP EAX <-- 光标位于此行时, EAX=401000 0167:004F2D95 C3 RET <--这里
下Suspend指令. 回到Windows. 用ProcDump来Dump(full)脱壳的程序,得到azprdump.exe. 你也可以用TRW的PEDUMP命令来得到脱壳程序,但我个人的经验很容易死机,所以我宁愿用ProcDump来做.
4. 用PE Editor修改程序的Entry Point为1000. 并查看脱壳后程序的.idata section. 此时Raw size=1670, Raw offset=1FC00. 修改Directory中Import Table的RVA=21000,SIZE=1670. 5. 用Hexworkshop打开azprdump.exe和azprdata.bin. Goto到exe文件的1FC00偏移处,Select Block大小为1670. 拷贝.bin文件的同样大小(1670)的Block,粘贴到exe文件中以替换掉不正确的.idata section.
现在,再试着运行程序,应该可以正常运行了. 如果程序出错,再做一件事: 把 .bss section的raw size值改为00000000 (高手tiamath的建议).
有了脱壳的程序,大家应该会Patch它成为注册版了吧. 只需改一个字节.
结语: 用本文所描述的方法,可以对绝大多数Asprotect+Aspack保护的程序进行成功的脱壳. 大家读完这篇教程,不妨找几个程序开刀. 比方说,The Bat! 1.39现在不应该再难住大家了.
好了,这次就到这儿了,下回见.
致谢:
感谢SV, Hobgoblin, tiamath. 没有他们的帮助,我不可能做到这一步. 上一页 1 2 3 |