PE 기초 개념 본문
PE 포맷
WINDOW에서 사용하는 실행 파일을 일컫는 말이다.
MS에서 다른 OS와 이식성을 향상하기 위해 만든 파일 포맷이다.
PE 파일 종류
4개의 계열 가지고 있다.
실행 파일 | EXE, SCR |
라이브러리 파일 | DLL, OCX, CPL, DRV |
오브젝트 파일 | OBJ |
드라이버 파일 | SYS, VXD |
PE 파일 구조
IMAGE_DOS_HEADER
e_magic : Signature
어떤 구조인지 알려준다.
각 파일의 형식에 따라 다른 파일 시그니처를 가진다.
e_lfanew : Offset to New EXE Header
실제 파일이 어디서 시작하는지 알 수 있다.
저 지점으로 가보면...
PE가 있는것을 알 수 있다.
MS-DOS Stub Program
Signature:
e_lfanew에서 알려주었던 주소로 시작된다.
처음에 바로 시그니처가 나온다.
IMAGE_FILE_HEADER
Machine : CPU 정보
Number of Sections : 섹션 개수
Time Date Stamp : 시간
Size of Optional Header : header의 크기
Characteristics : 파일 형식 정보
Magic : 실행하는 PE 파일의 구조체 32bit인지 64bit인지 확인
Size of Code : 코드 영역의 크기
Address of Entry Point : 프로그램 실제 시작 주소!!
Base of code : 코드 영역이 시작되는 상대 주소
Image Base : PE 파일이 메모리에 로드되는 시작 주소
Section Alignment : 메모리에서 섹션의 최소 단위
File Alignment : 파일에서 섹션의 최소 단위
Size of Image : PE파일이 메몰리에 로딩될 때 전체 크기
Size of header : 모든 헤더 크기
Sub System : 1.system driver, 2.GUI, 3.CUI
image base와 address of entry point의 합이 프로그램 코드 시작 주소이다.
Number of RvaAndSize : Data Directory의 구조체 멤버 변수
SECTION_HEADER
Section Heade종류
.text : 실행코드
.data :초기화된 전연 변수, static 변수
.rdata : Const 변수, 문자열 상수
.bss : 전역 변수, static변수, 문자열, 기타 상수
.edata : EAT와 관련된 정보
.Idata : IAT와 관련된 정보
.rsrc : 리소스 정보
Name : 섹션 이름
Virtual Size : 메모리 섹션의 크기
Virtual Address : 메모리 섹션의 시작 주소, RVA
Size of Raw Data : 파일에서의 섹션의 크기
Pointer to RAW Data : 파일에서의 섹션 시작 위치
Characteristics : 섹션의 정보 표시
'개념 정리' 카테고리의 다른 글
overwrite _rtld_global (0) | 2022.02.07 |
---|---|
vtable check bypass (0) | 2022.01.18 |
shellcode 모음 (0) | 2022.01.07 |
ptmalloc2 (0) | 2022.01.03 |
셸코드 작성 (0) | 2021.12.30 |