gpt4 book ai didi

c++ - 是否有可能在 Windows 上防止其他应用程序 Hook 系统 DLL

转载 作者:可可西里 更新时间:2023-11-01 14:18:05 30 4
gpt4 key购买 nike

我正在拼命寻找我的基于 Qt 的应用程序崩溃的原因。

经过一些观察我发现,即使没有选择任何文件,仅打开 QFileDialog(标准的 Windows 文件对话框)也会导致应用程序在几分钟后崩溃。它不会发生在所有机器上。

我已经在 dependency walker 中打开了我的应用程序,分析显示,打开文件对话框会加载大量 DLL,我的应用程序中不需要它们——所有挂接在 windows shell 中的工具。其中 - TortoiseSVN,它甚至依赖于卡住。

是否有可能在应用程序上下文中阻止加载其他 DLL,例如编解码器或 shell-hooks?

是否至少可以创建一个 QFileDialog 而无需加载所有与 Windows Hook 的工具?

enter image description here

最佳答案

这绝对是可能的,但并非微不足道。您需要做的是在 LoadLibrary 上插入一个 API Hook (和/或等效的 Native API。)当您的 Hook 被调用时,您可以检查 DLL 文件名并决定是否要传递它到真正的 LoadLibrary 或返回错误。

可以在几个地方找到有关 API Hook 的更多信息:

综上所述,对于您的具体情况,您最好只更改您的 TortoiseSVN 设置。如果您将 Tortoise 中的包含/排除路径设置为仅查看计算机上包含 SVN 存储库的目录,我敢打赌,只要您避开这些目录,这种卡住就会消失。

关于c++ - 是否有可能在 Windows 上防止其他应用程序 Hook 系统 DLL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29548723/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com