1625-5 王子昂 总结《2018年2月24日》 【连续第511天总结】
A. 脱壳技术(7) PE文件的优化
B.
脱壳后的优化
一般脱壳没有将外壳本身的代码去除,资源也没有完全释放,此时脱壳后的程序会比原始程序大
另外虽然能正常运行,但在一些场合下可能会遇到问题,例如一些汉化工具不识别脱壳后的文件,或某些功能无效等
优化输入表存放位置
用ImportREC重建输入表,一般是将生成的表放在新增的区块上。
这里存在可以优化的余地–原输入表位置一般存放在.data区块上
因此可以在该区块中找一片属性为“只读”的地方(防止被程序征用写入),将输入表复制过去即可
优化资源
有些软件脱壳后的资源不可查看、编辑,或者能编辑但无法保存,这是因为脱壳后资源没有完全释放
如Icon、Group icon等资源是放在外壳的内存空间中的,正常脱壳时没有把它们还原到应该呆的地方(.rsrc区段)导致无法读取或编辑
资源修复工具有很多,例如DT_ResFix, freeRes等
优化区段
下一步就是去除多余代码–外壳区段了,将这段不再需要被调用的代码删除即可
优化文件头
有一些文件头的字段需要被修复,重要的有以下几个:
- EntryPoint
函数入口点OEP,一般ImportREC会自动修正 - BaseOfCode
代码段的起始RVA,一般是第一个区段的RVA - BaseOfData
数据段的起始RVA,一般是出了代码外的部分开始的RVA - SizeOfImage
装入文件从基址到最后一个块的大小,向上取整,一般工具也会自动修正
C. 明日计划
脱壳技术(8)