2

私はしばらく探していましたが、次の問題に対する適切な答えが見つかりませんでした:

dll 内でターゲット プロセスに dll を挿入しています。次のように、呼び出し元の GetProcAddress を受け取りたいアドレスのエクスポートされた関数を呼び出そうとします。

FARPROC funcAddr =
GetProcAddress(GetModuleHandle("target.dll"), "exportedFunc")

呼び出しは成功し、アドレスを取得すると、GetLastError() は明らかに 0 です。

しかし、これはアドレスの 16 バイトの 16 進数表現 (「0xAB4285B9」など) ですが、前の 8 バイトが欠落しているため、32 バイトの 16 進数表現に必要です (たとえば、7FF8 の場合、完全なアドレスは「0x7FF8AB4285B9」になります)。 ")

それは単なるプレゼンテーション/フォーマットの問題ですか、それとも私が望むものを得るために別の関数を呼び出す必要がありますか?

次のような情報を表示します。

WCHAR buffer[256];
swprintf_s(buffer, 32, L"%X", funcAddr);
MessageBox(NULL, buffer, L"Address", MB_OK);

助けていただければ幸いです。

コード以外のフォーマットで申し訳ありません。ここでは携帯電話の Web ブラウザを使用しています。

グリーツ

4

1 に答える 1