我的应用程序使用一些 API,例如GetProcAddress
and CreateProcess
这有时会导致防病毒软件将其标记为恶意软件,即使它不是恶意软件。
我想做的是检查特定的 API 是否正在被监视或挂钩,如果是,那么我不会调用该部分代码。
如何检查某个API是否被hook?
这是一个用 C 语言编写的 Windows 应用程序。
Thanks.
在 win32 上,没有官方方法来检测和/或放置钩子(除了SetWindowsHookEx()
(http://msdn.microsoft.com/en-us/library/windows/desktop/ms644990 http://msdn.microsoft.com/en-us/library/windows/desktop/ms644990)等函数仅涵盖一小部分功能)。
检测钩子取决于钩子的应用方式。
有两种流行的放置挂钩的方法:
- 导入/导出表修补
- 代码覆盖
有关放置挂钩的不同方法的详细信息(优点/缺点),请考虑阅读此处http://help.madshi.net/ApiHookingMethods.htm http://help.madshi.net/ApiHookingMethods.htm.
每种烹饪方法都需要不同的方法来检测。
有关检测如上所述放置的挂钩的方法,请查看此处的“ApiHookCheck 算法”http://www.security.org.sg/code/apihookcheck.html http://www.security.org.sg/code/apihookcheck.html。此页面上有可用的示例源,我就是这样做的not test.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)