在打包的EXE文件中查找OEP

时间:2011-03-21 16:53:18

标签: debugging assembly reverse-engineering ollydbg

对于打包的.exe文件,如何实际找到OEP (原始入口点)是否有一般规则?有哪些OEP线索可以用调试的汇编语言进行搜索?

假设有一个Windows .exe文件包含 PC-Guard 5.06.0400 ,我希望将其解压缩。因此,关键条件是在新提取的代码块中找到OEP。

我会使用通用调试器 OllyDBG 来做到这一点。

3 个答案:

答案 0 :(得分:2)

在一般情况下 - 没办法。这在很大程度上取决于打包机。在最常见的情况下,打包器可以用其他代码替换OEP中的一些代码。

答案 1 :(得分:1)

这完全取决于打包器及其使用包和/或虚拟化代码的算法。看到你正在使用ollydbg,我建议检查tuts4you,woodmanns和openrce,他们有很多插件(iirc有一个用于在混淆的代码中查找oep的,但我不知道它的表现如何)和olly脚本处理拆包各种包装商(从中可以获得某种类型包装商的提示),他们也有很多关于这个主题的论文/教程,可能会也可能没有用。

PC Guard似乎没有受到太多关注,但视频链接和信息here应该有所帮助(赞美Google缓存!)

答案 2 :(得分:0)

很难指出任何简单的策略,并声称它一般都可以工作,因为打包工具的业务是让OEP找到一个非常难的问题。此外,有了一个好的包装工,找到OEP仍然是不够的。话虽如此,我确实有一些建议。

我建议您在Justin拆包机上阅读本文,他们使用当时相当有效的启发式方法,并且您可以从中获得一些里程。他们至少会将候选入境点的数量减少到可管理的数量:

对包装机问题及其解决方案的研究(2008) 作者:Fanglu Guo,Peter Ferrie,Tzi-cker Chiueh

还有一些网页分析页面可以告诉你很多关于你的打包程序的信息。例如,恶意软件分析器位于: http://eureka.cyber-ta.org/

这是另一个目前正在下降,但过去已经做了一个合理的工作,我认为很快会再次上升): http://bitblaze.cs.berkeley.edu/renovo.html