pe 파일 분석(RVA to VA)

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