将一个调试器附加到 DotNet 应用程序,将第二个附加到加载的 DLL

逆向工程 艾达 dll 。网
2021-06-20 14:56:49

我正在尝试反转一个使用我感兴趣的 DLL 的应用程序。

我可以使用 DnSpy 正确反汇编应用程序本身,因为它是一个 .Net 应用程序,我可以使用 IDA 反汇编使用过的 DLL,因为它是本机 C 共享库。

我使用 x64dbg 作为调试器,我想看看应用程序和 DLL 之间的交互。我可以通过将 .Net 应用程序加载到 x64Dbg 中并等待 DLL 调用来正确地中断 DLL,这很好。

但是 x64dbg 不支持 .Net 语法的事实使得当流从 DLL 返回到应用程序时玩起来很奇怪,我想执行以下操作:

  • 使用 DnSpy 内置调试​​器查看 .Net 应用程序的高级情况。

  • 并使用附加到 DLL 的 x64dbg 在应用程序调用它时查看它。

但我无法做到这一点,因为根进程(.Net 应用程序)不能同时被两个调试器调试。

我如何设置 x64dbg 来拦截 DLL 而不将其附加到 .Net 进程?

甚至有可能这样做吗?

或者也许我不知道一些可以帮助我的魔法工具?

任何的想法 ?

谢谢 :)

1个回答

在我看来,最好的调试方法是使用Windows SDK 中的WinDbgWindows 应用商店中的WinDbg 预览版在 Windows 中,不可能将两个调试器附加到同一个进程。WinDbg 支持轻松调试 .NET 和本机进程。

要访问 .NET 功能,您可以运行命令:

.loadby sos clr

在.NET扩展的更多细节在这里 改进.NET与sosex第三方扩展调试这里 常用命令的WinDbg的主题分组这里

完全有效地使用它需要一些学习曲线,但是一旦学会它,它就是非常强大的 .NET 和本机代码调试器。

如果必须使用 x64dbg,那么您需要一个支持 .NET 的插件,当前可用的插件在此处列出:https : //github.com/x64dbg/x64dbg/wiki/Plugins