0

我实际上正在开发一个注入到进程中的 DLL。这个 DLL 在可执行文件的代码周围设置了几个 INT3 中断,这被调用了很多。我的 DLL 的异常处理程序捕获那些 INT3 以更改几个寄存器值和类似的东西,然后它恢复进程以便它可以继续工作。

问题是:当我需要调试 DLL(通过在 Visual Studio 中启动应用程序)时,所有这些 INT3 都由 Visual Studio 处理。有没有办法告诉 Visual Studio 将这些异常传递给应用程序的(dll)异常处理程序?

重要笔记:

  • 我无法禁用这些 INT3,因为当这些异常发生时(在处理程序上),实际的 dll 代码就会发生。
  • 可执行文件已编译。我没有源代码。

谢谢

4

1 回答 1

1

INT3 是调试中断指令,因此您的 DLL 是一个调试器。您刚刚发现了调试调试器的乐趣。

不,Windows 不知道是谁添加了 INT3,你还是 Visual Studio。因此,它将所有中断传递给 Visual Studio。Visual Studio 确实会跟踪,但所有意外的断点(即不是由 Visual Studio 本身设置的)都会交给用户。原因是这会捕获断言等。

于 2015-03-27T10:42:25.420 回答