notepad.exe를 HxD로 열어보자
DOS header부터 Section header까지를 PE 헤더, 그 밑의 Section들을 합쳐서 PE 바디라고 한다
파일에서는 offset으로, 메모리에서는 VA(Virtual Address)로 표현한다
PEview로 열어서 확인해보자
파일이 메모리에 로딩되면 모양이 달라지는데, 파일의 내용은 보통 코드(.text), 데이터(.data), 리소스(.rsrc)
섹션에 나뉘어서 저장이 된다
PE 헤더의 제일 앞 부분에는 IMAGE_DOS_HEADER 구조체가 존재하는데 크기는 40 이다
이 구조체를 자세히 보면 다음과 같다
Data에 5A4D라는 리틀 엔디안으로 저장된 값이 보이는데 HxD로 확인해보면 첫번째 이미지의 첫번째 줄에 4D 5A 라는 헥스값이 보이는데, 4D5A => ASCII 값 "MZ" 이는 IMAGE_DOS_HEADER의 매직넘버이다
VA(Virtual Address)는 프로세스 가상 메모리의 절대주소를 말하며
RVA(Relative Virtual Address)는 이미지베이스(ImageBase)에서부터의 상대주소를 말한다
VA와 RVA의 관계식은 다음과 같다
RVA + ImageBase = VA
'Reversing' 카테고리의 다른 글
API Hooking (1) | 2025.02.06 |
---|---|
Calling Convention (0) | 2024.09.23 |
Abex' crackme #2 Analysis (0) | 2024.09.20 |
Stack Frame (0) | 2024.09.13 |
Abex' crackme #1 Analysis (0) | 2024.09.12 |