返回特定模块时中断

逆向工程 ollydbg 调试 记忆 调用栈
2021-06-21 09:49:49

我正在 OllyDbg 中调试一个应用程序,我在一个特定的地方暂停了程序。现在我深入了解 ntdll 和其他与 gui 相关的模块调用,从堆栈来看。我想在应用程序返回到指定(主)模块中的任何函数时立即中断。有这种断点条件吗?我怎样才能做到这一点?

2个回答

转到 Ollydbg 中的内存窗口。找到要在返回时中断的模块的代码部分(通常是 .text)。右键单击内存部分并设置 break-on-access 或 hit F2一旦执行达到该内存,您就会中断。您还可以将内存访问更改为只读,当执行命中该内存段时,您将收到异常。

您还可以使用跟踪并在 EIP 处于特定范围内时设置条件停止,为此只需通过转到调试、设置条件 ( Ctrl+ T)来设置条件然后使用 Debug, Trace Into ( Ctrl+ F11) 或 Debug, Trace Over ( Ctrl+ F12) 开始跟踪这将使您能够看到您来自哪里,即使呼叫是间接的。

不保证会返回,但如果您在不同的模块中,很可能会在第一次执行发生时返回。您还可以通过导入、对象 vtable 或其他一些机制触发调用。你需要研究休息时你所处的状态。

在正常情况下alt+f9 execute till user code应该让你回到用户代码