일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- attack vector
- Buffer Overflow
- IMAGE_EXPORT_DIRECTORY
- ubuntu
- oh-my-zsh
- RVA
- docker
- SQL Injection
- DOS Stub
- powerlevel10k
- WSL
- PE Header
- Windows Terminal
- NT Header
- NT Optional Header
- DOS Header
- samsung ctf
- zsh theme customization
- BOF
- PE file format
- stack based buffer overflow
- sctf 2021
- Windows 11
- NT File Header
- Windows
- Tutorial
- IMAGE_IMPORT_DESCRIPTOR
- 리버싱 핵심원리
- GetProcAddress()
- web
Archives
- Today
- Total
나만의 메모노트
[리버싱 핵심원리] PE File Format (2) 본문
notepad.exe를 대상으로 Hex editor를 통해 바이너리 코드를 살펴보며 PE File Format 이해하기
Dos Header
- 초기 PE File Format
- Microsoft가 널리 사용되던 DOS 파일에 대한 하위 호환성을 고려하여 제작
- PE Header의 첫 부분은 DOS EXE Header, 이후 IMAGE_DOS_HEADER 구조체로 확장
- IMAGE_DOS_HEADER 구조체
- 크기 : 40h (64byte)
- 주요 멤버
- e_magic : DOS signature (4D5A 👉 ASCll값으로 "MZ"를 의미함)
- e_lfanew : NT Header의 offset을 표시
- NT Header 구조체의 위치를 가리킴
- 파일에 따라 가변적인 값을 가짐
Dos Stub
- Dos Header 아래에 위치
- Dos Stub의 존재 여부는 옵션이며 크기는 일정하지 않음
- Dos Stub이 없어도 파일 실행에 문제 없음
- Dos Stub은 코드와 데이터의 혼합으로 이루어져 있음
- File offset 40 ~ 4D 영역은 16bit 어셈블리 명령어
- 32bit Windows OS에선 PE 파일로 인식되어 해당 명령어가 실행되지 않음
- notepad.exe 파일을 DOS 환경에서 실행하거나, DOS용 디버거를 이용해서 실행하면 해당 코드를 실행시킬 수 있음
- DOS EXE 파일로 인식
'Security > Reversing' 카테고리의 다른 글
[리버싱 핵심원리] PE File Format (5) (0) | 2021.08.01 |
---|---|
[리버싱 핵심원리] PE File Format (4) (0) | 2021.08.01 |
[리버싱 핵심원리] PE File Format (3) (0) | 2021.08.01 |
[리버싱 핵심원리] PE File Format (1) (0) | 2021.07.31 |
[리버싱] 치트 엔진으로 싱글 게임 분석해보기 (1) | 2021.07.27 |