【发布时间】:2016-03-15 08:21:28
【问题描述】:
我想阻止特定的第三方 DLL 文件在运行时加载到我的应用程序的进程中。我最初的尝试是使用 MS Detours 产品。
我有一个在 64 位 Windows 10 上运行的 32 位 MFC 应用程序。我使用免费的 MS Detours 3.0 版本进行了可行性检查。
在我的 MFC 应用程序类构造函数中,我调用 Detours 来拦截“加载库”API(LoadLibraryW、LoadLibraryExW、LoadLibraryA 和 LoadLibraryExA)。这让我可以拦截库加载,目前我只是注销正在加载的库的名称,然后调用原始 API,以便继续加载库。最终的计划是查找特定的第三方 DLL 文件名,在这种情况下只返回失败,阻止 DLL 文件加载。
这类作品。当我运行我的测试应用程序时,将其关闭,然后检查日志,我看到从我的拦截函数中记录了一堆库加载消息。
但是,我的代码永远不会看到我正在寻找的特定第三方 DLL 文件。发生的事情是第三方 DLL 文件在我到达我的应用程序类构造函数时已经加载。所以我来晚了!
我怎样才能获得一些代码来执行 EARLIER 并希望在注入第三方库之前安装 detours 的东西?
【问题讨论】:
标签: c++ windows hook dll-injection detours