本帖最后由 三十二变 于 2020-4-4 11:37 编辑
编辑了下过程。
1.OEP
用E-DEBUG找到进入软件的按钮的事件地址。
[Asm] 纯文本查看 复制代码 中断地址: 0051218D
Start......
StartAddress: 00789000
事件发生: 004FB506
程序退出
......End
在004FB506下断点。
[Asm] 纯文本查看 复制代码 004FB530 E8 04000000 call ep_HideT.004FB539
[Asm] 纯文本查看 复制代码 004FB7EA E8 2AF9FFFF call ep_HideT.004FB119
在004FB7EA下断点,中断时,在401000区块上下访问断点,中断来到OEP。
DUMP出来。
2.IAT
不得不说,LZ的IAT很是别致,非常别致……
有的壳我需要把它申请的内存补到区块里面去,然后再重建IAT。LZ的壳就没有补区块那一部分了……
IAT加密有两种。
一种是CALL ---> JMP ---> 解密,一种是C ALL ---> 解密
随便跟一个,找到一处API地址,然后上下找。一般MS系列编译器的IAT是很整齐的,BORLAND系列编译器的IAT是散的。易语言嘛,很整齐。
0x423000应该是起始地址,往它前面的内存看了两眼,都是0。
Size我填大了一点,因为怕漏掉IAT,后面无效的全部剪掉就可以了。
选择DUMP文件修复。
3.总结
LZ的壳十分清奇……它的IAT解密代码是在区块里面的?不是动态申请的。对付一般的壳,我会把它解密IAT的代码转存到新的区块,然后修复IAT表的。LZ的壳没了这一步……
LZ你的写壳思路有很大的问题!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|