gpt4 book ai didi

windows - 如何拦截dll方法调用?

转载 作者:可可西里 更新时间:2023-11-01 12:34:34 37 4
gpt4 key购买 nike

如何拦截dll方法调用?

  • 有哪些可用的技术?
  • 只能用 C/C++ 完成吗?
  • 如何拦截所有正在运行的进程对给定 dll 的方法调用?
  • 如何拦截给定进程对给定 dll 的方法调用?

最佳答案

我可以想到两种标准方法来做到这一点

  • DLL导入表钩子(Hook)。
    为此,您需要解析 DLL 的 PE header ,找到导入表并写入您自己的函数的地址,而不是已经写入的地址。您可以保存原始函数的地址,以便以后调用它。此 wikipedia article 的外部链接中的引用应该会为您提供执行此操作所需的所有信息。

  • 直接修改代码。找到你想要 Hook 的函数的实际代码并修改它的第一个操作码以跳转到你自己的代码。您需要保存那里的操作码,以便它们最终会被执行。这比听起来更简单,主要是因为它已经由不少于 Microsoft 自己以 Detours library 的形式实现。 .
    这是一件非常巧妙的事情。例如,只需几行代码,您就可以替换 outlook.exe 中对 GetSystemMetrics() 的所有调用,并观察发生的奇迹。

一种方法的优点是另一种方法的缺点。第一种方法允许您准确地将手术 Hook 添加到您想要的 DLL,而所有其他 DLL 都未 Hook 。第二种方法允许你使用最全局的钩子(Hook)来拦截所有对函数的调用。

关于windows - 如何拦截dll方法调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/220515/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com