Security 任何第三方都可以从我的项目中加载嵌入式资源吗?

Security 任何第三方都可以从我的项目中加载嵌入式资源吗?,security,delphi,embedded-resource,Security,Delphi,Embedded Resource,请参考我的一篇文章。我问的是如何从DLL加载已编译的资源。然后参考David Heffernan的答案。他的建议是使用内置机制直接从DLL实例加载资源,甚至不使用我自己的导出函数。这给我指出了一个安全漏洞 如果确实如此,如果这种类型的解决方案是可能的,那么任何外部第三方可以从任何Delphi应用程序/DLL加载资源吗?嵌入式资源的安全性如何?假设我编译了一个带有嵌入式资源的DLL。有人可以获取此DLL并提取资源吗?考虑到他们必须知道资源名称,这有多容易?他们是否能够检测到编译了哪些资源并获得命名

请参考我的一篇文章。我问的是如何从DLL加载已编译的资源。然后参考David Heffernan的答案。他的建议是使用内置机制直接从DLL实例加载资源,甚至不使用我自己的导出函数。这给我指出了一个安全漏洞

如果确实如此,如果这种类型的解决方案是可能的,那么任何外部第三方可以从任何Delphi应用程序/DLL加载资源吗?嵌入式资源的安全性如何?假设我编译了一个带有嵌入式资源的DLL。有人可以获取此DLL并提取资源吗?考虑到他们必须知道资源名称,这有多容易?他们是否能够检测到编译了哪些资源并获得命名资源的列表?如果是这样,那么我必须实现我自己的安全级别,加密每个嵌入式资源,并使用登录对其进行解密。

对可执行文件具有读取权限的任何进程/用户都可以访问和枚举a的资源部分

Windows API为提供了一系列函数,包括以下函数:

  • 添加、删除和替换资源
  • 列举资源
  • 查找和加载资源
  • 资源文件格式
  • 利用资源
事实上,有很多现成的工具来执行此操作。您自己的Delphi安装有一个名为ResourceExplorer的演示项目,通常安装在文件夹
Samples\Delphi\VCL\resXplor

正如您所看到的,任何具有相关知识和/或知识的人都可以读取、删除和替换windows可执行文件中的资源,而不管生成它的编译器是什么


您可以在文章中找到有关PE文件格式的更多信息。

谢谢,这正是我所怀疑的。我需要改变我的方法,加密我嵌入的所有东西。顺便说一句,我从来不知道嵌入的资源是windows范围的。我一直认为这是特尔斐特有的。这使我对许多事情都有了认识。@Jerrydoge:你应该看看。该应用程序非常有用,页面列出了它可以从任何Windows可执行文件(包括DLL)读取的资源类型。您应该使用它查看任何Delphi应用程序,并检查
RCDATA
资源;“我想你至少会有点惊讶。”肯怀特明白了,现在我知道这是一个Windows级别的功能,而不仅仅是Delphi。我的意思是,我已经确信任何语言都有嵌入资源的方法,但现在我知道它对任何语言都是通用的。@Jerrydoge:我发布的链接上的应用程序允许您查看其他人可以在您的exe/dll中看到的信息类型(其中一些是可视的)。正如我所说的,您可能希望使用它检查您自己的应用程序或DLL,这样您就知道您可能需要保护哪些内容。它也适用于其他(非Delphi)应用程序,其中一些应用程序有一些有趣的资源。