songining
<ํ•ดํ‚น: ๊ณต๊ฒฉ์˜ ์˜ˆ์ˆ > ์ฑ…์„ ๋ณด๊ณ  ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค
X86 ํ”„๋กœ์„ธ์„œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค.


๋ฉ”๋ชจ๋ฆฌ ์„ธ๊ทธ๋จผํŠธ

์ปดํŒŒ์ผ๋œ ํ”„๋กœ๊ทธ๋žจ ๋ฉ”๋ชจ๋ฆฌ๋Š” ์ฝ”๋“œ, ๋ฐ์ดํ„ฐ, bss, ํž™, ์Šคํƒ์˜ 5๊ฐœ์˜ ์„ธ๊ทธ๋จผํŠธ๋กœ ๋‚˜๋‰œ๋‹ค. 

 

์ฝ”๋“œ

ํ”„๋กœ๊ทธ๋žจ์˜ ๊ธฐ๊ณ„์–ด ๋ช…๋ น์ด ๋“ค์–ด์žˆ์Œ  ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๋ฉด EIP๋Š” ์ฝ”๋“œ ์„ธ๊ทธ๋จผํŠธ์˜ ๋งจ ์ฒ˜์Œ ์œ„์น˜๋กœ ์„ค์ •๋œ๋‹ค. 

๊ทธ๋ฆฌ๊ณ  ํ”„๋กœ์„ธ์Šค๋Š” ๋‹ค์Œ ์ž‘์—…์„ ๋ฐ˜๋ณต ์‹คํ–‰ํ•œ๋‹ค. 

1. EIP๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๋Š” ๋ช…๋ น์„ ์ฝ๋Š”๋‹ค. 
2. ๊ทธ ๋ช…๋ น์˜ ๊ธธ์ด๋ฅผ EIP์— ๋”ํ•œ๋‹ค. 
3. 1๋‹จ๊ณ„์—์„œ ์ฝ์€ ๋ช…๋ น์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. 
4. 1๋‹จ๊ณ„๋กœ ๋Œ์•„๊ฐ„๋‹ค. 

- ์ฝ”๋“œ ์„ธ๊ทธ๋จผํŠธ๋Š” ๋ณ€์ˆ˜๊ฐ€ ์•„๋‹Œ ์ฝ”๋“œ๋งŒ์„ ์ €์žฅํ•˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ ์“ฐ๊ธฐ๊ฐ€ ๊ธˆ์ง€๋˜์–ด์žˆ๋‹ค. (์‚ฌ์šฉ์ž๊ฐ€ ํ”„๋กœ๊ทธ๋žจ ์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ๋ง‰๊ธฐ ์œ„ํ•จ) 

์ฝ”๋“œ ์„ธ๊ทธ๋จผํŠธ์— ์“ฐ๋ ค๋Š” ์‹œ๋„๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ ์šด์˜์ฒด์ œ๊ฐ€ ๊ทธ ์‚ฌ์‹ค์„ ์‚ฌ์šฉ์ž์—๊ฒŒ ์•Œ๋ฆฌ๊ณ  ํ”„๋กœ๊ทธ๋žจ์€ ์ข…๋ฃŒ๋จ 

- ํ…์ŠคํŠธ ์„ธ๊ทธ๋จผํŠธ๋Š” ๋ฐ”๋€Œ๋Š” ๊ฒƒ์ด ์—†์œผ๋ฏ€๋กœ ํฌ๊ธฐ๊ฐ€ ๊ณ ์ •๋ผ ์žˆ๋‹ค. 

 

 

๋ฐ์ดํ„ฐ์™€ bss 

- ์ „์—ญ ๋ณ€์ˆ˜์™€ ์ •์  ํ”„๋กœ๊ทธ๋žจ ๋ณ€์ˆ˜๋ฅผ ์ €์žฅ

- ๋ฐ์ดํ„ฐ ์„ธ๊ทธ๋จผํŠธ : ์ดˆ๊ธฐํ™”๋œ ์ „์—ญ ๋ณ€์ˆ˜์™€ ์ •์  ๋ณ€์ˆ˜ ์ €์žฅ 

- bss ์„ธ๊ทธ๋จผํŠธ : ์ดˆ๊ธฐํ™”๋˜์ง€ ์•Š์€ ์ „์—ญ ๋ณ€์ˆ˜์™€ ์ •์  ๋ณ€์ˆ˜ ์ €์žฅ 

- ๋‘ ์„ธ๊ทธ๋จผํŠธ ๋ชจ๋‘ ์“ฐ๊ธฐ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ํฌ๊ธฐ๋Š” ๊ณ ์ •๋ผ์žˆ์Œ 

- ํ•จ์ˆ˜ ์ปจํ…์ŠคํŠธ์— ๊ด€๊ณ„์—†์ด ์ „์—ญ ๋ณ€์ˆ˜๋Š” ์ผ์ •ํ•˜๋‹ค. (์ „์—ญ ๋ณ€์ˆ˜์™€ ์ •์  ๋ณ€์ˆ˜๋Š” ๋ชจ๋‘ ์ž์‹ ๋งŒ์˜ ๋ฉ”๋ชจ๋ฆฌ ์„ธ๊ทธ๋จผํŠธ์— ์ €์žฅ๋˜๋ฏ€๋กœ ์ผ์ •ํ•˜๊ฒŒ ์œ ์ง€) 

 

ํž™ 

- ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ง์ ‘ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ ์„ธ๊ทธ๋จผํŠธ

- ํฌ๊ธฐ๊ฐ€ ๊ณ ์ •๋˜์–ด์žˆ์ง€ ์•Š์Œ (ํ•„์š”์— ๋”ฐ๋ผ ํฌ๊ธฐ ์ปค์ง€๊ฑฐ๋‚˜ ์ž‘์•„์ง)

- ๋ฉ”๋ชจ๋ฆฌ ๋ธ”๋ก์„ ํ• ๋‹นํ•ด ์‚ฌ์šฉ

- ํ• ๋‹น๊ณผ ํ•ด์ œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ์˜ํ•ด ๊ด€๋ฆฌ๋จ 

- ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์‹คํ–‰ ์ค‘์— ํž™ ํ• ๋‹น ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์˜ˆ์•ฝํ•˜๊ณ  ์ทจ์†Œ 

 

์Šคํƒ

- ํฌ๊ธฐ ๊ฐ€๋ณ€์ , ์ง€์—ญ ํ•จ์ˆ˜ ๋ณ€์ˆ˜ ์ €์žฅํ•˜๊ณ  ํ•จ์ˆ˜ ํ˜ธ์ถœ ์‹œ์˜ ์ž„์‹œ ์ปจํ…์ŠคํŠธ ์ €์žฅ 

- ํ”„๋กœ๊ทธ๋žจ์—์„œ ์–ด๋–ค ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ๊ฒฝ์šฐ ๊ทธ ํ•จ์ˆ˜๋Š” ์ž์‹ ๋งŒ์˜ ๋ณ€์ˆ˜ ๊ณต๊ฐ„์„ ๊ฐ€์ง

- ํ•จ์ˆ˜์˜ ์ฝ”๋“œ๋Š” ๋‹ค๋ฅธ ๋ฉ”๋ชจ๋ฆฌ์— ์œ„์น˜ํ•ด ์žˆ๋Š” ํ…์ŠคํŠธ ์„ธ๊ทธ๋จผํŠธ์— ์ €์žฅ 

- ์Šคํƒ์€ ํ•จ์ˆ˜ ํ˜ธ์ถœ ์‹œ ์ „๋‹ฌ๋œ ๋ชจ๋“  ์ธ์ž์™€ EIP๊ฐ€ ๋˜๋Œ์•„๊ฐ€์•ผ ํ•  ์ฃผ์†Œ์™€ ํ•จ์ˆ˜์—์„œ ์‚ฌ์šฉ๋œ ๋ชจ๋“  ์ง€์—ญ ๋ณ€์ˆ˜๋ฅผ ์ €์žฅํ•˜๋Š”๋ฐ์— ์“ฐ์ž„ 

- ์Šคํƒํ”„๋ ˆ์ž„์ด๋ผ๋Š” ๊ณณ์— ๋‹ค๊ฐ™์ด ์ €์žฅ! 

- ํž™๊ณผ ๋‹ฌ๋ฆฌ ๋†’์€ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ์—์„œ ๋‚ฎ์€ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ ์ชฝ์œผ๋กœ ์ฆ๊ฐ€(์Šคํƒ์ด๋ฏ€๋กœ) 

 

** ์Šคํƒ ํ”„๋ ˆ์ž„์˜ ๊ตฌ์„ฑ 

- ํ•จ์ˆ˜์˜ ์ž…๋ ฅ ์ธ์ž

- ํ•จ์ˆ˜์˜ ๋กœ์ปฌ ๋ณ€์ˆ˜

- SFP(Saved Frame Pointer) : EBP๋ฅผ ์›๋ž˜ ๊ฐ’์œผ๋กœ ๋˜๋Œ๋ฆฌ๋Š”๋ฐ ์“ฐ์ž„ 

- RET(Return Address) : EIP์˜ ๊ฐ’์„ ํ•จ์ˆ˜ ํ˜ธ์ถœ์ด ๋๋‚œ ๋’ค์— ์‹คํ–‰ํ•ด์•ผ ํ•  ์ฃผ์†Œ๋กœ ๋˜๋Œ๋ฆฌ๋Š”๋ฐ ์“ฐ์ž„