为什么 Olly 2.01 在模块 EP 处无法破解?

逆向工程 ollydbg 入口点
2021-07-02 01:25:35

我在玩关于解包的教程/白皮书,特别是 UPX。由于 Olly 2.01 是我选择的调试器,我试图用它解压一个 UPX 打包的 exe,令我惊讶的是,它看起来好像没有打破它应该的地方。

在 Olly 1.10 中,执行将停止两次:

1) 首先在 ntdll 在此处输入图片说明

2)然后是实际模块中众所周知的PUSHAD指令: 在此处输入图片说明

上面可见的 JMP 将跳转到解压后的代码: 在此处输入图片说明


这是我期望的行为。但是,具有相同设置(在“主模块的入口点”处中断)的 Olly 2.01 将在此跳转处停止: 在此处输入图片说明

如果遵循,将立即将我们带到解压后的代码: 在此处输入图片说明

此外,这两种情况下 JMP 之前的字节似乎不同,地址也是如此,这表明这实际上是一段不同的代码。


怎么了?Olly 2.01 是否真的“更聪明”了,识别打包机并在未打包的 OEP 处停下来?另外,为什么解包代码的 JMP 不同(如上所述,它们之前的不同指令和不同地址)?

1个回答

Olly 2.01 是否真的“更聪明”了,识别打包机并在未打包的 OEP 处停下来?

是的!您可以在 OllyDbg 的选项中禁用它,方法是转到DebuggingSFX并取消选中Unpack SFX modules automatically

自解压模块