1

次のコマンドを実行することで、プロセスにロードされたモジュールのベースアドレスを正常に取得できます。

MODULEINFO mInfo;
GetModuleInformation(GetCurrentProcess(),GetModuleHandle(L"moduleName"),&mInfo,sizeof(mInfo));
LPVOID baseAddress = mInfo.lpBaseOfDll;

.textしかし、どうすればそのモジュールのセクションの開始アドレスと終了アドレスを取得できますか?

4

1 に答える 1

2

アプリケーションとモジュール(別名、任意の実行可能コード)は、Microsoftによって指定されたいわゆる「PortableExecutable」形式に基づいて構築されています。必要な情報を取得するには、メモリ内の論理テーブルを調べ、PE形式に基づいて目的のメンバーにアクセスする必要があります。セクションはデータとコードをホストします。セクション(.textなど)の開始と終了を取得するには、セクションヘッダーを調べて、実行可能かどうかを取得する必要があります。Matt Pietrekは、PEの「導入」と見なす必要のある標準ドキュメントを作成しました。

于 2012-06-19T14:40:02.407 に答える