检查API是否受到监控(挂钩?)

时间:2011-10-27 13:27:58

标签: c windows winapi hook

我的应用程序使用了一些API,例如GetProcAddressCreateProcess,这些API有时会将防病毒标记为恶意,即使它不是。

我要做的是检查是否正在监视或挂钩特定的API,如果是,那么我将不会调用该部分代码。

如何检查某个API是否已挂钩?

这是一个用C语言编写的Windows应用程序。

感谢。

1 个答案:

答案 0 :(得分:1)

在win32上没有检测和/或放置钩子的官方方法(SetWindowsHookEx()http://msdn.microsoft.com/en-us/library/windows/desktop/ms644990)等功能除了只包含很少的功能外)。

检测钩子取决于钩子的应用方式。

有两种流行的方法可以放置一个钩子:

  1. 导入/导出表格修补
  2. 代码覆盖
  3. 有关放置挂钩的不同方法的详情(优缺点),请考虑阅读http://help.madshi.net/ApiHookingMethods.htm

    每种挂钩方法都需要采用不同的方法来检测它。

    对于检测如上所述放置的挂钩的方法,请在此处查看“ApiHookCheck算法”http://www.security.org.sg/code/apihookcheck.html。此页面上提供了示例源,我做了 not test。