1๏ธโฃ Reversing ๊ธฐ์ด
๐CPU ์ํคํ ์ฒ
- CISC (๋ณตํฉ ๋ช ๋ น์ด ์งํฉ ๊ตฌ์กฐ) - ๋ฉ๋ชจ๋ฆฌ ์ฉ๋์ ์ ๊ฒ ์ฐจ์งํ๋ ํ๋ก๊ทธ๋จ์ ๊ตฌ์ฑํ ์ ์๋๋ก ์ค๊ณ๋ ํ๋ก์ธ์ค - ์๊ท๋ชจ ๋ผ์ธ์ ํ๋ก๊ทธ๋จ์ผ๋ก ๋ง์ ์์ ์ ์ํํ๊ธฐ ์ํด, ๊ฐ๋ ฅํ ๋ช ๋ น์ด๋ฅผ ๋ช ๋ น์ด ์งํฉ์ ํฌํจ - ๊ฐ๋ณ ๋ช ๋ น์ด ํ์๊ณผ ๊ธธ์ด, ๋ง์ ๋ช ๋ น์ด ์ข ๋ฅ, ๋ณต์กํ ์ฃผ์ ์ง์ ๋ฐฉ์, ๋ณต์กํ ํ๋ก ๊ตฌ์ฑ - ์ธํ ๊ณ์ด์ ํ๋ก์ธ์(X86/64)
- RISC (์ถ์ฝ ๋ช ๋ น์ด ์งํฉ ๊ตฌ์กฐ) - ์ ์ ์์ ์ปดํจํฐ ๋ช ๋ น์ด๋ฅผ ์ํํ๋๋ก ์ค๊ณ๋ ํ๋ก์ธ์ - ๋จ์ํ์ง๋ง ๋ ๋นจ๋ฆฌ ์คํ๋๋ ์์์ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ๋ ์ํคํ ์ฒ - ๋ณต์กํ๊ณ ๊ฐ๋ ฅํ ๋ช ๋ น์ด ์งํฉ์ ์คํ๋ ค ๊ฐ๋จํ ๋ช ๋ น์ด์ ํด์๊ณผ ์คํ ์๊ฐ๊น์ง ์ฆ๊ฐ์ํด » CISC - ๋จ์ ๋ช ๋ น์ด, ์งง์ ์ฌ์ดํด ์๊ฐ, ์ ์ฌ ๋ฐ ์ ์ฅ ๊ตฌ์กฐ, ๊ณ ์ ๊ธธ์ด ๋ช ๋ น์ด, ๋จ์๋ช ๋ น์ด ํ์, ์ ํ๋ ์ข ๋ฅ์ ์ฃผ์ ์ง์ ๋ฐฉ์ - MIPS, ARM - IoT ๋๋ฐ์ด์ค ๋ฐ ์ค๋งํธํฐ์์ ์ฌ์ฉ
๐๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ
- ์คํ๋ ํ๋ก๊ทธ๋จ๊ณผ ๋ฐ์ดํฐ๊ฐ CPU์ ๊ฐ๊ธฐ์ ์ ์ ์ ๋จธ๋ฌด๋ ์ฅ์ - ์ง์ ์ ๊ทผ ์ ์ฅ๋งค์ฒด(DASD), ์ฝ๊ธฐ/์ฐ๊ธฐ, ํ๋ฐ์ฑ - ๋ชจ๋ ํ๋ก๊ทธ๋จ์ด ์คํ๋๋ ค๋ฉด ๋ฐ๋์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ฑฐ์ณ์ผ ํ๋ค. - ์ฒด๊ฐ ์ปดํจํฐ ์๋ : CPU์ฑ๋ฅ + ๋ฉ๋ชจ๋ฆฌ ์ฑ๋ฅ(์ฉ๋)
๐๊ฐ์ ๊ธฐ์ต ์ฅ์น์ ํ์์ฑ
- ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ ์ฉ๋ 8GB์ ๊ฒ์ ํ๋ก๊ทธ๋จ 20GB๋ฅผ ์ฌ๋ฆด ์ ์๋ค. - ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ์๊ตฌ์ฌํญ - ๋ค์์ ํ๋ก์ธ์ค๊ฐ ๋์์ ์คํ๋ ์ ์๋ ์ฃผ์ ๊ณต๊ฐ - ๊ฐ ํ๋ก์ธ์ค ๊ณ ์ ์ ๋ฉ๋ชจ๋ฆฌ ์์ ๋ณดํธ ๋ฐฉ๋ฒ - ํ์ ์ ํ๋ก์ธ์ค ์ฌ์ด์ ์ฃผ์ ๊ณต๊ฐ ๊ณต์ ๊ฐ ๊ฐ๋ฅํด์ผ ํจ - ์ฃผ์ ๊ณต๊ฐ์ ํ๋ก๊ทธ๋๋จธ์๊ฒ ํฌ๋ช ํ๊ฒ ๊ด๋ฆฌํด์ผ ํจ
๐๊ฐ์ ๊ธฐ์ต ์ฅ์น
- ํ๋์จ์ด์ ์ํํธ์จ์ด๋ฅผ ์ฌ์ฉํด ๊ตฌํํ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ๊ธฐ์ - ํ๋ก์ธ์ค์ ์ผ๋ถ๋ง ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌํ๊ณ ๋๋จธ์ง๋ ๋ณด์กฐ๊ธฐ์ต์ฅ์น์ ๋ - ํ๋ก๊ทธ๋จ์ด๋ ๋ฐ์ดํฐ๋ฅผ ํ์ด์ง ๋๋ ์ธ๊ทธ๋จผํธ ๋จ์๋ก ๊ตํ - ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ๋ฐ ๋ณดํธ ๋ฐฉ์์ ์ด์์ฒด์ ๋ง๋ค ๋ค๋ฅด๊ฒ ์ ์
๐๋ํ์ ์ธ ์ด์ ๋ธ๋ฌ
- GAS(GNU ์ด์ ๋ธ๋ฌ) - AT&T ๋ฐฉ์์ผ๋ก ๋ฌด๋ฃ์ด๋ฉฐ ํฌ๋ก์ค ํ๋ซํผ์ ์ง์. GNU Project์์ ์ ์ - MASM(Microsoft Macro Assembler) - Intel ๋ฐฉ์์ผ๋ก ๋น์ฃผ์ผ ์คํ๋์ค 2008๋ถํฐ ๊ธฐ๋ณธ ํ์ฌ. ๋งคํฌ๋ก ์ง์. ํฌ๋ก์ค ํ๋ซํผ ๋ฏธ์ง์ - NASM(Netwide Assembler) - 80x86 ํ๋ซํผ ์ฉ์ผ๋ก ํฌ๋ก์ค ํ๋ซํผ์ ์ง์. MASM๊ณผ ์ ์ฌํ ์ ์ด ๋ง์ (Intel ๋ฐฉ์)
๐์ด์์ฒด์
ํ๋์จ์ด ์์์ ๊ด๋ฆฌํ๊ณ , ์์ฉ ์๋น์ค๋ฅผ ์ ๊ณต ์ฌ์ฉ์์ ํ๋์จ์ด ์ฌ์ด์ ์ธํฐํ์ด์ค ์ญํ ํ๋์จ์ด์ ๊ณ ์ฅ ํ์, ์ค๋ฅ ์ฒ๋ฆฌ, ๋ณด์์ ์ง
๐๋น๋ ๊ณผ์
Compile Assembly link C์ธ์ด -> Assembler Code -> ์ค๋ธ์ ํธ ํ์ผ -> exe <- <———————————– decomplie disassemble