Stud_PE을 사용해서 IMAGE_NT_HEADERS 확인하기
Stud_PE은 직관적이고 특정 구조 부분을 선택하면 그 부분을 하이라이팅 해준다
이전 이론 포스팅에서 다뤘던 헤더 부분을 살펴보자
https://eggsmong.tistory.com/46
윈도우 실행파일 PE파일의 구조와 PE 헤더를 알아보자
PE파일이란?Window에서 사용되는 파일 형식으로 exe, dll, sys 등운영체제에 의해 메모리에 로드되고 실행되는데 필요한 주요 데이터들이 포함되어 있다가상 메모리에 매핑된 후에도 실행 전후 레이
eggsmong.tistory.com

Stud_PE에 예제 파일인 “sample_x32.exe”를 로드하고 IMAGE_NT_HEADER를 찾아보자
→ Basic HEADERS tree view 부분 클릭

DOS Header의 마지막 부분 e_lfanew에 NT Header의 시작 부분을 가리키는 offset 값이 저장되어 있다
적혀있는 주소는 80 00 00 00이지만 Little endian이기 때문에
파일 시작점부터 PE헤더까지의 위치는 00 00 00 80이 됨

COFF File Header(PE 헤더)의 시그니처 signature를 보면
PE라고 적혀있다


Optional Header의 ImageBase 주소는 00 40 00 00
AddressOfEntrypoint의 주소는 00 00 14 A0
ImageBase + AddressOfEntrypoint = 절대 값 주소
x32 dbg 디버거로 분석하기

디버거에 샘플 프로그램을 로드하고 memory map에서 살펴보니
위에서 찾은것처럼 00 40 00 00에 실행파일이 로드된 것이 확인된다
ImageBase+AdressOfEntryPoint= 00 40 00 00 + 00 40 14 A0=00 40 14 A0
여기로 이동해보자


EntryPoint라고 적혀있다

CPU창으로 돌아와 프로그램을 Run 해보니까 엔트리포인트에서 멈추는 것을 볼 수 있다
섹션들의 배치 SectionAlignment

Stud-PE 프로그램으로 돌아와 SectionAligment 부분을 보니 주소가 00 00 10 00
→ 실행파일의 각 섹션이 0x00 00 10 00의 배수에 배치되어야 한다

메모리 맵에서 보면 주소가 00 40 00 00에서 00 00 10 00 간격으로 배치되어 있음이 확인된다
만약 00 00 10 00 보다 작으면 패딩으로 채워진다고 한다

이런 식으로 구조가 이루어진 이유는 각 섹션의 protection 때문
ex) .text는 코드가 있어서 쓰기 권한이 있으면 안 됨!
요약: PE 파일 분석에서 가장 중요한 세 가지
- 실행 파일이 로드될 가상 주소공간의 주소 ImageBase
- 메모리에 로드된 후 가장 먼저 실행될 코드의 위치 AddressOfEntryPoint
- 메모리 상에서 각 섹션의 정렬 단위 SectionAlignment
'리버싱' 카테고리의 다른 글
PE 파일의 자료구조 임포트 테이블 분석 실습 (0) | 2025.02.24 |
---|---|
PE 파일의 주요 자료구조 분석 섹션 테이블 실습 CFF Explorer (0) | 2025.02.21 |
윈도우 실행파일 PE파일의 구조와 PE 헤더를 알아보자 (0) | 2025.02.19 |
프로세스의 가상주소공간 VAS 검증을 위한 실습 x64dbg (0) | 2025.02.18 |
운영체제 프로세스 가상주소공간 Virtual Adress Space (0) | 2025.02.17 |