2016-09-17 10 views
1

私はC/C++で簡単なコードを書いて、Dev C++(MinGW)によってwin10のPEフォーマットでコンパイルしました。 、Dev C++でコンパイルしたあと、PEファイルのセクションが非常に多くなるのはなぜですか?

enter image description here

を使用すると、.textのような通常のファイルのセクションに加えて、見ることができるように:

は、私は次のようにコンパイルしたexeファイルのPEファイルの構造を確認するためのツール「スタッドPE」を使用しました.data、.bss .../4、/ 19、/ 31 ...のような名前のセクションがいくつかあります。

どのようにこれらのセクションの目的がわかりますか?デバッグ用の ?? (なぜ奇妙な名前のセクションが多いのですか?)

これらのセクションの目的を説明するための資料や資料はありますか?また、Dev C++でこれらのセクションの生成をオフにする方法はありますか?

は、PE実行ファイルで〜

+0

あなたは分解し、それらのセクションにあるかどうか確認してみましたか? –

+0

こんにちは、まだ、私は後でそれをすることができますが、私はx86のASMとollydbgについていくつかの経験があります。私はちょうどそれに深く入る前に、すばやく簡単な答えをしたいです。 – Porcelain

+0

これらのセクションの多くは実行可能ではありません(ただ読みやすい)ので、実行するコードではなくデータであると思いました。 – Porcelain

答えて

2

その名のCOFF文字列テーブルへのオフセット形式/ [n]を参照[N]のセクション名をいただき、ありがとうございます。

gnu binutilsのobjdump -hを使って、これらのセクションの実際の名前を見ることができます。

一般に、長い名前のセクションは、DWARFデバッグ情報用にgccまたはclangによって追加されたもので、.eh_frameとともに各機能の巻き戻し情報を格納します。

これらのセクションにはコードはありませんが、フォーマットは文書化されています(ただし、DWARFは読みにくいですが)。あなたの出力は、このようなものである可能性が高い

/Users/arty/dev/reactos/emacs-24.5/bin/addpm.exe:  file format pei-i386 

Sections: 
Idx Name   Size  VMA  LMA  File off Algn 
    0 .text   000017b0 00401000 00401000 00000600 2**4 
        CONTENTS, ALLOC, LOAD, READONLY, CODE, DATA 
    1 .data   00000010 00403000 00403000 00001e00 2**2 
        CONTENTS, ALLOC, LOAD, DATA 
    2 .rdata  00000b80 00404000 00404000 00002000 2**5 
        CONTENTS, ALLOC, LOAD, READONLY, DATA 
    3 .eh_frame  00000150 00405000 00405000 00002c00 2**2 
        CONTENTS, ALLOC, LOAD, READONLY, DATA 
    4 .bss   00000078 00406000 00406000 00000000 2**2 
        ALLOC 
    5 .idata  000006f8 00407000 00407000 00002e00 2**2 
        CONTENTS, ALLOC, LOAD, DATA 
    6 .CRT   00000018 00408000 00408000 00003600 2**2 
        CONTENTS, ALLOC, LOAD, DATA 
    7 .tls   00000020 00409000 00409000 00003800 2**2 
        CONTENTS, ALLOC, LOAD, DATA 
    8 .debug_aranges 00000108 0040a000 0040a000 00003a00 2**0 
        CONTENTS, READONLY, DEBUGGING 
    9 .debug_pubnames 00000388 0040b000 0040b000 00003c00 2**0 
        CONTENTS, READONLY, DEBUGGING 
10 .debug_pubtypes 00000469 0040c000 0040c000 00004000 2**0 
        CONTENTS, READONLY, DEBUGGING 
11 .debug_info 00004ea5 0040d000 0040d000 00004600 2**0 
        CONTENTS, READONLY, DEBUGGING 
12 .debug_abbrev 00000c0c 00412000 00412000 00009600 2**0 
        CONTENTS, READONLY, DEBUGGING 
13 .debug_line 00000be4 00413000 00413000 0000a400 2**0 
        CONTENTS, READONLY, DEBUGGING 
14 .debug_frame 000003c4 00414000 00414000 0000b000 2**2 
        CONTENTS, READONLY, DEBUGGING 
15 .debug_str 0000017e 00415000 00415000 0000b400 2**0 
        CONTENTS, READONLY, DEBUGGING 
16 .debug_loc 00001049 00416000 00416000 0000b600 2**0 
        CONTENTS, READONLY, DEBUGGING 
17 .debug_macro 0007c3c9 00418000 00418000 0000c800 2**0 
        CONTENTS, READONLY, DEBUGGING 
18 .debug_ranges 00000090 00495000 00495000 00088c00 2**0 
        CONTENTS, READONLY, DEBUGGING 
関連する問題