我有要调试的Windows应用程序。

当我用ollydbg打开它并附加到此应用程序过程中时,当我按Play键时,我看到的是attached process paused at ntdll.DbgBreakPoint
>
thread ... terminated , exit code 0.

我在寻找反调试功能,所以我在寻找DbgUiRemoteBreakin,并找到了它。 >
push 8 
...
...
..
call ntdll.DbgBreakPoint
.....


我试图找到此功能的作用,因此我在功能的第一行(push 8)上做了标记,然后按play键,我看到ollydbg在cmp Byte ptr...行上停止了。 >
如何解决此反调试问题?

#1 楼

这不是反调试,而是Win32调试API实现进程附加的标准方法。 OS注入了带有DbgBreakPoint调用的线程,以确保进程停止,因为否则进程可能处于未知状态。大多数调试器应该透明地处理它,但是如果您不这样做,则只需在您感兴趣的某些API上设置断点,然后继续该过程即可。断点线程将退出,但其他线程将继续运行,并有望达到您的断点。另外,您也可以在暂停后仅切换到主线程或另一个线程,然后检查调用堆栈以查看程序在做什么。