请参考我的一篇之前的问题 https://stackoverflow.com/questions/14681364/issues-passing-data-from-dll-to-application。我问的是如何从 DLL 加载已编译的资源。然后参考David Heffernan的回答。他的建议是使用内置机制直接从 DLL 实例加载资源,甚至不使用我自己的导出函数。这向我指出了一个安全漏洞。
如果确实如此,如果这种解决方案可行,那么任何外部第三方都可以从任何 Delphi 应用程序/DLL 加载资源吗?嵌入式资源的安全性如何?假设我编译了一个带有嵌入资源的 DLL。有人可以获取这个 DLL 并提取资源吗?考虑到他们必须知道资源名称,这有多容易?他们是否能够检测编译了哪些资源并获取命名资源的列表?如果是这样,那么我将必须实现自己的安全级别并加密每个嵌入式资源并通过登录对其进行解密。
The 资源部分 of a Windows 便携式可执行文件 http://en.wikipedia.org/wiki/Portable_Executable任何对可执行文件具有读取权限的进程/用户都可以访问和枚举。
Windows API提供了一系列的函数与资源合作 http://msdn.microsoft.com/en-us/library/windows/desktop/ff468907%28v=vs.85%29.aspx,包括以下功能:
- 添加、删除和替换资源
- 枚举资源
- 查找并加载资源
- 资源文件格式
- 使用资源
事实上,有很多现成的工具可以执行此操作。你自己的Delphi安装有一个名为Resource Explorer的演示项目,通常安装在文件夹中Samples\Delphi\VCL\resXplor
.
正如你所看到的,任何有知识和/或tools https://www.google.com/search?q=resource+editor不仅可以读取,还可以删除和替换 Windows 可执行文件中找到的资源,无论生成它的编译器是什么。
您可以在文章中找到有关 PE 文件格式的更多信息深入研究 Win32 可移植可执行文件格式 http://msdn.microsoft.com/en-us/magazine/cc301808.aspx.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)