2016-07-12 3 views
1

dllで特定の関数のRVAを取得し、そのRVAをdllのベースローディングアドレスに追加して、リモートプロセスメモリ内の関数を見つける必要があります。しかし、私はこのメモリアドレスをリモートプロセスで作成されるスレッドにバッファに渡す必要があります。だから私はアドレスのDWORD表現としてこれを渡す必要があるかどうか疑問に思っていた。私は64ビットWindows上にあるので、もしそうなら、それはDWORD_PTR、DWORD64などでしょうか?または、私はまだ実際には私には意味がないポインタとして渡すことはできますか?DWORDにリモート仮想アドレスを格納していますか?

答えて

1

簡単な調査をしましょう。 specを参照します。オプションのヘッダーのSizeOfImageフィールドを参照してください。

すべてのヘッダーを含むサイズ(バイト単位)。セクションアラインメントの倍数である必要があります。

これは実際にマップされたイメージのサイズで、PE32 + PE32 +フォーマットの場合は4バイトの整数です。結果として、PE内のすべての相対アドレスは常に32ビット整数に収まります。また、PE構造のRVAフィールドの大部分はDWORDと宣言されています。そのIMOは良いヒントです。

先頭へ移動:32ビットまたは64ビットシステムの両方でDWORDにRVAを保存できます。

関連する問題