【问题标题】:Does anybody know a hooking/detours library that can hook Dotnet Methods?有人知道可以挂钩 Dotnet 方法的挂钩/弯路库吗?
【发布时间】:2012-04-27 16:09:40
【问题描述】:

有人知道可以挂钩 Dotnet 方法的挂钩/弯路库吗? 我知道鼹鼠可以在运行单元测试的情况下做到这一点。但是它使用分析器,实际上不适合或设计用于您自己的库中,而且您不能将内部方法或静态方法与它挂钩。

【问题讨论】:

    标签: .net hook


    【解决方案1】:

    我不知道。在我的公司,我自己创建了一个。你必须使用探查器来做到这一点。另外,请注意,如果存在本机 dll,您将无法检测该功能,您必须以其他方式删除它或执行其他操作,例如使用 loadlibrary 钩子绕道而行。

    最后,目前的处理方法是自己编辑函数或完全替换它。出于稳定性原因,这是一件非常危险的事情。有更复杂的方法,但首先你必须从基础开始。 IIRC 我开始使用这个来了解分析: http://msdn.microsoft.com/en-us/magazine/cc188743.aspx

    当我了解到这一点时,我错过了关于本机 vs 字节码的一点,因此您可以避免这种特别的头痛。

    【讨论】:

    • 我试图避免使用分析器或调试器。很好的链接。探查器 API 是否始终存在,或者仅在安装探查器时才存在。我想要一些可以放入可部署代码的东西。
    • 它从 1.1 开始就在那里,我用它来编译它,因为你需要它在所有版本上都支持。我目前有一个以这种方式部署给主要客户的产品。我有时间和资源这样做,根据您的特定需求可能需要一些时间来设置。我必须检测一个微软拥有的 dll,该 dll 已签名,因此无法编辑。您只能使用分析器对其进行检测。
    【解决方案2】:

    今天至少存在这两个不使用分析 api 的框架(当然,它们使用可能非常脆弱的 .NET 内部进行模拟)

    • Harmony:麻省理工学院许可。似乎实际上已经在一些游戏模组中成功使用,同时支持 .NET 和 Mono。
    • Deviare In Process Instrumentation Engine:GPLv3 和商业。 .NET 支持目前被标记为实验性的,但另一方面也有商业支持的好处。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-04
      • 2012-11-30
      • 1970-01-01
      • 2020-05-21
      相关资源
      最近更新 更多