最近脱个简单的壳,还忙活了好一会,后来发现是附加数据的问题,顺便记录下,给用的着的人作为一些参考。
不明白附加数据是什么的,先Google下吧……
简单说就是查壳时会显示overlay!
ASPack 2.12 -> Alexey Solodovnikov [Overlay]
这种情况脱壳后需要把附加数据补到脱壳修复后的文件尾即可,有工具可以做这个活,当然手动在winhex中操作亦可。找附加数据位置就是最后一个区段完,然后一直到文件尾即为附加数据。
上面是一般的处理方法。有时这样还不行,脱壳后的文件在读取附加数据时因为附加数据的地址变了,所以会出现读取错误而造成无法运行。这是我们只需要找到新的附加数据地址,然后OD载入修复后的脱壳程序,对SetFilePointer下断,等文件指针移到原附加数据地址时patch成新地址即可。
0012FB0C 00000178 |hFile = 00000178 (window)
0012FB10 000DFA00 |OffsetLo = DFA00 (915968.)
0012FB14 00000000 |pOffsetHi = NULL
0012FB18 00000000 \Origin = FILE_BEGIN
堆栈中看到关键地址(红色部分),也就是原来的附加数据地址,alt+f9返回,找到此地址的来源处,patch成新地址即可。
记得KeyMake生成的注册机脱壳用此种办法就可以解决,不过它那个里面地址是常数……
已经有(0)位网友发表了评论,你也评一评吧!
原创文章如转载,请注明:转载自Eddy Blog
原文地址:http://www.rrgod.com/technique/510.html 欢迎订阅Eddy Blog。