기초 정적 분석_PE 파일
notepad.exe(ver. Win 10)
PE 파일
- 정의: 실행가능한 파일, Win32 기본 파일 형식_윈도우 환경에서 동작이 된다.
- 종류: exe, scr, sys, dll, ocx 등
- 프로세스(메모리 상에서 실행되는 형태) = exe + dll
- 실행과정
1) PE파일 실행(더블클릭, 커맨드에서 실행)
2) 메모리에 PE 헤더 정보를 매핑
- 실제 프로세스를 위한 메모리 할당, 섹션 정보를 메모리에 복사, Import 정보 처리, 기준 재배치 처리)
3) 실제 프로그램 코드로 분기
- Hex editor 이용(PEview.exe)
PEView.exe
notepad.exe(ver. Win 10)
프로그램 실행 영역: text
실제 데이터 영역은 SECTION .text이고 그것과 관련된 헤더 정보는 IMAGE_SECTION_HEADER .text
Notepad.exe PE구조
왼쪽 file: 실제 파일
오른쪽 memory: 실제 메모리 상태에 올라가 있는 실행 상태
- 헤더 정보까지는 차이 없이 동일하다.
- SECTION .text가 실행 영역
- offset: 상대주소, 메모리에는 address
SECTION 부분에서의 차이
- Padding 영역이 메모리가 더 길어짐.
- 파일은 내용이 차곡차곡되어 있는 것이 좋다.
- 메모리는 주소 매핑을 편리하게 하기 위해서 기준이 되는 값을 설정하고 그 값을 기준으로 해서 새로운 섹션의 값을 넣어준다. 간단하게 매핑하기 위한 구조이다.
VA, RVA
VA(Virtual Address): 가상 메모리 주소 -address
RVA(Relative): 가상 메모리 상대 주소 -offset
- RVA: PE 파일이파일이 메모리 상의 어떤 위치에 올라갈지 알 수 없음, 프로그램이 정한 상대적 주소
- 실행하는 부분으로 기준점을 놓고 그곳으로부터 위치를 계산
VA = imageBase + RVA
-> 실제 프로그램에서 실행 상태에서는 VA 중요, 우리가 알고 있는 정보는 RVA
-> 다음 설명으로
'Security > Reversing' 카테고리의 다른 글
[PE 파일] 구조(3) - PE 파일 헤더(NT_Header) (2) | 2020.04.09 |
---|---|
[PE 파일] 구조(2) - PE 파일 헤더(DOS_HEADER, DOS Stud Code) (2) | 2020.04.09 |
[Reversing 실습] abex’ crackme #1 (2) | 2020.04.01 |
[Reversing 실습] Little Endian 표기법 (305) | 2020.04.01 |
[Reversing 실습] 문자열 패치 두 가지 방법 (428) | 2020.04.01 |