2016-09-17 2 views
1

나는 win10에 PE 형식으로 데브 C++ (는 MinGW)에 의해 컴파일, C/C++에 의해 몇 가지 간단한 코드를 썼습니다. ,왜 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

이 양식/[N] 참조 섹션 이름은 자신의 이름에 대한 COFF 문자열 테이블에 [N] 오프셋 주셔서 감사합니다.

당신은이 섹션의 실제 이름을 볼 gnu 바이너리 유틸리티 'objdump를 -h를 사용할 수 있습니다.

은 일반적으로 긴 이름 섹션 저장 각 기능에 대한 정보를 긴장 .eh_frame과 함께 DWARF 디버그 정보를 원하시면 GCC 또는 그 소리에 의해 추가 된 것,입니다.

는이 섹션의에는 코드가 없지만, (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