goo

PEフォーマット .rsrcセクション 概要

◆一覧リスト
HSP Ver3.0
HSP Ver2.61
ブログ関連
その他
★人気blogランキング

「PEフォーマット .rsrcセクション 概要」

◆「.rsrc」
「.rsrc」セクションには、アイコン、ビットマップ等のデータが入っています。
以下、「.rsrc」セクションの構造のメモです。
また、セクション名の取得方法はこちらです。

「.rsrc」 セクション

① IMAGE_RESOURCE_DIRECTORY 構造体
位置:先頭
サイズ:16byte
※リソースの形式(アイコンとかビットマップ)の数等を取得

typedef struct _IMAGE_RESOURCE_DIRECTORY {
DWORD Characteristics;
DWORD TimeDateStamp;
WORD MajorVersion;
WORD MinorVersion;
WORD NumberOfNamedEntries;
WORD NumberOfIdEntries;
// IMAGE_RESOURCE_DIRECTORY_ENTRY DirectoryEntries[];
} IMAGE_RESOURCE_DIRECTORY, *PIMAGE_RESOURCE_DIRECTORY;



② IMAGE_RESOURCE_DIRECTORY_ENTRY 構造体
位置:①の後ろ
サイズ:8byte

typedef struct _IMAGE_RESOURCE_DIRECTORY_ENTRY {
union {
struct {
DWORD NameOffset:31;
DWORD NameIsString:1;
};
DWORD Name;
WORD Id;
};
union {
DWORD OffsetToData;
struct {
DWORD OffsetToDirectory:31;
DWORD DataIsDirectory:1;
};
};
} IMAGE_RESOURCE_DIRECTORY_ENTRY, *PIMAGE_RESOURCE_DIRECTORY_ENTRY;


①で取得した形式の数だけ②の繰り返し



③ IMAGE_RESOURCE_DIRECTORY 構造体
位置:②の後ろ
サイズ:16byte
※形式(アイコンとかビットマップ)内のIDの数等を取得



④IMAGE_RESOURCE_DIRECTORY_ENTRY 構造体
位置:③の後ろ
サイズ:8byte
※形式(アイコンとかビットマップ)内のIDの数等を取得

③と、③で取得したIDの数だけ④の繰り返し
例)アイコン1つ、ビットマップ2つの場合
[③アイコン][④ID 100][③ビットマップ][④ID 200][④ID 201] となります



⑤ IMAGE_RESOURCE_DIRECTORY 構造体
位置:④の後ろ
サイズ:16byte
※使用言語の数等を取得



⑥IMAGE_RESOURCE_DIRECTORY_ENTRY 構造体
位置:⑤の後ろ
サイズ:8byte
※使用言語等を取得

⑤と、⑤で取得した数だけ⑥の繰り返し
例)日本語と米国2つの場合
[⑤言語][⑥日本語][⑥米国] となります


⑦ IMAGE_RESOURCE_DATA_ENTRY 構造体
位置:⑥のオフセット後ろ
サイズ:16byte
※データの位置とサイズを取得
「OffsetToData」はRVAで示されています。
IMAGE_SECTION_HEADER構造体(セクション名の取得方法参照)の
「VirtualAddress」を基準とします。
例えば、
「VirtualAddress」が0x16000
「OffsetToData」が0x17000の時、
データの位置は「.rsrc」セクションの開始から0x1000になります。

typedef struct _IMAGE_RESOURCE_DATA_ENTRY {
DWORD OffsetToData;
DWORD Size;
DWORD CodePage;
DWORD Reserved;
} IMAGE_RESOURCE_DATA_ENTRY, *PIMAGE_RESOURCE_DATA_ENTRY;



⑧ データ
位置:⑦のOffsetToData
サイズ:⑦のSize



コメント ( 0 ) | Trackback ( 0 )
« PEフォーマッ... フォルダ選択... »
 
コメント
 
コメントはありません。
コメントを投稿する
 
名前
タイトル
URL
コメント
コメント利用規約に同意の上コメント投稿を行ってください。
数字4桁を入力し、投稿ボタンを押してください。
 
この記事のトラックバック Ping-URL
 
 
※ブログ管理者のみ、編集画面で設定の変更が可能です。