簡體   English   中英

任何第三方都可以從我的項目中加載嵌入的資源嗎?

[英]Can any third-party load embedded resources from my project?

請參考我之前的一個問題 我問的是從DLL加載編譯資源。 然后參考David Heffernan的回答。 他的建議是使用內置機制直接從DLL的實例加載資源,甚至不使用我自己的導出函數。 這給我指出了一個安全漏洞。

如果確實如此,如果可以使用這種類型的解決方案,那么任何外部第三方都可以從任何Delphi Application / DLL加載資源嗎? 嵌入式資源有多安全? 假設我使用嵌入式資源編譯DLL。 有人可以拿這個DLL並提取資源嗎? 考慮到他們必須知道資源名稱,它有多容易? 他們能夠檢測到編譯的資源並獲得命名資源的列表嗎? 如果是這樣,那么我將必須實現自己的安全級別並加密每個嵌入式資源並使用登錄進行解密。

Windows可移植可執行文件資源部分對任何具有可執行文件讀取權限的進程/用戶都是可訪問和可枚舉的。

Windows API提供了一系列用於處理資源的功能,包括以下功能:

  • 添加,刪除和替換資源
  • 枚舉資源
  • 查找和加載資源
  • 資源文件格式
  • 使用資源

事實上,有很多現成的工具可以執行此操作。 您自己的Delphi安裝有一個名為Resource Explorer的演示項目,通常安裝在Samples\\Delphi\\VCL\\resXplor文件夾中。

正如您所看到的,擁有這些知識和/或工具的任何人都不僅可以讀取,而且可以刪除和替換Windows可執行文件中的資源,無論生成它的編譯器如何。

您可以在文章深入了解Win32可移植可執行文件格式的文章中找到有關PE文件格式的更多信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM