问题描述
|
请问关于打包后的.exe文件如何真正定位OEP(原始入口点)有任何一般规则吗?在调试的汇编语言中可以找到什么OEP线索?
假设PC-Guard 5.06.0400包含一个Windows .exe文件,我希望将其解压缩。因此,关键条件是在新提取的代码块中找到OEP。
我将使用常见的调试器OllyDBG来做到这一点。
解决方法
这仅取决于打包程序及其使用打包和/或虚拟化代码的算法。看到您正在使用ollydbg时,我建议您检查一下tuts4you,woodmanns和openrce,它们有很多插件(iirc有一个设计用于在混淆代码中查找oep的插件,但是我不知道它的性能如何)以及用于解压缩各种打包程序的olly脚本(您可以从中获取有关某种打包程序的提示),它们也有很多关于该主题的论文/教程,这些论文/教程可能有也可能没有采用。
PC Guard似乎并没有引起太多关注,但是此处的视频链接和信息应该会有所帮助(赞扬Google缓存!)
,在一般情况下-没办法。这在很大程度上取决于打包机。在最常见的情况下,打包程序可能会将OEP中的某些代码替换为其他一些代码。
,很难指出任何简单的策略并声称它可以正常使用,因为打包工具的目的是使OEP发现一个非常棘手的问题。此外,有了一个好的包装工,找到OEP仍然不够。话虽如此,我确实有一些建议。
我建议您阅读有关Justin解包程序的文章,他们使用当时相当有效的启发式方法,并且您也许可以从中得到一些帮助。它们至少会将候选入口点的数量减少到可管理的数量:
封隔器问题及其解决方案研究(2008)
郭方鲁,彼得·费里,齐子基
还有一些网络分析页面可以告诉您很多有关打包程序的信息。例如,恶意软件分析器位于:
http://eureka.cyber-ta.org/
这是另一个目前正在下降,但过去做得还不错的工作,我想很快就会恢复正常):
http://bitblaze.cs.berkeley.edu/renovo.html