1. IMAGE_SECTION_HEADER
- 섹션 헤더는 각 섹션의 속성 정보들을 갖고 있는 구조체이다.
- 섹션이란 프로그램의 실제 내용(어셈블리 코드, 전역 변수, 정적 변수)을 담고 있는 영역을 의미한다.
- .text 프로그램 코드를 담고 있는 섹션, IAT 정보를 갖고 있음
- .data 전역 변수, 정적 변수의 할당을 위한 섹션, 읽기/쓰기 가능한 데이터를 갖고 있음
- .rdata 읽기 전용 섹션, 문자열, 상수 정보를 갖고 있음
- .bss 초기화되지 않은 변수를 갖고 있는 섹션
- .rsrc 아이콘, 커서, 추가 바이너리 등의 리소스 관련 정보를 갖고 있는 섹션
- .idata Import 할 DLL/API 정보를 갖고 있는 섹션
- .edata Export 할 DLL/API 정보를 갖고 있는 섹션
- .reloc 재배치 정보를 갖고 있는 섹션
2. 섹션 헤더 구조
- 40byte(0x28)
- Name 8byte 섹션 이름
- Virtual Size 4byte 메모리에서 섹션이 차지하는 크기
- RVA 4byte 메모리에서 섹션의 시작 주소
- Size of Raw Data 4byte 파일에서 섹션이 차지하는 크기
- Pointer to Raw Data 4byte 파일에서 섹션의 시작 주소
3. '.text' 섹션 헤더
- 코드 정보, 실행, 읽기 속성(권한) 정보가 포함된 섹션
- Name 8byte 2E 74 65 78 74 00 00 00 (.text)
- 섹션의 ASCII 16진수 값
- 이름은 프로그램 동작과 무관하므로 변경해도 상관 없음
- Virtual Size 4byte 00 05 2C A1 (339105byte)
- 메모리에서 섹션이 차지하는 크기
- RVA 4byte 00 00 10 00
- 메모리에 로드될 때 섹션의 시작 주소
- VA = ImageBase + RVA = 0x01000000 + 0x00001000 = 0x01001000
- Size of Raw Data 4byte 00 05 2E 00 (339456byte)
- 파일에서 섹션이 차지하는 크기
- Pointer to Raw Data 4byte 00 00 04 00
- 파일에서 섹션의 시작 주소
- Characteristics 4byte 60 00 00 20
- 섹션 속성(권한)에 대한 정보
- IMAGE_SCN_CNT_CODE 00 00 00 20 실행 가능한 코드를 포함한 속성
- IMAGE_SCN_MEM_EXECUTE 20 00 00 00 실행 가능한 속성
- IMAGE_SCN_MEM_READ 40 00 00 00 읽기 가능한 속성
4. '.data' 섹션 헤더
- 전역 변수, 정적 변수의 할당을 위한 섹션, 읽기/쓰기 가능한 데이터를 갖고 있음
- Name 8byte 2E 64 61 74 61 00 00 00 (.data)
- 섹션의 ASCII 16진수 값
- 이름은 프로그램 동작과 무관하므로 변경해도 상관 없음
- Virtual Size 4byte 00 00 40 C0 (16576byte)
- 메모리에서 섹션이 차지하는 크기
- RVA 4byte 00 05 40 00
- 메모리에 로드될 때 섹션의 시작 주소
- VA = ImageBase + RVA = 0x01000000 + 0x00054000 = 0x01054000
- Size of Raw Data 4byte 00 00 42 00 (16896byte)
- 파일에서 섹션이 차지하는 크기
- Pointer to Raw Data 4byte 00 05 32 00
- 파일에서 섹션의 시작 주소
- Characteristics 4byte C0 00 00 40
- 섹션 속성(권한)에 대한 정보
- IMAGE_SCN_INITALIZED_DATA 00 00 00 40 초기화된 데이터 속성
- IMAGE_SCN_MEM_READ 40 00 00 00 읽기 가능한 속성
- IMAGE_SCN_MEM_WRITE 80 00 00 00 쓰기 가능한 속성
5. '.rsrc' 섹션 헤더
- 아이콘, 커서, 추가 바이너리 등의 리소스 관련 정보를 갖고 있는 섹션
- Name 8byte 2E 72 73 72 63 00 00 00 (.rsrc)
- 섹션의 ASCII 16진수 값
- 이름은 프로그램 동작과 무관하므로 변경해도 상관 없음
- Virtual Size 4byte 00 06 27 98 (403352byte)
- 메모리에서 섹션이 차지하는 크기
- RVA 4byte 00 05 90 00
- 메모리에 로드될 때 섹션의 시작 주소
- VA = ImageBase + RVA = 0x01000000 + 0x00059000 = 0x01059000
- Size of Raw Data 4byte 00 06 28 00 (403456byte)
- 파일에서 섹션이 차지하는 크기
- Pointer to Raw Data 4byte 00 05 74 00
- 파일에서 섹션의 시작 주소
- Characteristics 4byte 40 00 00 40
- 섹션 속성(권한)에 대한 정보
- IMAGE_SCN_INITALIZED_DATA 00 00 00 40 초기화된 데이터 속성
- IMAGE_SCN_MEM_READ 40 00 00 00 읽기 가능한 속성
6. '.reloc' 섹션 헤더
- 재배치 정보를 갖고 있는 섹션
- Name 8byte 2E 72 65 6C 6F 63 00 00 (.reloc)
- 섹션의 ASCII 16진수 값
- 이름은 프로그램 동작과 무관하므로 변경해도 상관 없음
- Virtual Size 4byte 00 00 3B 3C (15164byte)
- 메모리에서 섹션이 차지하는 크기
- RVA 4byte 00 0B C0 00
- 메모리에 로드될 때 섹션의 시작 주소
- VA = ImageBase + RVA = 0x01000000 + 0x000BC000 = 0x010BC000
- Size of Raw Data 4byte 00 00 3C 00 (15360byte)
- 파일에서 섹션이 차지하는 크기
- Pointer to Raw Data 4byte 00 0B 9C 00
- 파일에서 섹션의 시작 주소
- Characteristics 4byte 42 00 00 40
- 섹션 속성(권한)에 대한 정보
- IMAGE_SCN_INITALIZED_DATA 00 00 00 40 초기화된 데이터 속성
- IMAGE_SCN_MEM_DISCARDABLE 02 00 00 00 실행 파일이 메모리에 로딩되고 버려질 수 있는 속성
- IMAGE_SCN_MEM_READ 40 00 00 00 읽기 가능한 속성
'메가IT아카데미 국기과정 > 리버싱과 악성코드 분석' 카테고리의 다른 글
[1-5] PE 파일 분석(RVA to RAW) (0) | 2022.09.13 |
---|---|
[1-4] PE 파일 분석(RVA to VA) (0) | 2022.09.13 |
[1-2] PE 파일 분석(PE 헤더) (0) | 2022.09.13 |
[1-1] 리버싱 선수 지식 (1) | 2022.09.13 |
[목차] 리버싱과 악성코드 분석 (1) | 2022.09.11 |