2020. 1. 11. 02:35ㆍ정보보안
@ PE 파일 분석(RVA to VA)
VA = Imagebase + RVA
1. ImageBase
- PE 파일이 메모리에 로드되는 시작 주소
- DLL/EXE 파일 -> User 메모리 영역인 '0x00000000 ~ 0x7FFFFFFF'에 로드
- SYS 파일 -> 커널 메모리 영역인 '0x80000000 ~ 0xFFFFFFFF'에 로드
- DLL 파일/윈도우 제공 EXE 파일 : 0x01000000
- 그 외 EXE 파일 : 0x00400000
2. VA 주소를 구하기 위한 요소
- VA 메모리 상에 프로세스 절대 주소
- Virtual Size 메모리에서 차지하는 섹션의 크기(패딩/Null 포함)
- RVA 메모리에서 찾고자 하는 어떤 데이터의 주소
- Size of Raw Data 파일에서 섹션의 크기(패딩/Null 포함)
- Pointer to Raw Data 파일에서 섹션의 주소
3. 각 섹션에 대한 RVA to VA 구하기
1) .text 섹션
- ImageBase 0x01000000
- RVA 0x00001000
- Virtual Size 0x00052CA1
- 다음 섹션의 VA 0x01054000
- VA = 0x01000000 + 0x00001000 = 0x01001000
- .text 섹션 범위 : 0x01001000 ~ 0x01053CA1
- .text 섹션 패딩 : 0x01054000 - 0x01053CA1 = 0x0000035F
2) .data 섹션
- ImageBase 0x01000000
- RVA 0x00054000
- Virtual Size 0x000040C0
- 다음 섹션의 VA 0x01059000
- VA = 0x01000000 + 0x00054000 = 0x01054000
- .data 섹션 범위 : 0x01054000 ~ 0x010580C0
- .data 섹션 패딩 : 0x01059000 - 0x010580C0 = 0x00000F40
3) .rsrc 섹션
- ImageBase 0x01000000
- RVA 0x00059000
- Virtual Size 0x00062798
- 다음 섹션의 VA 0x010BC000
- VA = 0x01000000 + 0x00059000 = 0x01059000
- .rsrc 섹션 범위 : 0x01059000 ~ 0x010BB798
- .rsrc 섹션 패딩 : 0x010BC000 - 0x010BB798 = 0x00000868
4) .reloc 섹션
- ImageBase 0x01000000
- RVA 0x000BC000
- Virtual Size 0x00003B3C
- VA = 0x01000000 + 0x000BC000 = 0x010BC000
- .rsrc 섹션 범위 : 0x010BC000 ~ 0x010BFB3C
- .rsrc 섹션 패딩 : (0x010BFBFF + 1) - 0x010BFB3C = C4
'정보보안' 카테고리의 다른 글
pe파일 분석(pe 바디-섹션) (0) | 2020.01.11 |
---|---|
pe 파일 분석(RVA to RAW) (0) | 2020.01.11 |
pe 파일 분석(섹션헤더) (0) | 2020.01.11 |
pe파일 분석(pe 헤더) (0) | 2020.01.11 |
어셈블리어(레지스터 이해) (0) | 2020.01.11 |