728x90
RVA to RAW
1. RVA = 5000์ผ ๋ File offset์?
๋จผ์ ํด๋น RVA๊ฐ์ด ์ํ ์น์ ์ ์ฐพ์์ผ ํจ.
- RVA 5000 -> ์ฒซ ๋ฒ์งธ ํ ์คํธ ์น์ ์ ์ํด์์(ImageBase 01000000์ ๊ณ ๋ คํด์ VA๋ฅผ ๊ตฌํ ์ ์์)
๋น๋ก์์ ๋ฐ๋ผ ๊ณ์ฐ.
- RAW = 5000(RVA) – 1000(VirtualAddress, ๋ฉ๋ชจ๋ฆฌ์์ ํค๋ – ํ ์คํธ ์น์ ๊น์ง์ ๊ฑฐ๋ฆฌ) + 400(PointerToRawData) = 4400
- VirtualAddress๊ฐ 1000์ธ ์ด์ ๋ Memory์์ ์ฒซ ๋ฒ์งธ Section์ด 01001000์์ ์์ํ๋ฏ๋ก 1000์ด๋ค. (ImageBase ๊ฐ์ ๋นผ๋ฉด) PointerToRawData ๊ฐ์ด 400์ธ ์ด์ ๋ File์์ ์ฒซ ๋ฒ์งธ Section์ด 00000400์์ ์์ํ๊ธฐ ๋๋ฌธ์ด๋ค.
2. RVA = 13314์ผ ๋ File Offset์?
- RVA = 13314๋ ์ธ ๋ฒ์งธ ์น์ ์ธ (.rsrc)์ ์ํด์์.
- RAW = 13314(RVA) - B000(VirtualAddress) + 8400(PointerToRawData) = 10174
3.RVA = ABA8์ผ ๋ File Offset์?
- RVA = ABA8๋ ๋ ๋ฒ์งธ ์น์ ์ธ (.data)์ ์ํด์์.
- RAW = ABA8(RVA) - 9000(VirtualAddress) + 7C00(PointerToRawData) = 97A8
RAW์ ๊ฒฐ๊ณผ๋ 97A8์ธ๋ฐ ์ด๋ File Offset์์ ๋ณผ ๋ ์ธ ๋ฒ์งธ Section์ ์ํด์๋ค.
RVA๋ ๋ ๋ฒ์งธ Section ์ธ๋ฐ RAW๋ ์ธ ๋ฒ์งธ Section์ด๋ผ๋ ๊ฒ์ ๋ง์ด ์ ๋๋ฏ๋ก "ํด๋น RVA(ABA8)์ ๋ํ RAW ๊ฐ์ ์ ์ํ ์ ์๋ค." ๋ผ๊ณ ํด์ผ ํ๋ค.
์ด๋ฐ ๊ฒฐ๊ณผ๊ฐ ๋์จ ์ด์ ๋ ๋ ๋ฒ์งธ Section์ VirtualSize์ ๊ฐ์ด SizeOfRawData ๊ฐ๋ณด๋ค ํฌ๊ธฐ ๋๋ฌธ์ด๋ค.
โป ์ฐธ๊ณ
https://tyeolrik.github.io/reversing/2017/03/15/Reversing-12-RVA-to-RAW.html
RVA to RAW
Hello, I am TyeolRik, Newbie Developer
tyeolrik.github.io
'EVI$ION > ์ธ๊ณต์ง๋ฅ ์ ์ฑ์ฝ๋ ๋ถ๋ฅ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฆฌ๋ฒ์ฑ ์ด ์ ๋๋ ์์์ผ์ง] #5. Windows ๋ฆฌ๋ฒ์ฑ ๊ธฐ๋ฅ ๋ถ์(2) (0) | 2024.11.21 |
---|---|
[๋ฆฌ๋ฒ์ฑ ์ด ์ ๋๋ ์์์ผ์ง] #3. Windows ๋ฆฌ๋ฒ์ฑ ๊ธฐ๋ฅ ๋ถ์(1) (1) | 2024.11.21 |
[SESSION] 3. PEํ์ผ(2) (1) | 2024.10.04 |
[STUDY] #WEEK2 - QUIZ (0) | 2024.09.24 |
[SESSION] 2. PEํ์ผ (0) | 2024.09.24 |