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