【问题标题】:how to set hook for specific application before its starting如何在特定应用程序启动之前为其设置挂钩
【发布时间】:2011-07-01 05:43:03
【问题描述】:

我有两个程序:A.exe 和 B.exe。 可能是 B.exe 调用系统函数(例如 void foo() )。

在 A.exe 程序的代码中,我创建了 B.exe 程序的进程并等待它完成。 如果 FORCE B.exe 调用 foo() 函数,我希望它终止。

我知道可以使用 GLOBAL 挂钩来实现,但不清楚。 GLOBAL 钩子会影响其他工作进程并使其不稳定(例如,Skype 检查系统功能是否未更改,如果不正确则崩溃)。

我还想在启动 B.exe 之前设置挂钩。否则会有松散/非缓存的 foo() 调用。

【问题讨论】:

    标签: c++ c winapi hook


    【解决方案1】:

    您不能使用挂钩阻止 API 调用。您可以注入 DLL,然后继续手动挂钩 API 调用,通常是通过修改导入存根。更好的解决方案是使用调试 API,CreateProcess 和 DEBUG_PROCESS,然后是 WaitForDebugEvent/ContinueDebugEvent 循环。

    http://www.codeproject.com/KB/system/writing_debugger_1.aspx 很好地涵盖了 Windows 调试器。

    【讨论】:

      猜你喜欢
      • 2018-05-28
      • 1970-01-01
      • 1970-01-01
      • 2017-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-30
      • 1970-01-01
      相关资源
      最近更新 更多