PE 파일의 주요 자료구조 분석 섹션 테이블 실습 CFF Explorer

2025. 2. 21. 15:00·리버싱

섹션테이블

  • 배열처럼 동일한 자료구조 나열
  • 섹션이 n개면 n개의 IMAGE_SECTION_HEADER가 있음
  • IMAGE_SECTION_HEADER가 모여서 섹션 테이블의 구조
  • 각 섹션의 속성을 확인할 수 있음
  • 프로그램 실행 시 로더에서 PE헤더를 통해 섹션을 먼저 파악함

 

IMAGE_SECTION_HEADER의 구성요소

 

typedef struct _IMAGE_SECTION_HEADER {
  BYTE  Name[IMAGE_SIZEOF_SHORT_NAME];
  union {
    DWORD PhysicalAddress;
    DWORD VirtualSize;
  } Misc;
  DWORD VirtualAddress;
  DWORD SizeOfRawData;
  DWORD PointerToRawData;
  DWORD PointerToRelocations;
  DWORD PointerToLinenumbers;
  WORD  NumberOfRelocations;
  WORD  NumberOfLinenumbers;
  DWORD Characteristics;
} IMAGE_SECTION_HEADER, *PIMAGE_SECTION_HEADER;

 

Misc.VirtualSize
메모리에 로드될 때 섹션의 총 크기이고, 값이 SizeOfRawData 멤버보다 크면 섹션이 0으로 채워짐

VirtualAddress
이미지 베이스를 기준으로 메모리에 로드될 때 섹션의 첫 번째 바이트 주소

ex) DWORD VirtualAddress; →1000 // 메모리에 올라간 파일의 시작위치로부터 1000만큼 떨어진 위치에 첫 번째 섹션을 매핑


SizeOfRawData
디스크에서 초기화된 데이터의 크기이고 이 값은 IMAGE_OPTIONAL_HEADER 구조체의 FileAlignment 멤버의 배수여야 함. 이 값이 VirtualSize 멤버보다 작으면 섹션의 나머지 부분은 0으로 채워짐


PointerToRawData
COFF 파일 내의 첫 번째 페이지에 대한 파일 포인터, 이 값은 IMAGE_OPTIONAL_HEADER 구조체의 FileAlignment 멤버의 배수여야 함.

ex) DWORD PointerToRawData; → 400 // 파일의 시작 지점부터 정확히 400만큼 떨어진 위치에 첫 번째 섹션이 존재

Characteristics
read, write, excute 등 프로텍션에 대한 정보

 

 


 

CFF Explorer 섹션 테이블 실습

sample_x32.exe 실행 파일을 CFF Explorer에 로드했다

DOS header, NT Header, Section Header 등 헤더들이 확인된다

 

 

COFF 파일 이므로 CFF Explorer 에서 덤프가 가능하고 이전에 보았던 섹션들이 보인다

- .text: 기계어 코드
- .data: 전역변수
- .idata: 임포트 할 api, dll  정보

파일 상에서 위치는 Raw Address
가상 메모리 위치는 Virtual Addres

 

 

s.data의 virtual adress→00003000이지만 이는 오프셋 값이므로

실제 위치는 실행파일이 로드된 주소인 00400000+00003000 = 00403000인 것이 확인됨

 

 

각 섹션들의 Characteristics(protection) 값 확인

 

 

x32 dbg에 로드해도 각 섹션의 프로텍션을 바로 파악할 수 있다!

 

 

요약: 섹션 테이블은 로더를 위해 존재한다고 할 수 있는데,
각 섹션들에 대한 정보가 있어서 그에 따라 로더가 매핑을 하기 때문

'리버싱' 카테고리의 다른 글

CPU 레지스터와 주요 명령어 - IA32 주요 레지스터  (0) 2025.02.24
PE 파일의 자료구조 임포트 테이블 분석 실습  (0) 2025.02.24
PE 파일의 자료구조 헤더 분석 실습 Stud_PE, x32 dbg  (0) 2025.02.21
윈도우 실행파일 PE파일의 구조와 PE 헤더를 알아보자  (0) 2025.02.19
프로세스의 가상주소공간 VAS 검증을 위한 실습 x64dbg  (0) 2025.02.18
'리버싱' 카테고리의 다른 글
  • CPU 레지스터와 주요 명령어 - IA32 주요 레지스터
  • PE 파일의 자료구조 임포트 테이블 분석 실습
  • PE 파일의 자료구조 헤더 분석 실습 Stud_PE, x32 dbg
  • 윈도우 실행파일 PE파일의 구조와 PE 헤더를 알아보자
이둥둥
이둥둥
"><script>prompt(document.cookie)</script>
  • 이둥둥
    시골쥐 해커
    이둥둥
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 방통대
      • 리버싱
      • 웹해킹
      • 악성코드 분석
      • Defensive
      • 네트워크
      • 포렌식
      • Writeup
      • 클라우드
      • 사이버보안
      • Troubleshooting
      • 취준
  • 블로그 메뉴

    • 홈
    • 사이버보안
    • 방통대
    • 독후감
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    웹해킹
    정보보안
    tryhackme
    독후감
    리버싱
    악성코드분석
    CTF
    burpsuite
    사이버보안
    hackthebox
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
이둥둥
PE 파일의 주요 자료구조 분석 섹션 테이블 실습 CFF Explorer
상단으로

티스토리툴바