2017-06-28 3 views
0

私はPEビューアを書きます。私は各セクションの生データを印刷しようとしています。PEファイルのセクションから生データを取得

私はセクションにジャンプし、生データ

を印刷するsection[i]->SizeOfRawData)でループを作成するために、section[i]->PointerToRawDataを使いたい

私は生のデータを表示する方法を、私はそれを行うための流れを示しているとすることはできますか?

はありがとうと私の悪い英語のため申し訳ありません

答えて

0

PointerToRawDataは、ファイルの先頭からの相対オフセットされるので、単にあなたがファイルをロードしたメモリアドレスにそれを追加すると、あなたの出発点を与える必要があります。

const BYTE* p = (BYTE*)pFileBase + section[i]->PointerToRawData; 
const BYTE* pEnd = p + section[i]->SizeOfRawData; 
while (p<pEnd) 
{ 
    your_char_output_routine_goes_here(*p++); 
} 
+0

ありがとうございます。しかし、これらのデータの16進値を取得する方法は?これらのデータを印刷すると、ヌル文字が付きます。それをどう扱うか? –

+0

16進バイト値を表示するには、printf( "%02X"、* p)のようなものを使用します。 16進ダンプのキャラクタ列には、通常、32未満と126を超えるASCIIコードの期間が表示されます。そうしないと、キャラクタを直接表示できます。例:printf( "%c"、(* p <32 || *p> 126)? '':* p); – byteptr

関連する問題