반응형
* Executable File (실행 파일) : 명령에 따라 지시된 작업을 수행하는 파일
- Windows (PE) / Unix 계열 (ELF) / IOS (Mach-O) / Android (DEX) / DOS (MZ) 등으로 분류
* Portable Executable : Windows 운영체제 상 실행 파일 포맷
- 실행 파일 (EXE, SCR) / 라이브러리 (DLL, OCX), 드라이버 (SYS), 오브젝트 파일(OBJ) 등으로 분류
* PE 파일 구조
분류 | 내용 |
PE Header | * 모든 PE 파일이 동일하게 가지고 있는 헤더 1) IMAGE_DOS_HEADER - Windows OS의 하위 호환성 지원을 위해 DOS 운영체제가 윈도우용 PE 파일을 실행 시, 적절한 오류 메세지(MS-DOS Stub Program 영역의 메세지)를 보여주며, 실제 윈도우용 PE Header(IMAGE_NT_HEADER)를 가리키는 역할 - 파일 시그니처 확인 시, PE 파일로 분류되는 시그니처 확인 가능(MZ 등) 2) MS-DOS Stub Program - DOS 운영체제에서 윈도우용 PE 파일을 실행할 시, 보여줄 오류 메세지를 저장함 3) IMAGE_NT_HEADER - Signature(정상 PE 포맷임을 증명하는 4Byte의 항상 동일한 플래그 값 : PE\0\0(0x50450000))와 실제 PE 파일 실행에 필요한 핵심 기능을 담은 IMAGE_FILE_HEADER와 IMAGE_OPTIONAL_HEADER로 구성 |
Section Header | * 각 섹션 데이터를 메모리에 로딩, 속성(Property)를 설정하는데 필요한 정보를 담음 |
Section | * PE 파일이 가상 주소 공간에 로드된 후, 프로그램 실행 코드, 데이터, 리소스 등 프로그램 실행에 필요한 정보를 배치한 영역 |
* PE Section 분류
유형 | Section명 | 설명 |
코드 | .text | * 프로그램 실행 코드를 담은 섹션(컴파일 된 기계어) |
데이터 | .data | * 읽기/쓰기가 가능한 데이터 섹션으로, 전역/정적 변수(전역적으로 선언한 지역 변수) 등이 위치함 |
.rdata | * 읽기 전용 데이터 섹션으로, 상수형 변수, 문자열 상수 등이 위치 | |
.bss | * 초기화 되지 않은 전역변수가 위치(.data에 병합되어 있음) | |
Import API |
.idata | * 임포트 할 DLL과 그 API/함수들에 대한 정보를 담고있는 섹션 - 대표적으로 IAT(Import Address Table)이 존재(.rdata에 병합되어 간혹 표시되지 않기도 함) |
.didat | * 지연 로딩(Delayd-Landing) 임포트 데이터를 위한 섹션 | |
Eport API |
.edata | * 익스포트할 DLL과 API/함수에 대한 정보를 담고 있는 섹션 - 일반적으로 API나 변수를 익스포트할 수 있는 경우는 DLL이기 때문에, DLL PE에 이 섹션이 존재함 (.text 또는 .rdata에 병합되어 있음) |
리소스 | .rsrc | * 다이얼 로그, 아이콘, 커서 등의 윈도우 애플리케이션 리소스 관련 데이터들을 담은 섹션 |
재배치 정보 | .reloc | * 실행 파일에 대한 기본 재배치 정보를 담은 섹션 - 재배치 정보 : PE 이미지를 원하는 기본 주소에 로드하지 못하고, 다른 주소에 로드했을 시, 코드 상에서의 관련 주소 참조에 대한 정보를 갱신해야 하는 경우를 말함 (주로 DLL 파일에서 재배치가 발생함) |
반응형
'Information Security > Hacking' 카테고리의 다른 글
Strace - System call Tracking tool (0) | 2022.07.04 |
---|---|
Windows Registry (0) | 2021.09.23 |
악성코드(Malware)유형 및 분석 유형 (0) | 2021.09.14 |
Analysis Tool - Process Explorer (0) | 2021.07.07 |
Analysis Tool - Process Monitor (0) | 2021.07.07 |