System-hacking/๐Ÿ“–

[ASC ์Šคํ„ฐ๋””] 4์ฃผ์ฐจ - ๋ ˆ์ง€์Šคํ„ฐ, ์–ด์…ˆ๋ธ”๋ฆฌ, ์—ฐ์Šต๋ฌธ์ œ, GDB ์‚ฌ์šฉ๋ฒ•

estherseo 2022. 6. 27. 18:45

 

๐Ÿ‘‰ ์ง€๋‚œ ์ฐจ์‹œ

2022.06.19 - [System-hacking/๐Ÿ“–] - [ASC ์Šคํ„ฐ๋””] 3์ฃผ์ฐจ - ๊ธฐ์ดˆ์ด๋ก , ํ™˜๊ฒฝ์„ธํŒ…, ๋ฉ”๋ชจ๋ฆฌ๊ตฌ์กฐ

 

 

( x86-64 ์•„ํ‚คํ…์ฒ˜ ๊ธฐ๋ฐ˜ )

1. ๋ ˆ์ง€์Šคํ„ฐ(Register)

CPU๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ฒŒ ์ €์žฅํ•˜๊ณ  ์‚ฌ์šฉํ•  ๋•Œ ์ด์šฉํ•˜๋Š” ๋ณด๊ด€์†Œ์ด๋‹ค.

๋ฉ”๋ชจ๋ฆฌ๋‚˜ ๋ณด์กฐ ๊ธฐ์–ต ์žฅ์น˜๋ณด๋‹ค ๋น ๋ฅด๋‹ค.

 

1.1.  32๋น„ํŠธ ๋ ˆ์ง€์Šคํ„ฐ โœจ

  • E๋กœ ์‹œ์ž‘ํ•œ๋‹ค.

https://www.tutorialspoint.com/assembly_programming/assembly_registers.htm

ex)  32bit EAX  >  16bit AX  >  8bit AH + 8bit AL

 

- ๋ฐ์ดํ„ฐ ๋ ˆ์ง€์Šคํ„ฐ

(1) EAX(Accumulator)

์—ฐ์‚ฐ ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅํ•˜๊ณ  ํ•จ์ˆ˜ ๋ฐ˜ํ™˜ ๊ฐ’์„ ๋‹ด๋Š”๋‹ค.

(2) ECX(Counter)

์ฃผ๋กœ ์นด์šดํŒ…ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. ( for๋ฌธ์˜ i ๊ฐ™์ด )

(3) EBX(Base)

์ฃผ๋กœ ์ฃผ์†Œ์˜ ๊ธฐ๋ณธ ๊ฐ’์„ ์ €์žฅํ•œ๋‹ค.

(4) EDX(Data)

์ฃผ๋กœ ์—ฐ์‚ฐํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

 

- ์ธ๋ฑ์Šค ๋ ˆ์ง€์Šคํ„ฐ

(5) ESI(Source), EDI(Destination)

๊ฐ๊ฐ ์ถœ๋ฐœ์ง€์™€ ๋ชฉ์ ์ง€ ์ฃผ์†Œ๋ฅผ ์ €์žฅํ•œ๋‹ค. ( strcpy($ESI, $EDI); )

 

- ํฌ์ธํ„ฐ ๋ ˆ์ง€์Šคํ„ฐ

(6) EBP(Base Pointer)

ํ˜„์žฌ ํ•จ์ˆ˜ ์Šคํƒ ํ”„๋ ˆ์ž„์˜ ๋ฒ ์ด์Šค ์ฃผ์†Œ๋ฅผ ์ €์žฅํ•œ๋‹ค.

(7) ESP(Stack Pointer)

ํ˜„์žฌ ํ•จ์ˆ˜ ์Šคํƒ ํ”„๋ ˆ์ž„์˜ ์ตœ์ƒ๋‹จ ์ฃผ์†Œ๋ฅผ ์ €์žฅํ•œ๋‹ค.

(8) EIP(Instruction Pointer)

๋‹ค์Œ์— ์‹คํ–‰ํ•  ์–ด์…ˆ๋ธ”๋ฆฌ ๋ช…๋ น์˜ ์ฃผ์†Œ๋ฅผ ์ €์žฅํ•œ๋‹ค.

 

- ์ƒํƒœ ๋ ˆ์ง€์Šคํ„ฐ

OF : ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ ๋ฐœ์ƒ์‹œ 1๋กœ ์„ค์ •, ๊ณ„์‚ฐ ๊ฒฐ๊ณผ๊ฐ€ ํ”ผ์—ฐ์‚ฐ์ž์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ๋ฒ—์–ด๋‚˜๋ฉด 1, ๊ณ„์‚ฐ๊ฒฐ๊ณผ๊ฐ€ ๋ถ€ํ˜ธ๋น„ํŠธ๋ฅผ ์นจ๋ฒ”ํ•  ๋•Œ

SF : ์—ฐ์‚ฐ ๊ฒฐ๊ณผ๊ฐ€ ์Œ์ˆ˜[๋ถ€ํ˜ธ(์ตœ์ƒ์œ„) bit๊ฐ€ 1]๋ฉด 1์ด๋ฉด 1๋กœ ์•„๋‹ˆ๋ฉด 0์œผ๋กœ ์„ค์ •

ZF : ์—ฐ์‚ฐ ๊ฒฐ๊ณผ๊ฐ€ 0์ด๋ฉด 1๋กœ ์•„๋‹ˆ๋ฉด 0์œผ๋กœ ์„ค์ • ( if๋ฌธ ๋น„๊ต )

CF : 2์ง„์ˆ˜ ๋ง์…ˆ์—์„œ ์ž๋ฆฌ ์˜ฌ๋ฆผ์ด ๋ฐœ์ƒํ•˜๋ฉด 1๋กœ ์„ค์ •, ์—ฐ์‚ฐ ๋ช…๋ น์œผ๋กœ Carry(์ž๋ฆฌ ์˜ฌ๋ฆผ)์ด๋‚˜ Borrow(๋ถ€ํ˜ธ ๋น„ํŠธ ์•ž ๋น„ํŠธ์— ๋ณ€๊ฒฝ์ด ์ƒ๊น€)๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ 1๋กœ ์„ค์ •

PF : ํ•˜์œ„ 8๋น„ํŠธ์—์„œ 1์˜ ๊ฐœ์ˆ˜๊ฐ€ ์ง์ˆ˜๋ฉด 1

AF : ํ•˜์œ„ 4๋น„ํŠธ์—์„œ ์˜ฌ๋ฆผ ๋นŒ๋ฆผ ๋ฐœ์ƒ์‹œ 1 

 

 

( ๋ณธ๋ž˜ ์šฉ๋„์™€ ๋‹ค๋ฅด๊ฒŒ ์‚ฌ์šฉํ•ด๋„ ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š๋Š”๋‹ค. )

 

1.2.  64๋น„ํŠธ ๋ ˆ์ง€์Šคํ„ฐ 

  • R๋กœ ์‹œ์ž‘ํ•œ๋‹ค.
  • 32๋น„ํŠธ์™€ ๋ ˆ์ง€์Šคํ„ฐ ์—ญํ• ์€ ๋น„์Šทํ•˜์ง€๋งŒ ํ•จ์ˆ˜์˜ ์ธ์ž๋ฅผ ๋‹ค๋ฃจ๋Š” ๋ฐฉ๋ฒ•์ด ๋‹ค๋ฅด๋‹ค.
  • 32๋น„ํŠธ๋Š” ๋ฉ”๋ชจ๋ฆฌ์— ์ธ์ž๋ฅผ ์Šคํƒ์— pushํ•ด์„œ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค.    func(1,2,3);  => push 1 push 2 push 3 call 
  • 64๋น„ํŠธ๋Š” ๋ ˆ์ง€์Šคํ„ฐ์— ์ธ์ž์˜ ๊ฐ’์„ ๋‹ด์•„ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค.   RDI, RSI, RDX, RCX, r8, r9  ... ์ˆœ์„œ๋Œ€๋กœ ์ธ์ž๋ฅผ ๋‹ด๋Š”๋‹ค.

 

(๋ฆฌํ‹€์—”๋””์•ˆ vs ๋น…์—”๋””์•ˆ)

int x = 0x12345678

์ฃผ์†Œ์ž‘ > ์ฃผ์†Œํฐ

 

Little : 0x78 > 0x56 > 0x34 > 0x12

Big: 0x12 > 0x34 > 0x56 > 0x78

 

2. ์–ด์…ˆ๋ธ”๋ฆฌ ์–ธ์–ด(Assembly)

  • ์–ด์…ˆ๋ธ”๋Ÿฌ : ์–ด์…ˆ๋ธ”๋ฆฌ ์–ธ์–ด => ๊ธฐ๊ณ„์–ด
  • ์—ญ์–ด์…ˆ๋ธ”๋Ÿฌ : ๊ธฐ๊ณ„์–ด => ์–ด์…ˆ๋ธ”๋ฆฌ ์–ธ์–ด
  • ์ •์ ๋ถ„์„์€ ๋ฐ”์ด๋„ˆ๋ฆฌ์˜ ํ”„๋กœ๊ทธ๋žจ ์ฝ”๋“œ๋ฅผ ์ฝ์–ด์„œ ๋™์ž‘์„ ๋ถ„์„ํ•˜๋Š” ๋ฐฉ๋ฒ• ( IDA, GDB ์ด์šฉ )
  • x86, x86-64 ์–ด์…ˆ์—๋Š” AT&T, Intel ํ‘œ๊ธฐ๋ฒ•์ด ์กด์žฌํ•จex)  mov $5, %eax; mov eax, 5; > Intel ํ‘œ๊ธฐ๋ฒ•์ด ์ข€ ๋” ์ฝ๊ธฐ ํŽธํ•จ

< x64 ์–ด์…ˆ๋ธ”๋ฆฌ ์–ธ์–ด ๊ตฌ์กฐ >

 mov        eax,  3 

 ๋™์‚ฌ   |    ํ”ผ์—ฐ์‚ฐ์ž

Opcode  |  Operand1, Operand2

 

< ๋ช…๋ น์–ด >

๋ช…๋ น ์ฝ”๋“œ  
๋ฐ์ดํ„ฐ ์ด๋™(Data Transfer) mov, lea
์‚ฐ์ˆ  ์—ฐ์‚ฐ(Arithmetic) inc, dec, add, sub
๋…ผ๋ฆฌ ์—ฐ์‚ฐ(Logical) and, or, xor, not
๋น„๊ต(Comparison) cmp, test
๋ถ„๊ธฐ(Branch) jmp, jz, jnz, je, jne,  jg, jge, jl, jle
์Šคํƒ(Stack) push($esp-=4), pop($esp+=4)
ํ”„๋กœ์‹œ์ ธ(Procedure) call, ret, leave
์‹œ์Šคํ…œ ์ฝœ(System call) syscall
  • MOV [Destination] [Source]

Source์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ Destination์œผ๋กœ ์˜ฎ๊น€

๋ฉ”๋ชจ๋ฆฌ๋‚˜ ๋ ˆ์ง€์Šคํ„ฐ์—์„œ ๋ฐ์ดํ„ฐ์˜ ์ด๋™์ด๋‚˜ ๋Œ€์ž… ์‹œ

  • LEA [Destination] [Source]

Source์— ์ง€์ •๋œ ์ฃผ์†Œ๋ฅผ Destination์œผ๋กœ ๋กœ๋“œ

์ง€์—ญ๋ณ€์ˆ˜๋‚˜ ๋งค๊ฐœ๋ณ€์ˆ˜์— & ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ

  • ADD OPR1 OPR2

OPR2์˜ ๊ฐ’์— OPR1 ๊ฐ’์„ ๋”ํ•ด OPR1์— ์ €์žฅ

ex) add eax, ebx; eax = eax + ebx

  • SUB OPR1 OPR2

OPR1์˜ ๊ฐ’์— OPR2 ๊ฐ’์„ ๋นผ๊ณ  OPR1์— ์ €์žฅ

ex) sub eax, ebx; eax = eax - ebx

  • CMP VAL1 VAL2

VAL1๊ณผ VAL2์˜ ๊ฐ’์„ ๋น„๊ต

ex) 

VAL1 < VAL2   :  ZF=0, CF=1

VAL1==VAL2   :  ZF=1, CF=0

VAL1 > VAL2   :  ZF=0, CF=0

  • JMP ADDR

ํ”„๋กœ๊ทธ๋žจ์˜ ํ๋ฆ„์„ ๋ฐ”๊ฟ€ ๋•Œ ์‚ฌ์šฉ

$RIP ๋ ˆ์ง€์Šคํ„ฐ์˜ ๊ฐ’์ด ADDR ์ฃผ์†Œ๋กœ ๋ฐ”๋€œ

  • CALL TARGET

ํ•จ์ˆ˜ ํ˜ธ์ถœํ•ด ์‹คํ–‰ ํ๋ฆ„ ๋ณ€๊ฒฝJMP ๋ช…๋ น์–ด์™€ ๋‹ค๋ฅด๊ฒŒ ๋‹ค์‹œ ๋ฆฌํ„ด๋  ์ˆ˜ ์žˆ๋„๋ก Return address๋ฅผ ์Šคํƒ์— ์ €์žฅ๋‹ค์Œ ์‹คํ–‰ํ•  ๋ช…๋ น์–ด์˜ ์ฃผ์†Œ๋ฅผ ์Šคํƒ์— ๋„ฃ์Œ

 

  • Data Type

BYTE : 1๋ฐ”์ดํŠธ(8bit) ๋ถ€ํ˜ธ ์—†๋Š” ์ •์ˆ˜

WORD : 2๋ฐ”์ดํŠธ(16bit) ๋ถ€ํ˜ธ ์—†๋Š” ์ •์ˆ˜

DWORD : 4๋ฐ”์ดํŠธ(32bit) ๋ถ€ํ˜ธ ์—†๋Š” ์ •์ˆ˜

QWORD : 8๋ฐ”์ดํŠธ(64bit) ๋ถ€ํ˜ธ ์—†๋Š” ์ •์ˆ˜

๋ถ€ํ˜ธ ์žˆ๋Š” ์ •์ˆ˜๋Š” ์•ž์— S๋ฅผ ๋ถ™์ธ๋‹ค.

 

TYPE PTR[ADDR] : ADDR์„ TYPEํ˜• ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ๋กœ ํ˜• ๋ณ€ํ™˜

๋ฉ”๋ชจ๋ฆฌ ํ”ผ์—ฐ์‚ฐ์ž  
QWORD PTR [0x8048000] 0x8048000์˜ ๋ฐ์ดํ„ฐ๋ฅผ 8byte๋งŒํผ ์ฐธ์กฐ
DWORD PTR [esi] $esi ํฌ์ธํ„ฐ ์ฃผ์†Œ ๊ฐ’์„ 4byte๋งŒํผ ์ฐธ์กฐ
WORD PTR [rax] $rax๊ฐ€ ๊ฐ€๋ฅดํ‚ค๋Š” ์ฃผ์†Œ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ 2๋ฐ”์ดํŠธ๋งŒํผ ์ฐธ์กฐ
MOV rax, QWORD PTR[rsi] $rsi ํฌ์ธํ„ฐ ์ฃผ์†Œ ๊ฐ’์„ $rax์— ๋Œ€์ž…
ex) esp=0x12345678, *esp=100
MOV eax, DWORD PTR[esp]; $eax=100
LEA eax, DWORD PTR[esp]; $eax=0x12345678

 

3. ์—ฐ์Šต๋ฌธ์ œ

 

*esi = 0x12345678, eax = 0x87654321์ผ๋•Œ mov eax, DWORD PTR[esi]; $eax์˜ ๊ฐ’์€?

*esi = 0x12345678, eax = 0x87654321์ผ๋•Œ mov ax, WORD PTR[esi]; $eax์˜ ๊ฐ’์€?

*esi = 0x12345678, eax = 0x87654321์ผ๋•Œ mov ah, BYTE PTR[esi]; $eax์˜ ๊ฐ’์€?

MOV AL, 100; ADD AL, 100; CMP AX, 200; ๋ช…๋ น์„ ์ˆ˜ํ–‰ ํ›„  ์ƒํƒœ ๋ ˆ์ง€์Šคํ„ฐ์˜ ๊ฒฐ๊ณผ๋Š”?

 

( ํ’€์ด )

 

4. GDB ์‚ฌ์šฉ๋ฒ•

  • ๋””๋ฒ„๊น…(debugging)์ด๋ž€ ์ปดํ“จํ„ฐ ํ”„๋กœ๊ทธ๋žจ ๊ฐœ๋ฐœ ์ค‘์— ๋ฐœ์ƒํ•˜๋Š” ์‹œ์Šคํ…œ์˜ ๋…ผ๋ฆฌ์  ์˜ค๋ฅ˜๋‚˜ ๋น„์ •์ƒ์  ์—ฐ์‚ฐ์„ ์ฐพ์•„๋‚ด๊ณ  ๊ทธ ์›์ธ์„ ๋ฐํžˆ๊ณ  ์ˆ˜์ •ํ•˜๋Š” ์ž‘์—… ๊ณผ์ •์ด๋‹ค.
  • ๋””๋ฒ„๊ฑฐ๋ž€ ๋Œ€์ƒ ํ”„๋กœ๊ทธ๋žจ์„ ํ…Œ์ŠคํŠธํ•˜๊ณ  Debugํ•˜๋Š”๋ฐ ์“ฐ์ด๋Š” ๋„๊ตฌ(ํ”„๋กœ๊ทธ๋žจ)

ํŒŒ์ผ ์‹คํ–‰

: gdb -q "ํŒŒ์ผ๋ช…"

 

ํ•จ์ˆ˜ ๋””์Šค์–ด์…ˆ๋ธ”

: disassemble main ( mainํ•จ์ˆ˜์˜ ๊ธฐ๊ณ„์–ด๋ฅผ ์–ด์…ˆ๋ธ”๋ฆฌ์–ด๋กœ ๋ฐ”๊พผ๋‹ค. )

AT&T

AT&T -> intel

: set disassembly-flavor intel

intel

๋ธŒ๋ ˆ์ดํฌ ํฌ์ธํŠธ ๊ฑธ๊ธฐ

: b*main ( ์‹ฌ๋ณผ์ด ์žˆ์„ ๋•Œ )

: b*0x04005bd ( ํŠน์ • ์ฃผ์†Œ ๋ธŒ๋ ˆ์ดํฌ ํฌ์ธํŠธ ๊ฑธ๊ธฐ )

๋ธŒ๋ ˆ์ดํฌ ํฌ์ธํŠธ ์‚ญ์ œ

: delete

: delete "๋ฒˆํ˜ธ"

์‹คํ–‰ํ•˜๊ธฐ

: r

: r arg1 arg2 ... ( ์ธ์ž๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ) 

: continue  ( ๋‹ค์Œ ๋ธŒ๋ ˆ์ดํฌ ํฌ์ธํŠธ๊นŒ์ง€ ์‹คํ–‰ )

: ni                (ํ•œ ์Šคํ…์”ฉ ์‹คํ–‰ step over)

: si                 ( step into ) ํ•จ์ˆ˜๋ฅผ ๋งŒ๋‚˜๋ฉด ํ•จ์ˆ˜ ๋‚ด๋ถ€๋กœ ๋“ค์–ด๊ฐ

 

์ข…๋ฃŒํ•˜๊ธฐ

: q or k

 

์ •๋ณดํ™•์ธ

info reg  ( ๋ ˆ์ง€์Šคํ„ฐ ์ •๋ณด ํ™•์ธ )

: info break ( ๋ธŒ๋ ˆ์ดํฌ ํฌ์ธํŠธ ๊ฑด ์œ„์น˜ ํ™•์ธ )

์‹คํ–‰์ค‘์ธ ํ”„๋กœ์„ธ์Šค gdb์— ๋ถ™์ด๋Š” ๋ฒ•

:  at

๊ธฐํƒ€ ๊ฟ€ํŒ

:  finish  ( ํ˜„์žฌ ํ•จ์ˆ˜ ์ข…๋ฃŒ )

: stack [์ˆซ์ž]  ( ์Šคํƒ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„ ๊ฐ’ ํ™•์ธ ๊ฐ€๋Šฅ )

: libc, pie, ld, heap, code, got

: vmmap  ( ๋ฉ”๋ชจ๋ฆฌ๋งต ํ™•์ธ )

: p [name], p [register]  ( printํ•ด์คŒ, ๋ ˆ์ง€์Šคํ„ฐ์—๋Š” $๋ฅผ ๋ถ™์—ฌ์„œ ์“ฐ๊ธฐ )

: bt  ( back trace, ์ด์ „์— ์‹คํ–‰๋œ ํ•จ์ˆ˜๋“ค ์ถ”์  )

: set [ํƒ€์ž…] [์ฃผ์†Œ]  ( ๊ฐ’์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ ํŠน์ • ์ฃผ์†Œ์— ๊ฐ’ ์ €์žฅ ๊ฐ€๋Šฅ )

: magic  ( ํ•จ์ˆ˜ ์˜คํ”„์…‹ ํ™•์ธ ๊ฐ€๋Šฅ )

 


์—ฐ์Šต๋ฌธ์ œ ํ’€์ด1 : gdb_test1

http://ctf.sung.pw/challenges

22๋ฒˆ์งธ ์ค„ scanf()์— ๋ธŒ๋ ˆ์ดํฌ ํฌ์ธํŠธ ๊ฑธ๊ณ  ์‹คํ–‰ํ•ด๋ณธ๋‹ค.

cmp๋กœ 0x31337๊ณผ ๊ฐ™์€์ง€ ๋น„๊ตํ•˜๊ณ  ์žˆ๋‹ค.

stage1()ํ•จ์ˆ˜
DWORD PTR [rbp-4] ๊ฐ’ ํ™•์ธ

์ž…๋ ฅ๊ฐ’์„ 0x31337๊ณผ ๋น„๊ตํ•˜์—ฌ ๊ฐ™์œผ๋ฉด return 1; ํ•ด์ฃผ๋ฏ€๋กœ ์ž…๋ ฅ๊ฐ’์œผ๋กœ 0x31337์„ ๋„ฃ๋Š”๋‹ค.

ํŒŒ์ด์ฌ์„ ์‚ฌ์šฉํ•ด์„œ 16์ง„์ˆ˜์—์„œ 10์ง„์ˆ˜๋กœ ๋ฐ”๊พผ๋‹ค.

 

์—ฐ์Šต๋ฌธ์ œ ํ’€์ด2 : gdb_test2

http://ctf.sung.pw/challenges

gdb_test2 ๋ฌธ์ œ

(ํ’€์ด๊ณผ์ •)

test eax, eax  :  ๋‘ eax๊ฐ€ ๊ฐ™์€์ง€ ๋น„๊ตํ•œ๋‹ค.

jne : ์ง์ „์— ๋น„๊ตํ•œ ๋‘ ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ ๊ฐ™์ง€ ์•Š์œผ๋ฉด ์ ํ”„

์ •๋‹ต์ด ์•„๋‹Œ ๊ฐ’์„ ์ž…๋ ฅํ–ˆ์„ ๋•Œ 40์œผ๋กœ ์ ํ”„ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ด์„œ eax,eax๊ฐ€ ๊ฐ™์ง€ ์•Š๋‚˜๋ณด๋‹ค. 

eax, eax๋ฅผ ๊ฐ™๊ฒŒ ๋งŒ๋“ค์–ด์ฃผ๋ฉด ๋œ๋‹ค. ==========> ์–ด๋–ป๊ฒŒ????

๋˜‘๊ฐ™์€ eax์ธ๋ฐ ์™œ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์–ด์„œ test eax, eax ์ด์ „ ์—ฐ์‚ฐ๋“ค์˜ ๊ฐ ๋ ˆ์ง€์Šคํ„ฐ ๊ฐ’๋“ค์„ ํ™•์ธํ•ด๋ณด๊ธฐ๋กœ ํ–ˆ๋‹ค.

๋จผ์ € eax ์ถœ๋ ฅ

rax, eax ๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ์ด ์•ˆ๋œ๋‹ค๊ณ  ํ•œ๋‹ค..!

esi

์˜ค ์ด๊ฒŒ key ๊ฐ’์ธ๊ฐ€๋ณด๋‹ค. 10์ง„์ˆ˜๋กœ ๋ฐ”๊ฟ”์„œ ํ…์ŠคํŠธ๋กœ ๋ณ€ํ™˜ํ•ด๋ดค๋”๋‹ˆ 'T'๋ผ๊ณ  ๋‚˜์˜จ๋‹ค.. ( ์™œ T๋งŒ ๋‚˜์˜ค์ง€ )

ํ— key๊ฐ’์ด ๋‚˜์™”๋‹ค.. x/s '๋ฉ”๋ชจ๋ฆฌ์ฃผ์†Œ' ๋Š” ๋ฌธ์ž์—ด์„ ํ™•์ธํ•˜๋Š” ๋ช…๋ น์–ด..! ๊ทธ๋Ÿฌ๊ณ  ๋ณด๋‹ˆ๊นŒ ๋ฉ”๋ชจ๋ฆฌ์ฃผ์†Œ๊ฐ€ ์•„๋‹ˆ๋ผ ์‹ค์ˆ˜๋กœ ๋ ˆ์ง€์Šคํ„ฐ ๋„ฃ์—ˆ๋Š”๋ฐ ์ •๋‹ต์ด ๋‚˜์™”๋„ค....์•„์ง ๋™์ž‘ ์›๋ฆฌ๋ฅผ ์ž˜ ๋ชจ๋ฅด๊ฒ ๋‹คใ… 

 

์Šคํ„ฐ๋””๋•Œ ์งˆ๋ฌธํ•˜๊ณ  ์ดํ•ดํ•ด์„œ ๋˜ ์ถ”๊ฐ€ํ•˜๊ฒ ๋‹ค..

 

 

โญ๊ณต๋ถ€ํ•  ๊ฒƒ๋“ค

1. ์ปดํ“จํ„ฐ ๊ตฌ์กฐ

2. ๋ ˆ์ง€์Šคํ„ฐ

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

4. 16์ง„๋ฒ•

5. ๋””๋ฒ„๊ฑฐ๋ž‘ ์นœํ•ด์ง€๊ธฐ

 


ASC ์‹œ์Šคํ…œํ•ดํ‚น ์Šคํ„ฐ๋””