使用 Detours 挂钩 Api 在 Detach 上崩溃

Posted

技术标签:

【中文标题】使用 Detours 挂钩 Api 在 Detach 上崩溃【英文标题】:Hooking Api with Detours crashes on Detach 【发布时间】:2013-05-10 14:03:11 【问题描述】:

我试图通过将 .dll 注入 explorer.exe 来绕过 NtQueryVolumeInformationFile。

在我尝试弹出 dll 之前它工作正常。弹出 .dll 后,explorer.exe 崩溃。

操作系统:Windows 7 32 位 编译器:Visual Studio 2012 with Detours 3.0 Libary

DllMain.cpp:http://pastebin.com/6PgZcdhi Header.h:http://pastebin.com/BGQ527Ym

我希望有人可以帮助我找出问题所在。我现在在这个问题上工作了 2 天,但没有任何线索。

感谢您的帮助:)

【问题讨论】:

【参考方案1】:

如果至少有一个挂起的调用,从目标进程分离是不安全的,所以安全分离需要一种机制来检测挂起的调用,据我所知,detours没有这样的机制,你必须自己做。顺便说一句,您可以在 windbg 中获取故障转储和 !analyze -v 它,这有助于诊断分离时发生的情况。

【讨论】:

以上是关于使用 Detours 挂钩 Api 在 Detach 上崩溃的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Detours 挂钩 exe 函数?

为啥 Detours 不能再在 Windows 7+ 中挂钩 shell32.dll 函数

Detours - 挂钩类成员函数 - 设置目标函数偏移的语法?

detours hooked CreateFile 函数触发堆栈溢出

Detours Hook:GetVolumeInformation 随机卷序列

如何使用 C++ 挂钩 Delphi 函数