반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 설치
- C language
- Volatility
- 오늘의 영어
- ctf
- 오늘의 보안
- sql
- codeup
- Code Up
- 코딩
- C 프로그래밍
- 멀웨어
- 오늘의 보안동향
- Memory Forensics
- SQLD
- Defcon DFIR CTF 2019
- 다운로드
- 랜섬웨어
- 정보보안기사
- c언어
- 보안동향
- 악성코드
- DEFCON
- 코드업
- 리버싱
- 리버싱 핵심원리
- 보안
- C
- defcon.mem
- cmd
Archives
- Today
- Total
오브의 빛나는 별
2부 13장 PE File Format(4) 본문
반응형
안녕하세요, 오브입니다.
오늘은 NT Header의 Optional Header에 대해 알아보겠습니다.
https://staraube.tistory.com/51?category=548043
https://staraube.tistory.com/52?category=548043
https://staraube.tistory.com/53
PE File Format
- PE 헤더 구조체 중 가장 크기가 큰 IMAGE_OPTIONAL_HEADER32
- 아래의 값들은 파일 실행에 필수적이라 잘못 세팅되면 파일이 정상 실행x
1. Magic
- IMAGE_OPTIONAL_HEADER32 구조체인 경우 10B, IMAGE_OPTIONAL_HEADER64 구조체인 경우 20B 값을 가짐
2. AddressOfEntryPoint
- EP의 RVA 값을 가지고 있음
- 프로그램에서 최초로 실행되는 코드의 시작 주소
3. ImageBase
- 프로세스 가상 메모리는 0~FFFFFFFF범위(32비트 경우)
- 광할한 메모리에서 PE 파일이 로딩되는 시작 주소
- XEX, DLL 파일은 user memory 영역인0~FFFFFFFF범위에 로딩
- SYS 파일은 kenel memory 영역인 80000000~FFFFFFFF에 로딩
- 개발 도구로 만드는 EXE 파일이 00400000
- DLL 파일은 10000000
- PE 로더는 EIP 레지스터 값을 ImageBase + AddressOfEntryPoint 값으로 세팅
4. SectionAlignment, FileAlignment
- PE 파일의 Body 부분을 섹션으로 나눠집
- FileAlignment: 메모리에서 섹션의 최소단위
- 파일/메모리 섹션 크기는 FileAlignment/SectionAlignment의 배수
5. SizeOfImage
- PE 파일이 메모리에 로딩됐을 때 가상 메모리에서 PE Image가 차지하는 크기
- 파일 크기와 메모리에 로딩된 크기는 다름
6. SizeOfHeader
- PE 헤더의 전체 크기
- 값: FileAlignment의 배수
- 파일 시작에서 SizeOfHeader 옵셋만큼 떨어진 위치에 첫 번째 섹션 위치
7. Subsystem
- 이 값을 보고 시스템 드라이버 파일인지, 일반 실행 파일인지 구분 가능
값 | 의미 | 비고 |
1 | Driver File | 시스템 드라이버 ex) ntfs.sys |
2 | GUI 파일 | 창 기반 애플리케이션 ex) notepad.exe |
3 | CUI 파일 | 콘솔 기반 애플리케이션 ex) cmd.exe |
8. NumberOfRvaAndSizes
- IMAGE_OPTIONAL_HEADER32 구조체의 마지막 멤버인 DataDirectory 배열의 개수
- 구조체 정의에 IMAGE_NUMBEROF_DIRECTORY_ENTRIES(16)이라고 명시되어 있지만 PE 로더는 NumberOfRvaAndSizes 값을 보고 배열 크기 인식
9. DataDirectory
- IMAGE_DATA_DIRECTORY 구조체의 배열로, 배열의 각 항목마다 정의된 값 가짐
- EXPORT: DLL 등의 파일에서 외부에 함수를 공개하기 위한 정보들을 가짐. IMAGE_EXPORT_DIRECTORY 구조체의 시작 번지 가리킴. 이 시작 번지가 익스포트 섹션의 시작 주소
- IMPORT: 프로그램 실행을 위해 Import 하는 DLL 이름과 사용할 함수 정보가 담긴 INT 주소와 IAT(임포트 주소 테이블) 주소 담은 정보가 담김. IMAGE_IMPORT_DIRECTORY 시작 번지
- RESOURCE: IMAGE_RESOURCE_DIRECTORY 구조체의 시작 번지. 이 시작 번지가 리소스 섹션의 시작 주소임
- TLS Directory: 스레드 지역 저장소 초기화 섹션에 대한 포인터. VirtualAddress는 이 TLS 섹션을 가리키는 RVA가 됨
반응형
'리버싱' 카테고리의 다른 글
2부 13장 PE File Format(실습1)-32bits (0) | 2022.05.14 |
---|---|
2부 13장 PE File Format(5) (0) | 2022.04.24 |
2부 13장 PE File Format(3) (0) | 2022.04.24 |
2부 13장 PE File Format(2) (0) | 2022.04.23 |
2부 13장 PE File Format(1) (0) | 2022.04.23 |