如何使用 DbgUiRemoteBreakin 修复反调试器

逆向工程 ollydbg 反调试 过程 线
2021-07-07 04:19:22

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

当我打开它ollydbg并附加到这个申请流程时,我看到attached process paused at ntdll.DbgBreakPoint

当我按下播放时,我看到

thread ... terminated , exit code 0.

我在寻找反调试功能,所以我寻找DbgUiRemoteBreakin,我找到了。

我看到这个功能是

push 8 
...
...
..
call ntdll.DbgBreakPoint
.....

我试图找出这个函数是做什么的,所以我标记了函数的第一行 ( push 8),然后按播放,我看到 ollydbg 停止在线cmp Byte ptr...

我能做些什么来修复这个反调试?

1个回答

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