Fascination
article thumbnail

x86 Assembly๐Ÿค–: Essential Part(1)


# ์„œ๋ก 

- ์ปดํ“จํ„ฐ ์†์—๋Š” ๋ณต์žกํ•œ ๋…ผ๋ฆฌ์  ์ธ๊ณผ๊ด€๊ณ„๊ฐ€ ์กด์žฌํ•˜๊ณ , ์—ฌ๋Ÿฌ ๊ฐœ์ฒด๊ฐ€ ์ƒํ˜ธ์ž‘์šฉํ•˜๋ฉฐ, ๊ทธ ์„ธ๊ณ„์—์„œ ํ†ต์šฉ๋˜๋Š” ๊ธฐ๊ณ„์–ด(Machine Code)๊ฐ€ ์žˆ์Œ

- ํ•ด์ปค๊ฐ€ ํ•˜๋Š” ์ผ์€ ๊ทธ ๊ฑฐ๋Œ€ํ•œ ์„ธ๊ณ„์˜ ํ—ˆ์ ์„ ๊ณต๊ฒฉํ•˜์—ฌ ์‹œ์Šคํ…œ์„ ์žฅ์•…ํ•˜๋Š” ๊ฒƒ

- ์‹œ์Šคํ…œ ํ•ด์ปค: ์ปดํ“จํ„ฐ์˜ ์–ธ์–ด๋กœ ์ž‘์„ฑ๋œ ์†Œํ”„ํŠธ์›จ์–ด์—์„œ ์ทจ์•ฝ์ ์„ ๋ฐœ๊ฒฌํ•ด์•ผ ํ•จ

- David Wheeler: EDSAC์„ ๊ฐœ๋ฐœํ•˜๋ฉด์„œ ์–ด์…ˆ๋ธ”๋ฆฌ ์–ธ์–ด(Assembly Language)์™€ ์–ด์…ˆ๋ธ”๋Ÿฌ(Assembler)๋ผ๋Š” ๊ฒƒ์„ ๊ณ ์•ˆ

- ์–ด์…ˆ๋ธ”๋Ÿฌ(Assembler): ์ผ์ข…์˜ ํ†ต์—ญ์‚ฌ, ๊ฐœ๋ฐœ์ž๋“ค์ด ์–ด์…ˆ๋ธ”๋ฆฌ์–ด๋กœ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด ์ปดํ“จํ„ฐ๊ฐ€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๊ณ„์–ด๋กœ ์ฝ”๋“œ๋ฅผ ์น˜ํ™˜

  > ์–ด์…ˆ๋ธ”๋ฆฌ์–ด๊ฐ€ ๊ธฐ๊ณ„์–ด๋ณด๋‹ค๋Š” ์ธ๊ฐ„์ด ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์› ์œผ๋ฏ€๋กœ, ๊ฐœ๋ฐœ์ž๋“ค์€ ๋”์šฑ ํŽธ๋ฆฌํ•˜๊ฒŒ ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ•  ์žˆ๊ฒŒ ๋จ

  > ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์—ญ๋ถ„์„ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์€ ์—ฌ๊ธฐ์— ์—ญ๋ฐ ํ•ญ์„ ๋”ํ•ด, ๊ธฐ๊ณ„์–ด๋ฅผ ์–ด์…ˆ๋ธ”๋ฆฌ ์–ธ์–ด๋กœ ๋ฒˆ์—ญํ•˜๋Š” ์—ญ์–ด์…ˆ๋ธ”๋Ÿฌ(Disassembler)๋ฅผ ๊ฐœ๋ฐœ

- ๊ธฐ๊ณ„์–ด๋กœ ๊ตฌ์„ฑ๋œ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์—ญ์–ด์…ˆ๋ธ”๋Ÿฌ์— ๋„ฃ์œผ๋ฉด, ์–ด์…ˆ๋ธ”๋ฆฌ ์ฝ”๋“œ๋กœ ๋ฒˆ์—ญ๋จ

  > ์ด๋กœ ์ธํ•ด ์†Œํ”„ํŠธ์›จ์–ด ๋ถ„์„๊ฐ€๋“ค์€ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๋ถ„์„ํ•˜๋ ค๊ณ  ๊ธฐ๊ณ„์–ด๋ฅผ ์ฝ์„ ํ•„์š”๊ฐ€ ์—†์–ด์กŒ์Œ

 

 

# ์–ด์…ˆ๋ธ”๋ฆฌ์–ด์™€ x86-64

1. ์–ด์…ˆ๋ธ”๋ฆฌ ์–ธ์–ด ๐Ÿค–

- ์–ด์…ˆ๋ธ”๋ฆฌ ์–ธ์–ด: ์ปดํ“จํ„ฐ์˜ ๊ธฐ๊ณ„์–ด์™€ ์น˜ํ™˜๋˜๋Š” ์–ธ์–ด

  > ์ด๋Š” ๊ธฐ๊ณ„์–ด๊ฐ€ ์—ฌ๋Ÿฌ ์ข…๋ฅ˜๋ผ๋ฉด ์–ด์…ˆ๋ธ”๋ฆฌ์–ด๋„ ์–ด๋ ค ์ข…๋ฅ˜์—ฌ์•ผ ํ•จ

- CPU์— ์‚ฌ์šฉ๋˜๋Š” ๋ช…๋ น์–ด ์ง‘ํ•ฉ๊ตฌ์กฐ(Instruction Set Architecture, ISA)๋Š” IA-32, x86-64, ARM, MIPS ๋“ฑ ์ข…๋ฅ˜๊ฐ€ ๋‹ค์–‘ํ•จ

 

2. x64 ์–ด์…ˆ๋ธ”๋ฆฌ ์–ธ์–ด

๊ธฐ๋ณธ ๊ตฌ์กฐ ๐Ÿงฑ

- x64 ์–ด์…ˆ๋ธ”๋ฆฌ ์–ธ์–ด๋Š” ๋™์‚ฌ์— ํ•ด๋‹นํ•˜๋Š” ๋ช…๋ น์–ด(Operation Code, Opcode)์™€ ๋ชฉ์ ์–ด์— ํ•ด๋‹นํ•˜๋Š” ํ”ผ์—ฐ์‚ฐ์ž(Operand)๋กœ ๊ตฌ์„ฑ

x86-64 ์–ด์…ˆ๋ธ”๋ฆฌ์–ด ๋ฌธ๋ฒ• ๊ตฌ์กฐ

 

3. ๋ช…๋ น์–ด ๐Ÿ”ซ

- ์ธํ…”์˜ x64์—๋Š” ๋งŽ์€ ๋ช…๋ น์–ด๊ฐ€ ์กด์žฌ

 

4. ํ”ผ์—ฐ์‚ฐ์ž ๐ŸŽฏ

- ํ”ผ์—ฐ์‚ฐ์ž์—๋Š” ์ด 3๊ฐ€์ง€ ์ข…๋ฅ˜๊ฐ€ ์žˆ์Œ

  • ์ƒ์ˆ˜(Immediate Value)
  • ๋ ˆ์ง€์Šคํ„ฐ(Register)
  • ๋ฉ”๋ชจ๋ฆฌ(Memory)

- ๋ฉ”๋ชจ๋ฆฌ ํ”ผ์—ฐ์‚ฐ์ž๋Š” []์œผ๋กœ ๋‘˜๋Ÿฌ์‹ธ์ธ ๊ฒƒ์œผ๋กœ ํ‘œํ˜„๋˜๋ฉฐ, ์•ž์— ํฌ๊ธฐ ์ง€์ •์ž(Size Directive) TYPE PTR์ด ์ถ”๊ฐ€๋  ์ˆ˜ ์žˆ์Œ

- ํƒ€์ž…์—๋Š” BYTE, WORD, DWORD, QWORD๊ฐ€ ์˜ฌ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ฐ๊ฐ 1๋ฐ”์ดํŠธ, 2๋ฐ”์ดํŠธ, 4๋ฐ”์ดํŠธ, 8๋ฐ”์ดํŠธ์˜ ํฌ๊ธฐ๋ฅผ ์ง€์ •

๐Ÿ‘‡ ๋ฉ”๋ชจ๋ฆฌ ํ”ผ์—ฐ์‚ฐ์ž์˜ ์˜ˆ

 

 

# x86-64 ์–ด์…ˆ๋ธ”๋ฆฌ ๋ช…๋ น์–ด

1. ๋ฐ์ดํ„ฐ ์ด๋™ ๐Ÿšš

- ๋ฐ์ดํ„ฐ ์ด๋™ ๋ช…๋ น์–ด๋Š” ์–ด๋–ค ๊ฐ’์„ ๋ ˆ์ง€์Šคํ„ฐ๋‚˜ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฎ๊ธฐ๋„๋ก ์ง€์‹œ

mov dst, src // src์— ๋“ค์–ด์žˆ๋Š” ๊ฐ’์„ dst์— ๋Œ€์ž…
mov QWORD PTR[rdi], rsi // rsi์˜ ๊ฐ’์„ rdi๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ฃผ์†Œ์— ๋Œ€์ž…
mov QWORD PRT[rdi+8*rcx], rsi // rsi์˜ ๊ฐ’์„ rdi+8*rcx๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ฃผ์†Œ์— ๋Œ€์ž…
lea dst, src // src์˜ ์œ ํšจ ์ฃผ์†Œ(Effective Address, EA)๋ฅผ dst์— ์ €์žฅ
lea rsi, [rbx+8*rcx] // rbx+8*rcx๋ฅผ rsi์— ๋Œ€์ž…

 

์˜ˆ์ œ ๐Ÿ“ ๋ฐ์ดํ„ฐ ์ด๋™

- ๋ ˆ์ง€์Šคํ„ฐ, ๋ฉ”๋ชจ๋ฆฌ ์ฝ”๋“œ๊ฐ€ ๋‹ค์Œ๊ณผ ๊ฐ™์„ ๋•Œ, ์•„๋ž˜์—์„œ ์ ์ ˆํ•œ ๊ฐ’์„ ์ฑ„์šฐ์‹œ์˜ค

- mov rax, [rbx+8] // rbx+8์œ„์น˜์— ์žˆ๋Š” ๊ฐ’์„ rax์— ๋Œ€์ž…

- lea rax, [rbx+8] // rbx+8์˜ ์œ ํšจ ์ฃผ์†Œ๋ฅผ rax์— ๋Œ€์ž…

 

2. ์‚ฐ์ˆ  ์—ฐ์‚ฐ โŒ

- ์‚ฐ์ˆ  ์—ฐ์‚ฐ ๋ช…๋ น์–ด๋Š” ๋ง์…ˆ, ๋บ„์…ˆ, ๊ณฑ์…ˆ, ๋‚˜๋ˆ—์…ˆ ์—ฐ์‚ฐ์„ ์ง€์‹œ

add dst, src // dst์— src์˜ ๊ฐ’์„ ๋”ํ•จ
add eax, 3 // eax += 3
add ax, WORD PTR[rdi] // ax += *(WORD *)rdi
sub dst, src // dst์—์„œ src์˜ ๊ฐ’์„ ๋บŒ
sub eax, 3 // eax -= 3
sub ax, WORD PTR[rdi] // ax -= *(WORD *)rdi
inc op // op์˜ ๊ฐ’์„ 1 ์ฆ๊ฐ€์‹œํ‚ด
inc eax // eax += 1
dec op // op์˜ ๊ฐ’์„ 1 ๊ฐ์†Œ์‹œํ‚ด
dec eax // eax -= 1

 

์˜ˆ์ œ ๐Ÿ“ ๋ง์…ˆ๊ณผ ๋บ„์…ˆ

- ๋ ˆ์ง€์Šคํ„ฐ, ๋ฉ”๋ชจ๋ฆฌ ๋ฐ ์ฝ”๋“œ๊ฐ€ ๋‹ค์Œ๊ณผ ๊ฐ™์„ ๋•Œ, ์•„๋ž˜์—์„œ ์ ์ ˆํ•œ ๊ฐ’์„ ์ฑ„์šฐ์‹œ์˜ค

 

3. ๋…ผ๋ฆฌ ์—ฐ์‚ฐ ๐Ÿค” - and & or

- ๋…ผ๋ฆฌ ์—ฐ์‚ฐ ๋ช…๋ น์–ด์˜ ์—ฐ์‚ฐ์€ ๋น„ํŠธ ๋‹จ์œ„๋กœ ์ด๋ฃจ์–ด ์ง

and dst, src // dst์™€ src์˜ ๋น„ํŠธ๊ฐ€ ๋ชจ๋‘ 1์ด๋ฉด 1, ์•„๋‹ˆ๋ฉด 0

 

or dst, src // dst์™€ src์˜ ๋น„ํŠธ ์ค‘ ํ•˜๋‚˜๋ผ๋„ 1์ด๋ฉด 1, ์•„๋‹ˆ๋ฉด 0

 

 

์˜ˆ์ œ ๐Ÿ“ ๋…ผ๋ฆฌ ์—ฐ์‚ฐ - and, or

- ๋ ˆ์ง€์Šคํ„ฐ, ๋ฉ”๋ชจ๋ฆฌ ๋ฐ ์ฝ”๋“œ๊ฐ€ ๋‹ค์Œ๊ณผ ๊ฐ™์„ ๋•Œ, ์•„๋ž˜์—์„œ ์ ์ ˆํ•œ ๊ฐ’์„ ์ฑ„์šฐ์‹œ์˜ค

- f: 1111, 0: 0000์ž„์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌํ•˜๋ฉด ์‰ฝ๊ฒŒ ๊ตฌํ•  ์ˆ˜ ์žˆ์Œ

- OR์—ฐ์‚ฐ ์‹œ์—๋Š” f์™€ 0์œผ๋กœ๋งŒ ์ด๋ฃจ์–ด์ง„ ๊ฐ’๊ณผ ์—ฐ์‚ฐ๋  ๋•Œ ํ•จ๊ป˜ ์—ฐ์‚ฐ๋˜์–ด์ง€๋Š” ๊ฐ’์ด ๊ทธ๋Œ€๋กœ ๋„์ถœ๋จ

- AND ์—ฐ์‚ฐ ์‹œ f์™€ ์—ฐ์‚ฐ๋˜๋Š” ๋ถ€๋ถ„์€ ๊ทธ๋Œ€๋กœ ๋„์ถœ๋˜๋ฉฐ 0๊ณผ ์—ฐ์‚ฐ๋˜๋Š” ๋ถ€๋ถ„์€ ์ „๋ถ€ 0์œผ๋กœ ๋ณ€๊ฒฝ๋จ

 

4. ๋…ผ๋ฆฌ ์—ฐ์‚ฐ ๐Ÿค” - xor & not

xor dst, src // dst์™€ src์˜ ๋น„ํŠธ๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅด๋ฉด 1, ๊ฐ™์œผ๋ฉด 0

 

not op // op์˜ ๋น„ํŠธ ์ „๋ถ€ ๋ฐ˜์ „

 

 

์˜ˆ์ œ ๐Ÿ“ ๋…ผ๋ฆฌ ์—ฐ์‚ฐ - xor, not

- ๋ ˆ์ง€์Šคํ„ฐ, ๋ฉ”๋ชจ๋ฆฌ ๋ฐ ์ฝ”๋“œ๊ฐ€ ๋‹ค์Œ๊ณผ ๊ฐ™์„ ๋•Œ, ์•„๋ž˜์—์„œ ์ ์ ˆํ•œ ๊ฐ’์„ ์ฑ„์šฐ์‹œ์˜ค

 

5. ๋น„๊ต โš–๏ธ

- ๋น„๊ต ์—ฐ์‚ฐ์ž๋Š” ๋‘ ํ”ผ์—ฐ์‚ฐ์ž์˜ ๊ฐ’์„ ๋น„๊ตํ•˜๊ณ , ํ”Œ๋ž˜๊ทธ๋ฅผ ์„ค์ •

cmp op1, op2 // op1๊ณผ op2๋ฅผ ๋น„๊ต

cmp๋Š” ๋‘ ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ๋นผ์„œ ๋Œ€์†Œ ๋น„๊ตํ•จ

์—ฐ์‚ฐ์˜ ๊ฒฐ๊ณผ๋Š” op1์— ๋Œ€์ž…ํ•˜์ง€ ์•Š์Œ

์˜ˆ๋ฅผ ๋“ค์–ด, ์„œ๋กœ ๊ฐ™์€ ๋‘ ์ˆ˜๋ฅผ ๋นผ๋ฉด ๊ฒฐ๊ณผ๊ฐ€ 0์ด ๋˜์–ด ZF ํ”Œ๋ž˜๊ทธ๊ฐ€ ์„ค์ •๋˜๋Š”๋ฐ,

์ดํ›„์— CPU๋Š” ์ด ํ”Œ๋ž˜๊ทธ๋ฅผ ๋ณด๊ณ  ๋‘ ๊ฐ’์ด ๊ฐ™์•˜๋Š”์ง€ ํŒ๋‹จํ•  ์ˆ˜ ์žˆ์Œ

test op1, op2 // op1๊ณผ op2๋ฅผ ๋น„๊ต

test๋Š” ๋‘ ํ”ผ์—ฐ์‚ฐ์ž์— AND ๋น„ํŠธ ์—ฐ์‚ฐ์„ ์ทจํ•จ

์—ฐ์‚ฐ์˜ ๊ฒฐ๊ณผ๋Š” op1์— ๋Œ€์ž…ํ•˜์ง€ ์•Š์Œ

์˜ˆ๋ฅผ ๋“ค์–ด, ์œ„์˜ ์‚ฌ์ง„์ฒ˜๋Ÿผ 0์ด ๋œ rax๋ฅผ op1๊ณผ op2๋กœ ์‚ผ์•„ test๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฉด,

๊ฒฐ๊ณผ๊ฐ€ 0์ด๋ฏ€๋กœ ZF ํ”Œ๋ž˜๊ทธ๊ฐ€ ์„ค์ •๋จ

์ดํ›„์— CPU๋Š” ์ด ํ”Œ๋ž˜๊ทธ๋ฅผ ๋ณด๊ณ  rax๊ฐ€ 0์ด์—ˆ๋Š”์ง€ ํŒ๋‹จํ•  ์ˆ˜ ์žˆ์Œ

→ ํ”Œ๋ž˜๊ทธ๋ฅผ ์„ค์ •ํ•˜๋Š” ์ ์—์„œ AND์™€ ์ฐจ์ด๊ฐ€ ์žˆ์Œ

 

6. ๋ถ„๊ธฐ ๐Ÿ”€

- ๋ถ„๊ธฐ๋Š” rip๋ฅผ ์ด๋™์‹œ์ผœ ์‹คํ–‰ ํ๋ฆ„์„ ๋ฐ”๊ฟˆ

- ๋ถ„๊ธฐ๋ฌธ์€ ์†Œ๊ฐœ๋˜๋Š” ๊ฒƒ ์™ธ์—๋„ ๊ต‰์žฅํžˆ ๋งŽ์€ ์ˆ˜๊ฐ€ ์กด์žฌํ•จ. ๊ทธ๋Ÿฌ๋‚˜ ๋ช‡ ๊ฐœ๋งŒ ์‚ดํŽด๋ณด๋ฉด ์ด๋ฆ„์„ ํ†ตํ•ด ์ง๊ด€์ ์œผ๋กœ ์˜๋ฏธ๋ฅผ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ์ด๋“ค์„ ์ „๋ถ€ ๋‹ค๋ฃจ๊ธฐ ๋ณด๋‹ค๋Š” ์•ž์œผ๋กœ ์‹ค์ œ ์ฝ”๋“œ๋ฅผ ๋ถ„์„ํ•˜๋ฉด์„œ ๊ฐ์„ ์ตํ˜€๋‚˜๊ฐˆ ์ˆ˜ ์žˆ๋„๋ก ํ•  ๊ฒƒ

jmp addr // addr๋กœ rip๋ฅผ ์ด๋™์‹œํ‚ด

 

je addr // ์ง์ „์— ๋น„๊ตํ•œ ๋‘ ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ ๊ฐ™์œผ๋ฉด ์ ํ”„ (jump if equal)

 

jg addr // ์ง์ „์— ๋น„๊ตํ•œ ๋‘ ์—ฐ์‚ฐ์ž ์ค‘ ์ „์ž๊ฐ€ ๋” ํฌ๋ฉด ์ ํ”„ (jump if greater)

 

 

 

# ๋งˆ์น˜๋ฉฐ

1. ๋ฐ์ดํ„ฐ ์ด๋™ ์—ฐ์‚ฐ์ž

  • mov dst, src // src์˜ ๊ฐ’์„ dst์— ๋Œ€์ž…
  • lea dst, src // src์˜ ์œ ํšจ ์ฃผ์†Œ๋ฅผ dst์— ๋Œ€์ž…

2. ์‚ฐ์ˆ  ์—ฐ์‚ฐ

  • and dst, src // src์˜ ๊ฐ’์„ dst์— ๋”ํ•จ
  • sub dst, src // src์˜ ๊ฐ’์„ dst์—์„œ ๋บŒ
  • inc op // op์˜ ๊ฐ’์„ 1 ๋”ํ•จ
  • dec op // op์˜ ๊ฐ’์„ 1 ๋บŒ

3. ๋…ผ๋ฆฌ ์—ฐ์‚ฐ

  • and dst, src // dst์™€ src๊ฐ€ ๋ชจ๋‘ 1์ด๋ฉด 1, ์•„๋‹ˆ๋ฉด 0
  • or dst, src // dst์™€ src ์ค‘ ํ•œ ์ชฝ์ด๋ผ๋„ 1์ด๋ฉด 1, ์•„๋‹ˆ๋ฉด 0
  • xor dst, src // dst์™€ src๊ฐ€ ๋‹ค๋ฅด๋ฉด 1, ๊ฐ™์œผ๋ฉด 0
  • not op // op์˜ ๋น„ํŠธ๋ฅผ ๋ชจ๋‘ ๋ฐ˜์ „

4. ๋น„๊ต

  • cmp op1, op2 // op1์—์„œ op2๋ฅผ ๋นผ๊ณ  ํ”Œ๋ž˜๊ทธ๋ฅผ ์„ค์ •
  • test op1, op2 // op1๊ณผ op2์—์„œ AND ์—ฐ์‚ฐ์„ ํ•˜๊ณ , ํ”Œ๋ž˜๊ทธ๋ฅผ ์„ค์ •

5. ๋ถ„๊ธฐ

  • jmp addr // addr๋กœ rip ์ด๋™
  • je addr // ์ง์ „ ๋น„๊ตํ•ด์„œ ๋‘ ํ”ผ์—ฐ์‚ฐ์ž์˜ ๊ฐ’์ด ๊ฐ™์„ ๊ฒฝ์šฐ addr๋กœ rip ์ด๋™
  • jg addr // ์ง์ „ ๋น„๊ตํ•ด์„œ ๋‘ ํ”ผ์—ฐ์‚ฐ์ž ์ค‘ ์ „์ž์˜ ๊ฐ’์ด ๋” ํด ๊ฒฝ์šฐ addr๋กœ rip ์ด๋™

 

 

# Quiz

- ํ’€์ด

1 mov dl, BYTE PTR[rsi+rcx] // BYTE PTR[rsi+rcx]์˜ ๊ฐ’์„ dl์— ๋Œ€์ž…
2 xor dl, 0x30 // dl์— ์žˆ๋Š” ๊ฐ’๊ณผ 0x30์„ xor ์—ฐ์‚ฐ. ์ฒซ๋ฒˆ์งธ  0x400000(0x67)๊ณผ 0x30์„ xor ์—ฐ์‚ฐํ•˜๋ฉด 0x57์ด๋ผ๋Š” ๊ฐ’์„ ์–ป๊ฒŒ ๋˜๊ณ  ์ด๋ฅผ ๋‹ค์‹œ dl์— ์ €์žฅํ•จ
3 mov BYTE PTR[rsi+rcx], dl // dl์˜ ๊ฐ’์„ BYTE PTR[rsi+rcx]์— ๋Œ€์ž…
4 inc rcx // rcx์˜ ๊ฐ’์„ 1 ์ฆ๊ฐ€์‹œํ‚ด
5 cmp rcx, 0x19 // rcx์˜ ๊ฐ’์„ 0x19์™€ ๋น„๊ต
6 jg end // ์ง์ „์— ๋น„๊ตํ•œ ๋‘ ์—ฐ์‚ฐ์ž ์ค‘ ์ „์ž๊ฐ€ ๋” ํฌ๋ฉด ํ”„๋กœ๊ทธ๋žจ์„ ์ข…๋ฃŒ(rcx๊ฐ€ 20์ด๋˜๋ฉด ํ”„๋กœ๊ทธ๋žจ ์ข…๋ฃŒ)
7 jmp 1 // rip๋ฅผ 1๋กœ ์ด๋™์‹œํ‚ด. ์ฆ‰, ์ฝ”๋“œ๋ฅผ ๋‹ค์‹œ 1๋ถ€ํ„ฐ ์‹คํ–‰

 

๋ณ€ํ™˜ ๊ฒฐ๊ณผ

 

'Hacking Tech > System Hacking' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Dreamhack] Tool: pwntools  (0) 2022.03.28
[Dreamhack] Tool: gdb  (0) 2022.03.27
[Dreamhack] x86 Assembly๐Ÿค–: Essential Part(2)  (0) 2022.03.27
[Dreamhack] Background: Linux Memory Layout  (0) 2022.03.25
[Dreamhack] Background: Computer Architecture  (0) 2022.03.25
profile

Fascination

@euna-319

ํฌ์ŠคํŒ…์ด ์ข‹์•˜๋‹ค๋ฉด "์ข‹์•„์š”โค๏ธ" ๋˜๋Š” "๊ตฌ๋…๐Ÿ‘๐Ÿป" ํ•ด์ฃผ์„ธ์š”!