3

我们在C++ builder中构建了一个大型应用程序,它在启动时会查看一个文件夹并加载所有当前的 dll 文件。我认为这可能不是一件好事,并通过创建一个仅启动 Web 浏览器并打开带有“拥有”一词的图片的 dll 来尝试我的想法:P

无论如何,它奏效了。因此,系统可能会因 dll 被关闭或添加新的 dll 以任何方式受到损害。远程管理员访问,格式化驱动器,你的名字。

所以我的想法是试图堵住这个洞。这方面的最佳做法是什么?我正在考虑对 dll 进行某种签名。让 .exe 保存有效 dll 的名称列表实际上并不能解决它,因为可以替换 dll。名称和校验和列表将起作用,但保留自动加载功能但仅加载正确签名的 dll会很好。

编辑:我正在研究使用似乎可以完成这项工作的signtool.exe 。但是我找不到任何好的参考来说明如何在 C++ 中实际检查 dll 的签名。谁有链接?

4

2 回答 2

2

听起来您很容易受到dll 劫持漏洞的攻击,该漏洞基本上影响了为 Windows 编写的所有内容(这是微软无法保护砖头的另一个例子。)。Microsoft 提供了缓解此缺陷的建议。

于 2011-10-28T13:51:14.593 回答
1

您应该保护包含 DLL 的文件夹,以便只有具有管理访问权限的人才能对其进行写入。

除此之外,任何可以写入这样一个文件夹的人都可以做他们想做的任何其他事情,而您对此无能为力。

于 2011-10-28T14:00:35.307 回答