일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- GetProcAddress()
- BOF
- oh-my-zsh
- Buffer Overflow
- WSL
- Windows 11
- PE file format
- RVA
- SQL Injection
- stack based buffer overflow
- IMAGE_IMPORT_DESCRIPTOR
- powerlevel10k
- NT Optional Header
- Tutorial
- 리버싱 핵심원리
- Windows
- zsh theme customization
- web
- NT File Header
- PE Header
- DOS Header
- ubuntu
- docker
- IMAGE_EXPORT_DIRECTORY
- DOS Stub
- Windows Terminal
- NT Header
- sctf 2021
- attack vector
- samsung ctf
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 |