4

以前の質問の 1 つを参照してください。コンパイル済みリソースを DLL からロードすることについて質問しています。次に、David Heffernan による回答を参照してください。彼の提案は、組み込みのメカニズムを使用して、DLL のインスタンスからリソースを直接ロードすることです。エクスポートされた独自の関数を使用することさえありません。これは、セキュリティの抜け穴を指摘してくれました。

これが本当に当てはまる場合、このタイプのソリューションが可能である場合、外部のサードパーティは Delphi アプリケーション/DLL からリソースをロードできますか? 埋め込みリソースの安全性は? リソースが埋め込まれた DLL をコンパイルするとします。誰かがこの DLL を取得して、リソースを抽出できますか? リソース名を知らなければならないことを考えると、どれくらい簡単でしょうか? どのリソースがコンパイルされているかを検出し、名前付きリソースのリストを取得できますか? その場合、独自のレベルのセキュリティを実装し、すべての埋め込みリソースを暗号化し、ログインで復号化する必要があります。

4

1 に答える 1

10

Windows Portable Executableリソース セクションは、実行可能ファイルに対する読み取り権限を持つすべてのプロセス/ユーザーがアクセスおよび列挙できます。

Windows API は、リソースを操作する一連の関数を提供します。これには、次の関数が含まれます。

  • リソースの追加、削除、および置換
  • リソースの列挙
  • リソースの検索と読み込み
  • リソース ファイルの形式
  • リソースの使用

実際、この操作を実行するための準備ができているツールはたくさんあります。独自の Delphi インストールには、Resource Explorer というデモ プロジェクトがあり、通常はフォルダにインストールされますSamples\Delphi\VCL\resXplor

ご覧のとおり、知識やツールを持っている人なら誰でも、それを作成したコンパイラに関係なく、Windows 実行可能ファイルで見つかったリソースを読み取るだけでなく、削除して置き換えることができます。

PE ファイル形式の詳細については、記事An In-Depth Look into the Win32 Portable Executable File Format を参照してください。

于 2013-02-07T00:58:10.067 に答える