【问题标题】:How to hook an exe function with Detours?如何使用 Detours 挂钩 exe 函数?
【发布时间】:2015-07-03 13:58:48
【问题描述】:

我刚开始使用ms Detours 库,我想知道如何使用它来挂钩一个exe 文件。我得到了来自IDA Pro 的函数偏移量,但是我不知道应该连接到哪个地址。如果我使用withdll.exe 工具钩到偏移量,它会给出access violation。如果可能的话,有人可以给我看一个挂钩 exe 的例子吗?

【问题讨论】:

  • 你试过偏移量减去图像基本偏移量吗?
  • @fassl 不,我没有。我如何得到它?如果通过获取当前进程并将其转换为 void 指针,则我无法减去它。
  • 您可以在检查文件的摘要中看到图像基本偏移量,这是 IDA 视图中任何代码之前的第一件事。您可以将其转换为 DWORD 或 QWORD 并添加函数 offset 减去 imagebase。还要确保您是否正在覆盖东西(我不知道绕道如何挂钩)以使用 VirtualProtect 准备地址,例如允许写入或执行内存范围。可能还有detours给你做这个,我不知道,只是给个提示。
  • 嗯...不能让它工作...图像库是0x400000,功能位置是0x401652,即使我将它们转换为DWORD并减去图像库该程序只是因错误StackHash_4c0d 而崩溃。
  • 图片句柄地址要加0x1652。

标签: c++ function hook exe detours


【解决方案1】:

StackHash 崩溃的发生是因为您可能正试图从没有 EXECUTE 访问权限的页面执行代码。您可以禁用 DEP 以确保这是导致崩溃的原因。随后,如果确实如此,您应该使用VirtualProtectVirtualProtectEx 来修改页面保护,使用包括执行访问的保护常量之一(您可以查看常量列表here)。根据地址/偏移量计算,我在您的描述中没有看到任何问题。

以下是有关如何禁用 DEP 的说明:

  1. 单击“开始”菜单,然后转到“控制面板”。
  2. 点击系统维护,然后点击系统。
  3. 选择高级系统设置。
  4. 在系统属性下,从顶部的性能部分中选择设置。
  5. 单击“数据执行保护”选项卡。
  6. 选择“为除我选择的程序和服务之外的所有程序和服务启用 DEP”。
  7. 查找触发错误的应用程序的可执行文件。
  8. 选择导致错误的应用程序并单击“打开”将其添加到您的 DEP 例外列表中。
  9. 单击“确定”保存新设置。

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-28
    • 2012-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多