SECURITY/REVERSING

REVERSING ์‹œ์ž‘ํ•˜๊ธฐ - ๊ธฐ์ดˆ ๊ฐœ๋… 4 :: ์–ด์…ˆ๋ธ”๋ฆฌ ์–ธ์–ด

\b\t 2020. 7. 8. 17:13

 

์–ด์…ˆ๋ธ”๋ฆฌ ์–ธ์–ด

 

: ์ž์—ฐ์–ด์™€ ๊ธฐ๊ณ„์–ด ์‚ฌ์ด๋กœ, CPU ์˜ ๋ช…๋ น์–ด๋“ค์„ ์˜์–ด์˜ ์•ฝ์ž์ธ ๊ธฐํ˜ธ๋กœ ํ‘œ๊ธฐํ•œ ๊ฒƒ์ด๋‹ค.

์ด ๊ธฐํ˜ธ๋“ค์€ CPU ์˜ ๋ช…๋ น์–ด(๊ธฐ๊ณ„์–ด) ์™€ ์ผ๋Œ€์ผ ๋Œ€์‘ํ•œ๋‹ค.

์ปดํ“จํ„ฐ ๊ตฌ์กฐ์— ๋”ฐ๋ผ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๊ณ„์–ด๊ฐ€ ๋‹ค๋ฅด๊ณ , ๊ทธ์— ๋”ฐ๋ผ ๋งŒ๋“ค์–ด์ง€๋Š” ์–ด์…ˆ๋ธ”๋ฆฌ์–ด๋„ ๋‹ค๋ฅด๋‹ค.

๊ธฐ๊ณ„์–ด๋ณด๋‹ค๋Š” ๋†’์€ ์ˆ˜์ค€์—์„œ ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

 

* ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ๋ถ„๋ฅ˜

๊ธฐ๊ณ„์–ด (machine language) <-> ์–ด์…ˆ๋ธ”๋ฆฌ์–ด(assembly language) <-> ๊ณ ๊ธ‰ ์–ธ์–ด(high-level language)

๊ธฐ๊ณ„์–ด์™€ ์–ด์…ˆ๋ธ”๋ฆฌ์–ด๊ฐ€ ์ €๊ธ‰ ์–ธ์–ด, Python, C, Java ๋“ฑ์ด ๊ณ ๊ธ‰ ์–ธ์–ด์— ์†ํ•œ๋‹ค.

 

* ์–ด์…ˆ๋ธ”๋Ÿฌ(assembler) : ๊ธฐํ˜ธ๋ฅผ ์ด์ง„์ˆ˜๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ

 

 

1 ๊ฐœ์š”

1.1 AT&T ๋ฐฉ์‹๊ณผ Intel ๋ฐฉ์‹

 

์–ด์…ˆ๋ธ”๋ฆฌ ์–ธ์–ด๋Š” AT&T ์™€ Intel ์˜ ๋‘ ๊ฐ€์ง€ (์„œ๋กœ ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š”) ๋ฌธ๋ฒ•์„ ๊ฐ€์ง„๋‹ค.

 

  AT&T ์˜ˆ์‹œ Intel ์˜ˆ์‹œ
์ ‘๋‘์‚ฌ ๋ ˆ์ง€์Šคํ„ฐ '%;, ๊ฐ’ '$" movl #1, %a
int $0x80
16์ง„์ˆ˜ 'h' , 2์ง„์ˆ˜ 'b' ,
6์ง„์ˆ˜ '0'
mov a, 1
int 80h
์ ‘๋ฏธ์‚ฌ long ์€ 'l' , word ๋Š” 'w' , byte ๋Š” 'b' ๋“ฑ movw %ax, %bx
movl %eax, %ebx
์—†์Œ byte ptr
dword str[ebx]
  ์ ‘๋ฏธ์‚ฌ์— ๋”ฐ๋ผ ์˜คํผ๋žœ๋“œ์˜ ํฌ๊ธฐ๋„ ์ •ํ•ด์ง      
์˜คํผ๋žœ๋“œ์˜ ์œ„์น˜ sourse (์›๋ณธ) ๋‹ค์Œ์— destination (๋ชฉ์ ์ง€)  instr sourse, dest destination (๋ชฉ์ ์ง€) 
๋‹ค์Œ์— sourse (์›๋ณธ)
instr dest, source
๋ฉ”๋ชจ๋ฆฌ
์˜คํผ๋žœ๋“œ
๊ธฐ๋ณธ ๋ ˆ์ง€์Šคํ„ฐ๊ฐ€ ( ) ์‚ฌ์ด movl (%eax), %ebx ๊ธฐ๋ณธ ๋ ˆ์ง€์Šคํ„ฐ๊ฐ€ [ ] ์‚ฌ์ด mov ebx, [eax]
๋ช…๋ น ์ˆ˜ํ–‰   movl 0x20(%ebx),%eax   mov eax, [ebx+20h]
  instr %segreg:disp(base, index, scale).foo instr foo, segreg:[base+index*scale+disp]

 

1.2 Opcode ์™€ Operands

 

๋ช…๋ น์–ด๋Š” Opcode(์—ฐ์‚ฐ์ž) ๋ถ€๋ถ„๊ณผ Operand(์ฃผ์†Œ) ๋ถ€๋ถ„์œผ๋กœ ๊ตฌ์„ฑ๋œ๋‹ค.

Opcode (Operation Code) : ๋ช…๋ น์–ด์—์„œ ์—ฐ์‚ฐ ๋™์ž‘์„ ์ง€์ •ํ•˜๋Š” ๋ถ€๋ถ„

Operand : ์—ฐ์‚ฐ์˜ ๋Œ€์ƒ. ์ฆ‰, Opcode ์˜ ๋Œ€์ƒ์ด ๋˜๋Š” ๋ฐ์ดํ„ฐ์˜ ์œ„์น˜(์ฃผ์†Œ)

 

์š”์•ฝํ•˜์ž๋ฉด, ๋ช…๋ น์–ด์™€ ์ธ์ž!

 

* Opcode ๋Š” Operand ์˜ ๊ฐœ์ˆ˜์— ๋”ฐ๋ผ 0-์ฃผ์†Œ ๋ช…๋ น, 1-์ฃผ์†Œ ๋ช…๋ น, 2-์ฃผ์†Œ ๋ช…๋ น, 3-์ฃผ์†Œ ๋ช…๋ น์œผ๋กœ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋‹ค.

0-์ฃผ์†Œ ๋ช…๋ น : ๋‹จํ•ญ ์—ฐ์‚ฐ. ex. PUSH, POP

1-์ฃผ์†Œ ๋ช…๋ น : ๋ˆ„์‚ฐ๊ธฐ(Accumulator)๋ฅผ ์ด์šฉํ•˜์—ฌ ์—ฐ์‚ฐ ์ˆ˜ํ–‰

2-์ฃผ์†Œ ๋ช…๋ น : ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ์—ฐ์‚ฐ์˜ ํ˜•ํƒœ. ์—ฐ์‚ฐ ํ›„ ์ž…๋ ฅ ์ž๋ฃŒ์˜ ๊ฐ’์ด ๋ณ€ํ™”ํ•œ๋‹ค.

  (๊ฒฐ๊ณผ๊ฐ’ ์ €์žฅ๊ณผ ์ž…๋ ฅ ์ž๋ฃŒ๋ฅผ ์œ„ํ•œ ๋‘ operand)

3-์ฃผ์†Œ ๋ช…๋ น : ์—ฐ์‚ฐ ํ›„ ์ž…๋ ฅ ์ž๋ฃŒ์˜ ๊ฐ’์ด ๋ณด์กด๋œ๋‹ค. ๋ช…๋ น์–ด์˜ ์ˆ˜ํ–‰ ์‹œ๊ฐ„์ด ๊ฐ€์žฅ ๊ธธ์ง€๋งŒ ํ”„๋กœ๊ทธ๋žจ์˜ ๊ธธ์ด๋Š” ๊ฐ€์žฅ ์งง๋‹ค.

  (ํ•œ operand ๋Š” ๊ฒฐ๊ณผ๊ฐ’ ์ €์žฅ, ๋‚˜๋จธ์ง€ ๋‘ operand ๋Š” ์ž…๋ ฅ ์ž๋ฃŒ)

 

 

2 ๋ช…๋ น์–ด

 

๋ช…๋ น์–ด ์ˆ˜ํ–‰ ๋‚ด์šฉ ๋ช…๋ น์–ด ์ˆ˜ํ–‰ ๋‚ด์šฉ
MOV ๊ฐ’์„ ๋„ฃ๋Š” ์—ญํ•  (๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋จ)
(๋ฐ์ดํ„ฐ ์ด๋™)
LEA ์ฃผ์†Œ๋ฅผ ๋„ฃ๋Š” ์—ญํ• 
(๋ฉ”๋ชจ๋ฆฌ์˜ ์˜คํ”„์…‹๊ฐ’์„ ๋ ˆ์ง€์Šคํ„ฐ๋กœ ๋กœ๋“œ)
Load Effective Address to Register
PUSH Stack ์— ๋„ฃ๊ธฐ POP Stack ์—์„œ ๊ฐ€์ ธ์˜ค๊ธฐ
ADD (CARRY ๋ฅผ ํฌํ•จํ•˜์ง€ ์•Š๊ณ ) ๋”ํ•˜๊ธฐ SUB (CARRY ๋ฅผ ํฌํ•จํ•˜์ง€ ์•Š๊ณ ) ๋นผ๊ธฐ
MUL ๊ณฑํ•˜๊ธฐ DIV ๋‚˜๋ˆ„๊ธฐ
INC Operand ๋‚ด์šฉ์„ 1 ์ฆ๊ฐ€ DEC Operand ๋‚ด์šฉ์„ 1 ๊ฐ์†Œ
AND ๋…ผ๋ฆฌ AND ๊ฒŒ์ดํŠธ OR ๋…ผ๋ฆฌ OR ๊ฒŒ์ดํŠธ
XOR ๋ฐฐํƒ€ ๋…ผ๋ฆฌ ํ•ฉ (Exclusive OR) NOT ๋น„ํŠธ ๋ฐ˜์ „ (1์˜ ๋ณด์ˆ˜)
CMP ๋‘ Operand ๋น„๊ต
Compare
(๋‘ ๊ฐ’์„ ๋นผ์„œ ๊ฐ™์œผ๋ฉด 0 -> ZF ๊ฐ€ 1)
JMP Operand ์œ„์น˜๋กœ ์ ํ”„ (JUMP)
(์ฃผ์†Œ๋ฅผ ์ง์ ‘ ์ง€์ •ํ•  ์ˆ˜๋„, ๋ ˆ์ง€์Šคํ„ฐ๋ฅผ ์ค„ ์ˆ˜๋„ ์žˆ์Œ)
JE ๋น„๊ต ๊ฒฐ๊ณผ๊ฐ€ ๊ฐ™์œผ๋ฉด ์ ํ”„ (๋ถ„๊ธฐ)
Jump on Equal
JNE ๋น„๊ต ๊ฒฐ๊ณผ๊ฐ€ ๋‹ค๋ฅด๋ฉด ์ ํ”„ (๋ถ„๊ธฐ)
Jump on Not Equal
ZF ๊ฐ€ 0 ์ด์–ด์•ผ JNE ์—์„œ์˜ ์ฃผ์†Œ๋กœ ๋„˜์–ด๊ฐ
NOP No OPeration
์•„๋ฌด ๋ช…๋ น๋„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๋Š” ์ฝ”๋“œ
NOP ๋ช…๋ น์–ด ์ž์ฒด๋Š” 1 byte ์˜ ํฌ๊ธฐ๋ฅผ ๊ฐ€์ง€๊ณ , ๋ช…๋ น์–ด ์‚ฌ์ด์˜ ๋นˆ๊ณต๊ฐ„์„ ์ฑ„์›Œ์ค€๋‹ค.
์“ฐ๋ ˆ๊ธฐ ๊ฐ’. ๊ณต๊ฐ„ ์ฑ„์šฐ๋Š” ~ like ์งˆ์†Œ
   
CALL ํ”„๋กœ์‹œ์ € ํ˜ธ์ถœ
(์ด ๋ช…๋ น์–ด๊ฐ€ ์‹คํ–‰๋˜๋ฉด ๋ณต๊ท€ ์ฃผ์†Œ๋ฅผ Stack ์— PUSH)
RET CALL ๋กœ (Stack ์— PUSH ๋œ ์ฃผ์†Œ๋กœ) ๋ณต๊ท€
Return from CALL

 

 

3. ์ฃผ์†Œ ์ง€์ • ๋ฐฉ์‹

- ๋ ˆ์ง€์Šคํ„ฐ ์ฃผ์†Œ ์ง€์ • (Immediate Addressing)

: ๋ ˆ์ง€์Šคํ„ฐ์˜ ์ฃผ์†Œ ๊ฐ’์„ ์ง์ ‘ ์ง€์ •

  ์ฒ˜๋ฆฌ ์†๋„๊ฐ€ ๊ฐ€์žฅ ๋น ๋ฅด๋‹ค. (โˆต ๋ ˆ์ง€์Šคํ„ฐ๊ฐ€ CPU ์•ˆ์— ์žˆ์œผ๋ฏ€๋กœ ๋‹ค๋ฅธ ๋ฉ”๋ชจ๋ฆฌ๋ž‘ ์ƒํ˜ธ ์ž‘์šฉํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค.)

ex. mov edx, eax

 

- ์ง์ ‘ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ ์ง€์ • (Direct Addressing)

: ๋ฉ”๋ชจ๋ฆฌ์˜ ์ฃผ์†Œ๋ฅผ ์ง์ ‘ ์ง€์ •ํ•˜๋Š” ๋ฐฉ์‹

  ์ฆ‰, ์ฃผ์†Œ ํ•„๋“œ์— ์œ ํšจ ์ฃผ์†Œ(=Operand ์˜ ์ฃผ์†Œ)๋ฅผ ์ง์ ‘ ์ €์žฅํ•œ๋‹ค.

 ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ์ฃผ์†Œ ์ง€์ • ๋ฐฉ์‹์ด๋‹ค.

  ํ•œ ๋ฒˆ์˜ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ๋งŒ ์žˆ์œผ๋ฉด ๋œ๋‹ค.

(์ฃผ๋กœ ํ”ผ์—ฐ์‚ฐ์ž ํ•˜๋‚˜๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ์œ„์น˜๋ฅผ ์ฐธ์กฐํ•˜๊ณ  ๋‹ค๋ฅธ ํ•˜๋‚˜๊ฐ€ ๋ ˆ์ง€์Šคํ„ฐ๋ฅผ ์ฐธ์กฐํ•œ๋‹ค.)

ex. mov eax, [8080h]

 

- ๋ ˆ์ง€์Šคํ„ฐ ๊ฐ„์ ‘ ์ฃผ์†Œ ์ง€์ • (Indirect Affressing)

: ๋ ˆ์ง€์Šคํ„ฐ์— ์ฃผ์†Œ๊ฐ’์„ ๋„ฃ์–ด์ฃผ๊ณ , ํ•ด๋‹น ์ฃผ์†Œ์˜ ๊ฐ’์„ ๋Œ€์ž…ํ•˜๋„๋ก ๋งŒ๋“  ๊ฒƒ์ด๋‹ค. (์‰ฝ๊ฒŒ ๋งํ•˜๋ฉด ํฌ์ธํ„ฐ)

  ์ฃผ์†Œ ํ•„๋“œ์— Operand ๊ฐ€ ์ €์žฅ๋œ ๊ธฐ์–ต์žฅ์น˜ ์ฃผ์†Œ๊ฐ’์„ ๊ฐ–๊ณ  ๋ ˆ์ง€์Šคํ„ฐ๋ฅผ ์ง€์ •ํ•˜๋Š” ๋ฐฉ์‹

  ์ฆ‰, ์ฃผ์†Œ ํ•„๋“œ์— ์œ ํšจ ์ฃผ์†Œ๊ฐ€ ์ €์žฅ๋˜์–ด ์žˆ๋Š” ๊ธฐ์–ต์žฅ์น˜ ์ฃผ์†Œ๋ฅผ ์ €์žฅํ•œ๋‹ค.

  ๋‘ ๋ฒˆ์˜ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ์ด ์žˆ์–ด์•ผ ํ•œ๋‹ค.

(์„ธ๊ทธ๋จผํŠธ(Seagment) : ์˜คํ”„์…‹(offset) ํ˜•์‹)

ex. DS:[BX]

 

- ์ธ๋ฑ์Šค ์ฃผ์†Œ ์ง€์ •

: ๋ ˆ์ง€์Šคํ„ฐ ๊ฐ„์ ‘ ์ง€์ • ๋ฐฉ์‹์— ๋ณ€์œ„๊ฐ€ ๋”ํ•ด์ง„ ๋ฐฉ์‹ (์‰ฝ๊ฒŒ ๋งํ•˜๋ฉด ๋ฐฐ์—ด)

ex. [BX + 20h]

 

- ๋ฒ ์ด์Šค ๋ ˆ์ง€์Šคํ„ฐ ์ฃผ์†Œ ์ง€์ •
: ์‹ค์ œ ์ฃผ์†Œ ์ƒ์„ฑ์„ ์œ„ํ•ด ๋ฒ ์ด์Šค ๋ ˆ์ง€์Šคํ„ฐ (BX/BP) ์™€ ์ธ๋ฑ์Šค ๋ ˆ์ง€์Šคํ„ฐ (DI/SI) ๋ฅผ ๊ฒฐํ•ฉ

์ฃผ๋กœ 2์ฐจ์› ๋ฐฐ์—ด์˜ ์ฃผ์†Œ ์ง€์ •์— ์‚ฌ์šฉํ•œ๋‹ค.

ex. [BX + SI]

 

- ๋ณ€์œ„๋ฅผ ๊ฐ–๋Š” ์ธ๋ฑ์Šค ์ฃผ์†Œ ์ง€์ •

: ์‹ค์ œ ์ฃผ์†Œ ์ƒ์„ฑ์„ ์œ„ํ•ด ๋ฒ ์ด์Šค ๋ ˆ์ง€์Šคํ„ฐ, ์ธ๋ฑ์Šค ๋ ˆ์ง€์Šคํ„ฐ, ๋ณ€์œ„ ๊ฒฐํ•ฉ

ex. [BX + SI + 20h]

 

๋ ˆ์ง€์Šคํ„ฐ ๊ฐ„์ ‘ ์ฃผ์†Œ ์ง€์ •, ์ธ๋ฑ์Šค ์ฃผ์†Œ ์ง€์ •, ๋ฒ ์ด์Šค ,, ๋“ฑ๋“ฑ ๋น„์Šทํ•ด ๋ณด์ด์ง€๋งŒ ์ฐจ์ด๋Š” ์šฉ๋„ !!!

์šฉ๋„์—์„œ ์ฐจ์ด๋ฅผ ๋ณด์ธ๋‹ค.

 

 

4. call

- ์‹œ์Šคํ…œ ์ฝœ (System call) ์ด๋ž€

: ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์—์„œ ์šด์˜ ์ฒด์ œ์—๊ฒŒ ์–ด๋– ํ•œ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•ด๋‹ฌ๋ผ๊ณ  ์š”์ฒญํ•˜๋Š” ํ•˜๋‚˜์˜ ์ˆ˜๋‹จ

User mode ์—์„œ ์šด์˜ ์ฒด์ œ(kernel mode) ์˜ ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์“ฐ๋Š” ๊ฒƒ์ด๋‹ค.

(์‚ฌ์šฉ์ž๊ฐ€ ๋งˆ๊ตฌ ์ ‘๊ทผํ•˜๋ฉด ๊ณค๋ž€ํ•œ ๊ทธ๋Ÿฐ ๊ฒƒ๋“ค...)

 

์ข…๋ฅ˜: ํ”„๋กœ์„ธ์Šค ์ œ์–ด (Porcess Control), ํŒŒ์ผ ์กฐ์ž‘(File Manipulation), ์žฅ์น˜ ๊ด€๋ฆฌ (Device Management), ์ •๋ณด ์œ ์ง€ (Information Maintenance), ํ†ต์‹  (Communication)

 

ex. open(), read(), write() ...

์ฃผ์˜ ! printf() ๋Š” system call ์€ ์•„๋‹ˆ๊ณ  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ !!!! (stdio.h)

 

 

5. ํ•จ์ˆ˜

- ํ•จ์ˆ˜ ํ”„๋กค๋กœ๊ทธ

๋ฒ ์ด์Šค ํฌ์ธํ„ฐ (EBP) ๋ฅผ Stack ์— ์ €์žฅํ•˜๊ณ  ํ˜„์žฌ ์Šคํƒ ํฌ์ธํ„ฐ (ESP) ๋ฅผ ๋ฒ ์ด์Šค ํฌ์ธํ„ฐ์— ์ €์žฅํ•œ๋‹ค.

ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ (CALL) ๋  ๋•Œ, ์Šคํƒ ํ”„๋ ˆ์ž„(Stack Frame) ์„ ๊ตฌ์„ฑํ•ด์ฃผ๋Š” ์ž‘์—…์„ ์ผ์ปซ๋Š”๋‹ค.

 

push eip

push ebp (SFP)

mov ebp, esp

 

- ํ•จ์ˆ˜ ์—ํ•„๋กœ๊ทธ 

ํ˜„์žฌ ์Šคํƒ ํฌ์ธํ„ฐ๋ฅผ ๋ฒ ์ด์Šค ํฌ์ธํ„ฐ๋กœ ๋ฐ”๊พผ ํ›„ RET ์„ ํ†ตํ•ด ๋‹ค์Œ ์ฃผ์†Œ๋กœ ์ ํ”„ํ•œ๋‹ค.

ํ•จ์ˆ˜์˜ ์ˆ˜ํ–‰ ๊ณผ์ •์„ ํ†ตํ•ด ESP ๊ฐ€ ๋ณ€๊ฒฝ๋˜์—ˆ์„ ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด ํ›„์— EBP ์™€ ๋™๊ธฐํ™”ํ•ด์ฃผ๋Š” ์ž‘์—…์ด๋‹ค.

 

mov esp, ebp (leave)

pop ebp (leave)

ret

 

(ret ::

pop eip

jmp eop)

 

(* 64 bit ํ™˜๊ฒฝ์—์„œ๋Š” esp / ebp ๊ฐ€ ํ™•์žฅ๋˜์–ด rsp / rbp ๊ฐ€ ๋œ๋‹ค.)

 

๋”ฐ๋ผ์„œ ํ•จ์ˆ˜ ํ˜ธ์ถœ์˜ ์ „์ฒด ๊ณผ์ •์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

1. ํ•จ์ˆ˜๊ฐ€ ์‚ฌ์šฉํ•  Parameter ์„ Stack ์— ๋„ฃ๊ณ  ํ•จ์ˆ˜์˜ ์‹œ์ž‘ ์ง€์ ์œผ๋กœ ์ ํ”„  << CALL

2. ํ•จ์ˆ˜ ๋‚ด์—์„œ ์‚ฌ์šฉํ•  ์Šคํƒ ํ”„๋ ˆ์ž„ ์„ค์ •  << ํ”„๋กค๋กœ๊ทธ

3. ํ•จ์ˆ˜ ์ˆ˜ํ–‰

4. ์ฒ˜์Œ ์ˆ˜ํ–‰ํ•œ ์ง€์ ์œผ๋กœ ๋Œ์•„๊ฐ€๊ธฐ ์œ„ํ•ด ์Šคํƒ์„ ๋ณต์›  << ์—ํ•„๋กœ๊ทธ

 

์ฆ‰, ํ”„๋กค๋กœ๊ทธ์™€ ์—ํ•„๋กœ๊ทธ๋Š” ์Šคํƒ ํ”„๋ ˆ์ž„์„ ์ƒ์„ฑํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋ฉฐ ๋งˆ์ง€๋ง‰์— ๋™๊ธฐํ™”ํ•ด์ฃผ๋Š” ์ž‘์—…!

 

 

* Stack Frame ์Šคํƒ ํ”„๋ ˆ์ž„

:  (ESP ๊ฐ€ ์•„๋‹Œ) EBP ๋ ˆ์ง€์Šคํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์Šคํƒ ๋‚ด์˜ ๋กœ์ปฌ ๋ณ€์ˆ˜, ํŒŒ๋ผ๋ฏธํ„ฐ, ๋ณต๊ท€ ์ฃผ์†Œ์— ์ ‘๊ทผํ•˜๋Š” ๊ธฐ๋ฒ•

  ์ฆ‰, ๊ฐ ํ•จ์ˆ˜๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ์Šคํƒ์˜ ์˜์—ญ! 

* EIP

EIP (Extended Instruction Pointer) : ํ™•์žฅ๋œ ๋ช…๋ น ์ง€์‹œ์ž.

๋‹ค์Œ์— CPU ๊ฐ€ ํ•ด์•ผ ํ•  ์ผ(๋ฉ”๋ชจ๋ฆฌ์˜, CODE ์˜ ์ฃผ์†Œ)์„ ๊ธฐ์–ต