現在私の脳を爆発させているいくつかの簡単な質問: MODULEENTRY32 構造体 (リモート プロセスのスナップショットから作成され、リモート プロセスのモジュールを参照する) から取得されたベース アドレスは、メモリ内の実際のアドレスまたは相対アドレスです。 ? それが相対的である場合、それは何と相対的ですか?
2番目:リモートプロセスのスナップショット内の他のモジュールのベースアドレスは、リモートプロセスのベースアドレスに関連していますか、それともメモリ内の実際のアドレスですか? ドキュメントには、MODULEENTRY32構造体のhModuleメンバーは「所有プロセスのコンテキストにおけるモジュールへのハンドル」であると記載されているため、相対アドレスであることを暗示していると思いますが、よくわかりません。
私が言っていることが完全に文脈から外れている場合に備えて、ここにいくつかの部分的なコードがあります:
DWORD getProcBaseAddress(DWORD targetPID) {
hModuleSnap = CreateToolhelp32Snapshot( TH32CS_SNAPMODULE, targetPID );
MODULEENTRY32 me32;
me32.dwSize = sizeof( MODULEENTRY32 );
Module32First( hModuleSnap, &me32 );
_tprintf( TEXT("Proc Base Address = 0x%08X"), (DWORD) me32.modBaseAddr);
return (DWORD) me32.modBaseAddr;
}
これは機能的なコードである可能性があります。targetPID は、ターゲット プロセスのプロセス ID です。とにかく、私の質問は modBaseAddr に関するものです。ご協力またはご検討いただきありがとうございます。相対アドレス指定と物理アドレス指定に関する良い記事や情報源を教えていただければボーナス ポイント :-]