我们在 C ++构建器中构建了一个大型应用程序,在启动时查看文件夹并加载所有当前的dll文件。我认为这可能不是一件好事,并通过创建一个只启动网络浏览器并打开带有所有权一词的图片来尝试我的想法:P
无论如何,它奏效了。因此,系统可能会因为关闭dll或添加新的系统而受到任何影响。远程管理员访问,格式化驱动器,您可以命名。
所以我的想法是试图堵住这个洞。这是最好的做法是什么?我在考虑某种签署dll的。让.exe持有有效dll的名称列表实际上并没有解决它,因为dll可以替换。一个名称和校验和列表可以使用,但保留自动加载功能但只能正确加载已签名的dll 会很好。
编辑:我正在考虑使用 signtool.exe ,这似乎可以完成这项工作。但我找不到任何好的参考,如何实际检查C ++中的dll签名。有链接的人吗?
答案 0 :(得分:1)
听起来你很容易受到dll hijacking exploit的攻击,它基本上影响了为Windows编写的所有内容(而另一个例子是微软无法保证砖块的安全性。)。微软有recommendations for mitigating this flaw。
答案 1 :(得分:1)
您应该保护包含DLL的文件夹,以便只有具有管理访问权限的文件夹才能写入。
除此之外,任何能够写入这样一个文件夹的人都可以做任何他们想做的事情,而且你无能为力。