-
13 PE File Format(3) - RVA to RAW리버싱 엔지니어링/리버싱 핵심 원리 2022. 3. 23. 16:27
RVA to RAW
: PE 파일이 메모리에 로딩되었을 때 각 섹션에서 메모리의 주소(RVA)와 파일 옵셋을 매핑
방법
1. RVA가 속한 섹션을 찾는다
2. 비례식을 통해 파일 옵셋을 계산한다
- 비례식 : RAW = RVA - VirtualAddress + PointerToRawData
- 파일 옵셋 = 섹션에서 메모리의 주소 - 메모리에서 섹션의 시작 주소 + 파일에서 섹션의 시작 주소
Quiz
notepad.exe Q2. RVA = 5000일 때 File Offset = ?
① RVA가 속한 섹션 : 첫 번째 섹션 (.text)
② 비례식 사용 (ImageBase 01000000 고려)
더보기RAW = 5000(RVA) - 1000(VA) + 400(PointerToRawData) = 4400Q2. RVA = 13314일 때 File Offset = ?
① RVA가 속한 섹션 : 세 번째 섹션 (.rsrc)
② 비례식 사용
더보기RAW = 13314 - B000 + 8400 = 10714Q3. RVA = ABA8일 때 File Offset = ?
① RVA가 속한 섹션 : 두 번째 섹션(.data)
② 비례식 사용 :
더보기RAW = ABA8 - 9000 + 7C00 = 97A8(?)
참고 ) 16진법 계산
더보기알파벳은 아래와 같이 생각하여 계산
A 10 B 11 C 12 D 13 E 14 F 15 ABA8 - 9000 에서 16^4 자리를 10-9로 계산 => 1BA8
1BA8 + 7C00
- 16^3 자리 : B+C = 23
- 23 % 16 = 7. 따라서, 16^3 자리 값은 7
- 16^4 자리 : 1+7+23/16= 1+7+1 = 9
- 23/16은 16^3자리에서 올라온 것
(?)
더보기97A8은 세 번째 섹션(.rsrc)에 속함 → (답) 해당 RVA에 대한 RAW 값을 정의할 수없다
- 두 번째 섹션의 VirtualSize 값이 SizeOfRawData 값보다 크기 때문
'리버싱 엔지니어링 > 리버싱 핵심 원리' 카테고리의 다른 글
13 PE File Format(5) - EAT (0) 2022.03.24 13 PE File Format(4) - IAT (0) 2022.03.23 13 PE File Format(2) - PE 헤더(DOS Header, NT Header,섹션 헤더) (0) 2022.03.23 13 PE File Format(1) - PE 파일, VA&RVA (0) 2022.03.23 10 함수 호출 규약 (Calling Convention) (0) 2022.03.17