2012-03-06 3 views
0

私はPEのチュートリアルを読んでいたセクションのテーブルにジャンプしますと、それはセクションテーブルのいずれかにSizeOfHeadersIMAGEBASE + SizeOfHeadersが

しかしSizeOfHeadersにIMAGEBASEを追加することにより、

ゴーを言う

です

すべてのヘッダのサイズ+セクションテーブル

ImageBaseにSizeOfHeadersを追加すると、テーブルではなくセクションでジャンプしますか?

+0

多分このチュートリアルにはエラーがありますか? –

答えて

1

SizeOfHeaders実際には、DOSスタブを含むヘッダー全体のサイズです。

セクションテーブルのアドレスを取得するには、まず、オプションのヘッダーのアドレスを取得し、FileHeader.SizeOfOptionalHeaderを追加します。

+0

ImageBaseを指定すると、ImageBase + PEヘッダー(Signature + FileHeader + Optional Header)になります。オプションヘッダーのアドレスを指定すると、FileHeader.SizeOfOptionalHeaderを追加する必要があります。 – questions

+0

@questions:correct :) – pezcode

1

SizeOfHeadersは、一部のファイルで一致する可能性があってもセクションテーブルの位置を調べるために使用されません(ただし、私はそうは思わない)。ここで

は、それがWindowsのヘッダ(ひいてはシステムローダー)で行うの方法は次のとおりです。SizeOfOptionalHeaderの実際の値がチェックされていないことを

#define IMAGE_FIRST_SECTION(ntheader) ((PIMAGE_SECTION_HEADER)  \ 
    ((ULONG_PTR)(ntheader) +           \ 
    FIELD_OFFSET(IMAGE_NT_HEADERS, OptionalHeader) +     \ 
    ((ntheader))->FileHeader.SizeOfOptionalHeader \ 
    )) 

は注意。非常に大きなものでも否定的なものでもあります。マルウェアの中には、分析ツールを欺くためにトリックを使うものもあります。

さらに詳しい情報や、さらにナイスティックにはhereを参照してください。

+0

あなたが提供したリンクは素晴らしかったです..ありがとう – questions

関連する問題