我正在尝试使用OllyDbg的“执行直到用户代码”功能(这对我来说很重要),但它永远不会有效。
我首先尝试了一个名为MessageBoxA
的程序。当它调用它时,我在调试器中暂停程序并发出OllyDbg执行直到用户代码,但程序仍然暂停并完全冻结。我甚至无法单击MessageBox
的确定按钮,甚至可以从OllyDbg继续。当我努力让它继续下去时它就崩溃了。
所以我决定在NASM中编写一个应用程序(完全控制)并在那里尝试。 MessageBoxA
弹出,我暂停,执行到用户代码,这次我可以按OK按钮,但是OllyDbg没有暂停程序。程序就好像什么也没发生一样执行。
为什么它不起作用,我该怎么做才能解决它?
OllyDbg 1.10(无插件)
Windows 7 Ultimate SP1 64位
的更新
我试过使用OllyDbg 2.0但是Execute until用户代码按钮由于某种原因被完全禁用。
答案 0 :(得分:5)
我在遵循Lena的教程#4时遇到了同样的问题,我想我已经弄明白了。当我按Alt + F9“执行直到用户代码”时,我注意到线程窗口(Alt + T)中除了一个线程之外的所有线程都设置了挂起标志。显然,Alt + F9只恢复一个线程。幸运的是,OllyDbg能够通过右键单击并选择“Resume”(或使用+键)来手动恢复其他线程。对我来说,这足以解冻对话框并在调用MessageBoxA后立即让OllyDbg暂停。