SECURITY/REVERSING

REVERSING ์‹œ์ž‘ํ•˜๊ธฐ - ๊ธฐ์ดˆ ๊ฐœ๋…1 :: ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ(RAM)

\b\t 2020. 7. 8. 15:07

๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ(RAM)

RAM (Random Access Memory)

: ๋ฐ˜๋„์ฒด ํšŒ๋กœ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋Š” ํœ˜๋ฐœ์„ฑ ๋ฉ”๋ฆฌ๋กœ๋กœ, ์ฃผ๊ธฐ์–ต ์žฅ์น˜์ด๋‹ค.

 ์–ด๋А ์œ„์น˜์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋“ ์ง€ ์ ‘๊ทผํ•˜๋Š” ๋ฐ ๋™์ผํ•œ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฐ๋‹ค. (cf. ํ•˜๋“œ ๋””์Šคํฌ, ํ”Œ๋กœํ”ผ ๋””์Šคํฌ ๋“ฑ)

 

 

 

 

- Code ์˜์—ญ

: ์ฝ”๋“œ ์ž์ฒด๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ. Hex / BIN ํŒŒ์ผ ๋ฉ”๋ชจ๋ฆฌ์ด๋‹ค.

 ํ”„๋กœ๊ทธ๋žจ ๋ช…๋ น์ด ์œ„์น˜ํ•˜๋Š” ๊ณณ์œผ๋กœ , ๊ธฐ๊ณ„์–ด๋กœ ์ œ์–ด๋˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์ด๋‹ค.

 'read only' ์˜์—ญ์œผ๋กœ ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€. ์“ฐ๊ธฐ ๋“ฑ์˜ ๋ณ€๊ฒฝ ์ž‘์—…์ด ๋“ค์–ด์˜ค๋ฉด 'access violation' ์ด ๋ฐœ์ƒํ•œ๋‹ค.

 

ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๊ณ„์† ์œ ์ง€๋˜๋Š” ์˜์—ญ์ด๋‹ค.

 

- Data ์˜์—ญ

: ์ „์—ญ๋ณ€์ˆ˜(global), ์ •์ ๋ณ€์ˆ˜(static), ๋ฐฐ์—ด(array), ๊ตฌ์กฐ์ฒด(structure) ๋“ฑ์„ ์ €์žฅ

 ์ดˆ๊ธฐํ™”๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ , ์ดˆ๊ธฐํ™”๋˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ๋Š” BSS(Block Stated Symbol) ์˜์—ญ์— ์ €์žฅ๋œ๋‹ค.

 -> Data ์˜์—ญ์ด ๋Ÿฐํƒ€์ž„ ์ด์ „์— ์ดˆ๊ธฐํ™”ํ•˜๋Š” ๊ฒƒ์ด๋ผ๋ฉด, BSS ๋Š” ๋Ÿฐํƒ€์ž„ ์ดํ›„ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ๊ฒƒ

     (-> BSS ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒŒ ๊ณต๊ฐ„์ ์œผ๋กœ ๋ณด๋ฉด ๋” ํšจ์œจ์ ์ด๊ธฐ๋„ ํ•˜๋‹ค)

 

ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋  ๋•Œ ์ƒ์„ฑ๋˜๊ณ  ์ข…๋ฃŒ๋˜๋ฉด ์‹œ์Šคํ…œ์— ๋ฐ˜ํ™˜ํ•œ๋‹ค.

static ๋ณ€์ˆ˜๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋  ๋•Œ ๊ณต๊ฐ„๋งŒ ํ• ๋‹น๋˜๊ณ , ํ•ด๋‹น ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋  ๋•Œ ์ดˆ๊ธฐํ™”๋œ๋‹ค.

 

ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๊ณ„์† ์œ ์ง€๋˜๋Š” ์˜์—ญ์ด๋‹ค.

 

์ฃผ์˜! ํ•จ์ˆ˜ ๋‚ด (main ํ•จ์ˆ˜ ํฌํ•จ) ๋ณ€์ˆ˜๋“ค์€ ์ด๊ณณ์— ํ•ด๋‹น๋˜์ง€ ์•Š๋Š”๋‹ค. -> Stack 

 

 

- Heap ์˜์—ญ

: ๋™์  ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹นํ•  ๋•Œ ์“ฐ์ด๋Š” ๋ฐ์ดํ„ฐ ์˜์—ญ

 ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ ๊ฐ’์— ์˜ํ•ด์„œ๋งŒ ์ฐธ์กฐ๋˜๊ณ  ์‚ฌ์šฉ๋˜๋Š” ์˜์—ญ์ด๋‹ค.

 

-> malloc, new ๋“ฑ๋“ฑ

 

 

 

- Stack ์˜์—ญ

: ํ”„๋กœ๊ทธ๋žจ์ด ์ž๋™์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ์ž„์‹œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ

 ์ง€์—ญ๋ณ€์ˆ˜(local), ๋งค๊ฐœ๋ณ€์ˆ˜, ๋ฆฌํ„ด ๊ฐ’ ๋“ฑ ์ž ์‹œ ์‚ฌ์šฉ๋˜์—ˆ๋‹ค๊ฐ€ ์‚ฌ๋ผ์ง€๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ์˜์—ญ์ด๋‹ค.

 ํ•จ์ˆ˜ ํ˜ธ์ถœ ์‹œ ์ƒ์„ฑ๋˜๊ณ , ํ•จ์ˆ˜๊ฐ€ ๋๋‚˜๋ฉด ์‹œ์Šคํ…œ์— ๋ฐ˜ํ™˜๋œ๋‹ค. 

 

Last In First Out !!

 

๋‹ค๋ฅธ ์˜์—ญ๋“ค์€ ํ•˜์œ„ ์˜์—ญ์œผ๋กœ๋ถ€ํ„ฐ ํ• ๋‹น๋˜์ง€๋งŒ Stack ์˜์—ญ์€ ์ƒ์œ„ ์˜์—ญ๋ถ€ํ„ฐ ํ• ๋‹น๋œ๋‹ค.

 

* Heap ์˜์—ญ์ด ์ปค์ง€๋ฉด Stack ์˜์—ญ์ด ์ž‘์•„์ง€๊ฒŒ ๋˜๊ณ , ์—ญ๋„ ์„ฑ๋ฆฝํ•œ๋‹ค.

  -> Heap Overflow : Heap ์ด Stack ์˜์—ญ์„ ์นจ๋ฒ”

  -> Stack Overflow : Stack ์ด Heap ์˜์—ญ์„ ์นจ๋ฒ”

๋Œ“๊ธ€์ˆ˜0