gpt4 book ai didi

winapi - 如何保护自己免受 shell DLL 加载到进程中的影响?

转载 作者:行者123 更新时间:2023-12-02 08:34:34 25 4
gpt4 key购买 nike

当您使用 GetOpenFileName() 使用标准 Windows“文件打开”对话框时,shell 将加载显示文件列表所需的各种 DLL,包括自定义的 DLL。

在我的应用程序中,我发现 TortoiseCVS 用于在图标上绘制覆盖层的 DLL 正在调用 GdiPlusShutdown(),因此在显示“文件打开”对话框后一段时间,TortoiseCVS DLL 将被卸载,它将关闭如果关闭 GDI+,我的图形功能就会全部失败!

这似乎很糟糕,基本上任何旧的 DLL 都可以由我的应用程序随时加载,并开始对其状态进行随机操作。我的情况的解决方法非常简单 - 如果我检测到 GDI+ 已关闭,只需重新启动它即可。然而,如果这种情况发生在客户的机器上,而我无法对其进行调试,那么弄清楚发生了什么就会更具挑战性。

有人可以提供任何见解吗?我能做些什么来阻止这种情况发生?

最佳答案

我不得不处理戴尔在其机器上放置的垃圾,特别是 wxVault。我的解决方案是“简单地”修补代码。 DEP 有点棘手,但仍然可行。您可以看一下 Microsoft Detours,这是一种稍微结构化的方法来完成同样的任务。您仍然会加载 DLL,但至少您可以阻止它调用它不应该调用的函数。

要了解为什么 Windows 有如此蹩脚的机制,请阅读 Raymond Chen 的“Old New Thing”博客或书籍。

关于winapi - 如何保护自己免受 shell DLL 加载到进程中的影响?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/93154/

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