0

ilmergeのクローンであるilrepackの問題を修正しようとしています。ただし、PE ファイル形式を「正しく」修正するための基本的な概念を理解するのに苦労しています。

マージしているすべてのバイナリには、ID または名前のないエントリがあります。

Id または Name のない ResourceEntry

それぞれのデータは VS_VERSION_INFO 構造体のようです。

        "ϐ4\0VS_VERSION_INFO\0\0ҽﻯ\0\t\0䴶ኒ\t\0䴶ኒ?\0\0\0\0\0\0\0\0\0\0\0D\0VarFileInfo\0\0$\0Translation\0\0\0Ұ̰\0StringFileInfo\0̌\0000004b0\0LCompanyName\0\0Just A Programmer LLC\0\\FileDescription\0\0AppDomainPowerShellRunner\0@FileVersion\0\00.9.4754.19766\0\0TInternalName\0JustAProgrammer.ADPR.dll\0\0|,LegalCopyright\0Copyright © Just A Programmer LLC 2011-2012\0\\OriginalFilename\0JustAProgrammer.ADPR.dll\0\0TProductName\0\0AppDomainPowershellRunner\0DProductVersion\00.9.4754.19766\0\0HAssembly Version\00.9.4754.19766\0\0"   string

IMAGE_RESOURCE_DIRECTORYで読んだすべてのものから、リソース エントリには名前または ID があるようです。

struct IMAGE_RESOURCE_DIRECTORY
{
    long Characteristics;
    long TimeDateStamp;
    short MajorVersion;
    short MinorVersion;
    short NumberOfNamedEntries;
    short NumberOfIdEntries;
}

だから私の質問は:

  • VS_VERSION_INFO はリソース エントリまたはリソース ディレクトリですか? そうでない場合、それは PE のどのセクションに属しますか?
  • IDはありますか?
  • 名前はありますか?
4

1 に答える 1

2

実際のところ、「IMAGE_RESOURCE_DIRECTORY で読んだすべてのことから、リソース エントリには名前または ID があるようです。」正しい!リソース ディレクトリ内のアイテムには、常に ID または名前のいずれかがあります (この順序で!)。

はい、VS_VERSION_INFO はリソース ディレクトリのメンバーであり、その ID は 16 です。いいえ、名前はありません (組み込みのリソース タイプであるため)。

以下、バージョン情報リソース項目を示す Truecrypt イメージのスナップホスト (CFF Explorer を使用)

ここに画像の説明を入力

于 2013-01-06T16:56:48.390 に答える