Computer Architecture
ํด์ฆ๋ ๋ฑํ ์ค๋ช ์ ํ ๊ป์ ์ ๊ฑฐ ๋ดค์ผ๋ฉด ์ง์ง๋ก ๊ธฐ์ด๋๊น ์ด์งํผ ๋ชจ๋ฅด์๋ฉด ๋ค์ ๋ฐฐ์์ผํด์
Background: Windows Memory Layout
๋ฉ๋ชจ๋ฆฌ ๋ ์ด์์(Memory Layout) : ํ๋ก์ธ์ค ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ(Virtual Memory)์ ๊ตฌ์ฑ
ํ๋ก๊ทธ๋จ์ ์คํํ๋ฉด OS๋ ํ๋ก์ธ์ค์ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํ ๋นํ๋ฉฐ, CS์์ ์ด ๊ณต๊ฐ์ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๋ผ๊ณ ๋ถ๋ฆ ๋๋ค.
์ด์์ฒด์ ๋ ํ๋ก๊ทธ๋จ์ ์ ๋ณด๋ฅผ ์ฐธ๊ณ ํ์ฌ ํ๋ก๊ทธ๋จ์ ์ ์ฅ๋ ๋ฐ์ดํฐ๊ฐ ์ ์ ํ ์์ญ์ ์ ์ฅ
ํ๋ก์ธ์ค๊ฐ ์ฌ์ฉํ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฉ๋๋ณ๋ก ๊ตฌํ, ํ๋ก์ธ์ค๊ฐ ์ฌ์ฉํ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ ํ๊ฒ ๊ตฌ์ญ์ ์ ์ฅํจ
์ ์ฌํ ๋ฐ์ดํฐ๋ฅผ ๋ชจ์๋๊ธฐ ๋์ OS๋ ๊ฐ ๊ตฌ์ญ์ ์ ์ ํ ๊ถํ์ ๋ถ์ฌํ๋ฉฐ, ๊ฐ๋ฐ์๋ ํ๋ก์ธ์ค ๋ฉ๋ชจ๋ฆฌ ์ง๊ด์ ์ดํด
SW ๋ฆฌ๋ฒ์ค ์์ง๋์ด๋ง์ ํต์ฌ์ ๋ฐ์ด๋๋ฆฌ๋ฅผ ๋ถ์ํด ๋ฐ์ด๋๋ฆฌ์ ๋์์ ์ดํดํ๋ ๊ฒ์
๋๋ค.
์ ๋งํฌ์ ๋ฐฐ์ ๋ , ๋ฐ์ด๋๋ฆฌ์ ๋์์ ๋ฉ๋ชจ๋ฆฌ์ ๋ฉด๋ฐํ ์ฐ๊ด์ฑ์ด ์์ฃ .
๋ฐ๋ผ์ ๋ฐ์ด๋๋ฆฌ์ ๋์์ ์์ธํ ์ดํดํ๊ธฐ ์ํด์ ๋ฐ์ด๋๋ฆฌ์ ์ํธ์์ฉํ๋ ๋ฉ๋ชจ๋ฆฌ์ ๋ํด์๋ ์์ํฉ๋๋ค.
๊ฐ์๐งพ
- ์น์
- .text
- .data
- .rdata
- ์คํ
- ํ
ํ๋ก์ธ์ค ๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ
์๋์ฐ์ PEํ์ผ์ PE ํค๋์ 1๊ฐ ์ด์์ ์น์ ์ผ๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค.
์ฌ๊ธฐ์ ์น์
์ ์ฐ์ฌํ ์ฉ๋๋ก ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ๊ฐ ๋ชจ์ฌ์๋ ์์ญ์
๋๋ค.
์๋ฅผ ๋ค๋ฉด ".text" ์น์
์๋ PE์ ์ฝ๋๊ฐ ์ ํ์๊ณ , ".data"์๋ PE๊ฐ ์คํ์ค์ ์ฐธ์กฐํ ๋ฐ์ดํฐ๊ฐ ์์ฃ
์น์
์ ๋ํ ์ ๋ณด๋ PE ํค๋์ ์ ํ์์ต๋๋ค.
PEํค๋์ ์ ์ฅ๋๋ ์น์
๊ณผ ๊ด๋ จ ๋ฐ์ดํฐ ์ค, ์ค์ํ ๊ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์น์ ์ ์ด๋ฆ/ ํฌ๊ธฐ
- ์น์ ์ด ๋ก๋๋ ์ฃผ์์ ์คํ์
- ์น์ ์ ์์ฑ๊ณผ ๊ถํ
์๋์ฐ๋ PE๋ฅผ ์คํํ ๋, ์ด ์ ๋ณด๋ฅผ ์ฐธ์กฐํด PE์ ๊ฐ ์น์
๋ค์ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ ํ ์ธ๊ทธ๋จผํธ์ ๋งคํ!
PE์ ํ์ ์กด์ฌํ ์น์
์ด ์ ํด์ง ๊ฒ์ ์๋์ง๋ง, ".text", ".data", ".rdata" ์น์
์ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉํจ
.text
text ์น์ ์ ์คํ ๊ฐ๋ฅํ ๊ธฐ๊ณ ์ฝ๋๊ฐ ์์นํ๋ ์์ญ!
ํ๋ก๊ทธ๋จ์ ๋์ํ๊ธฐ ์ํด์ ์ด ์ธ๊ทธ๋จผํธ์ ์ฝ๊ธฐ ๊ถํ๊ณผ ์คํ ๊ถํ์ด ๋ถ์ฌ๋ฉ๋๋ค.
๋ฐ๋ฉด ์ฐ๊ธฐ ๊ถํ์ด ์์ผ๋ฉด ๊ณต๊ฒฉ์๊ฐ ์
์์ ์ธ ์ฝ๋๋ฅผ ์ฝ์
ํ๊ธฐ ์ฌ์์ง๋ฏ๋ก ์์ฆ ๋๋ถ๋ถ์ ์ด ๊ถํ์ ์ ๊ฑฐํ์ฃ
์๋์ ์ ์ 31337์ ๋ฐํํ๋ mainํจ์๊ฐ ์ปดํ์ผ ๋๋ฉด 554889e5b8697a00005dc3๋ผ๋ ๊ธฐ๊ณ์ฝ๋๋ฅผ ๋ฐํํ๋๋ฐ
์ด ๊ธฐ๊ณ ์ฝ๋๊ฐ ์ฝ๋ ์ธ๊ทธ๋จผํธ์ ์์นํฉ๋๋ค.
.data
.data ์น์ ์๋ ์ปดํ์ผ ์์ ์ ๊ฐ์ด ์ ํด์ง ์ ์ญ ๋ณ์๋ค์ด ์์น!
CPU๊ฐ ์ด ์น์
์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ ์ธ ์ ์์ด์ผ ํ๋ฏ๋ก, ์ฝ๊ธฐ/ ์ฐ๊ธฐ ๊ถํ์ด ๋ถ์ฌ๋ฉ๋๋ค.
์๋๋ .data ์น์
์ ํฌํจ๋๋ ์ฌ๋ฌ ๋ฐ์ดํฐ์ ์ ํ์
๋๋ค.
.rdata
.rdata ์น์
์๋ ์ปดํ์ผ ์์ ์ ๊ฐ์ด ์ ํด์ง ์ ์ญ ์์์ ์ฐธ์กฐํ DLL ๋ฐ ์ธ๋ถ ํจ์๋ค์ ์ ๋ณด ์ ์ฅ
CPU๊ฐ ์ด ์น์
์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ์ ์์ด์ผํ๋ฏ๋ก, ์ฝ๊ธฐ ๊ถํ ๋ถ์ฌ! ํ์ง๋ง ์ฐ๊ธฐ๋ ๋ถ๊ฐ๋ฅ
์๋๋ .rdata ์น์
์ ํฌํจ๋๋ ์ฌ๋ฌ ๋ฐ์ดํฐ์ ์ ํ์ด๋ฉฐ, ์ฃผ์ ๊น๊ฒ ๋ณผ ๋ณ์๋ str_ptr์
๋๋ค.
str_ptr์ "readonly"๋ผ๋ ๋ฌธ์์ด์ ๊ฐ๋ฅดํค๋๋ฐ, str_ptr์ ์ ์ญ ๋ณ์๋ก์ .data์ ์์นํ์ง๋ง,
"readonly"๋ ์์ ๋ฌธ์์ด๋ก ์ทจ๊ธ๋์ด .rdata์ ์์นํฉ๋๋ค.
๊ณผ๊ฑฐ์๋ ์ฐธ์กฐํ DLL๊ณผ ์ธ๋ถ ํจ์๋ค์ ์ ๋ณด๋ฅผ .idata ์น์ ์ ์ ์ฅํ์ผ๋, ์ต๊ทผ์ ๋๋ถ๋ถ rdata์ ์ ์ฅ๋จ
์น์ ์ด ์๋ ๋ฉ๋ชจ๋ฆฌ
์๋์ฐ์ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์๋ ์น์
๋ง ๋ก๋๋๋ ๊ฒ์ด ์๋์ฃ
ํ๋ก๊ทธ๋จ ์คํ์ ์์ด ํ์ํ ์คํ๊ณผ ํ ์ญ์ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ ์ฌ๋ฉ๋๋ค.
์คํ
์๋์ฐ์ฆ ํ๋ก์ธ์ค์ ๊ฐ ์ฐ๋ ๋๋ ์์ ๋ง์ ์คํ ๊ณต๊ฐ์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
๋ณดํต ์ง์ญ ๋ณ์๋ ํจ์ ๋ฆฌํด ์ฃผ์๊ฐ ์ ์ฅ๋ฉ๋๋ค.
์ด ์์ญ์ ์์ ๋กญ๊ฒ ์ฝ๊ณ ์ธ ์ ์์ด์ผ ํ๊ธฐ ๋๋ฌธ์ ์ฝ๊ธฐ/์ฐ๊ธฐ ๊ถํ์ด ๋ถ์ฌ!
์ฐธ๊ณ ๋ก ์คํ์ ๋ํด '์๋๋ก ์๋๋ค'๋ผ๋ ํํ์ ์ข
์ข
๋ฃ๋๋ฐ, ์ด๋ ์คํ์ด ํ์ฅ๋ ๋,
๊ธฐ์กด ์ฃผ์๋ณด๋ค ๋ฎ์ ์ฃผ์๋ก ํ์ฅ๋๊ธฐ ๋๋ฌธ์
๋๋ค.
์ ์ฝ๋์์๋ ์ง์ญ๋ณ์ choice๊ฐ ์คํ์ ์ ์ฅ๋์ฃ
ํ
ํ๋ก๊ทธ๋จ์ด ์ฌ๋ฌ ์ฉ๋๋ก ์ฌ์ฉํ๊ธฐ ์ํด ํ ๋น๋ฐ๋ ๊ณต๊ฐ!
๋ฐ๋ผ์ ๋ชจ๋ ์ข
๋ฅ์ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋ ์ ์์ต๋๋ค. ์คํ๊ณผ ๋ค๋ฅธ ์ ์ ๋น๊ต์ ์คํ๋ณด๋ค ํฐ ๋ฐ์ดํฐ๋ ์ ์ฅ๋๊ณ
์ ์ญ์ ์ผ๋ก ์ ๊ทผ์ด ๊ฐ๋ฅํ๋๋ก ์ค๊ณ๋์๋ค๋ ์ ์ด์ฃ . ๋ํ ์คํ ์ค ๋์ ์ผ๋ก ํ ๋น ๋ฐ๋ ์ ๊น์ง ํ๋ฌ์ค!
๊ถํ์ ๋ณดํต ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ ์ฐ๊ธฐ๋ง ํ๊ธฐ ๋๋ฌธ์ ์ฝ๊ธฐ/์ฐ๊ธฐ ๊ถํ๋ง์ ๊ฐ์ง๋, ์ํฉ์ ๋ฐ๋ผ ์คํ๊ถํ์ด ๋ฐ๋๋๋ค.
์ ์ฝ๋๋ heap_data_ptr์ malloc()์ผ๋ก ๋์ ํ ๋นํ ์์ญ์ ์ฃผ์๋ฅผ ๋์
ํ๊ณ , ์ด ์์ญ์ ๊ฐ์ ์๋๋ค.
heap_data_ptr์ ์ง์ญ๋ณ์์ด๋ฏ๋ก ์คํ์ ์์นํ๋ฉฐ, malloc์ผ๋ก ํ ๋น๋ฐ์ ํ ์ธ๊ทธ๋จผํธ์ ์ฃผ์๋ฅผ ๊ฐ๋ฅดํด
๋ง๋ฌด๋ฆฌ
์น์ | ์ญํ | ์ผ๋ฐ์ ๊ถํ | ์ฌ์ฉ ์ |
.text | ์คํ ๊ฐ๋ฅํ ์ฝ๋๊ฐ ์ ์ฅ๋ ์์ญ | ์ฝ๊ธฐ, ์คํ | main() ๋ฑ์ ํจ์ ์ฝ๋ |
.data | ์ด๊ธฐํ๋ ์ ์ญ ๋ณ์๊ฐ ์์นํ๋ ์์ญ | ์ฝ๊ธฐ์ ์ฐ๊ธฐ | ์ด๊ธฐํ๋ ์ ์ญ ๋ณ์, ์ ์ญ ์์ |
.rdata | ์ด๊ธฐํ๋ ์ ์ญ ์์๋ ์ํฌํธ ๋ฐ์ดํฐ๊ฐ ์์นํ๋ ์์ญ | ์ฝ๊ธฐ ์ ์ฉ | ์ ์ญ ์์, ์ํฌํธ ๋ฐ์ดํฐ |
์คํ | ์ผ์์ ์ผ๋ก ์ ์ฅํ๊ณ ์ฌ์ฉํ๋ ์์ ์์ญ | ์ฝ๊ธฐ, ์ฐ๊ธฐ | ์ง์ญ ๋ณ์, ํจ์์ ์ธ์ ๋ฑ |
ํ | ์์ ๋กญ๊ฒ ์ฌ์ฉํ ์ ์๋ ์์ญ | ์ฝ๊ธฐ, ์ฐ๊ธฐ | malloc(), calloc() ๋ฑ์ผ๋ก ํ ๋น ๋ฐ์ ๋ฉ๋ชจ๋ฆฌ |
์ฐธ๊ณ ์๋ฃ
์ฐธ๊ณ ์ด๋ฏธ์ง
'๐โSystem_Study > ๐โDreamhack_Reversing' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
rev-basic-0 (0) | 2022.05.17 |
---|---|
Exercise: Helloworld (0) | 2022.05.16 |
x86 Assembly (0) | 2022.05.12 |
Background: Static Analysis vs. Dynamic Analysis (0) | 2022.05.11 |
Background: Binary (0) | 2022.04.13 |