본문 바로가기
hacking/pwnable

[Dream hack] Quiz: x86 Assembly 1-12

by ilp 2024. 5. 20.
반응형


초기상태

레지스터:

  • rcx = 0
  • rdx = 0
  • rsi = 0x400000

메모리

0x400000: 0x67 0x55 0x5c 0x53 0x5f 0x5d 0x55 0x10
0x400008: 0x44 0x5f 0x10 0x51 0x43 0x43 0x55 0x5d
0x400010: 0x52 0x5c 0x49 0x10 0x47 0x5f 0x42 0x5c
0x400018: 0x54 0x11 0x00 0x00 0x00 0x00 0x00 0x00

어셈블리 코드 분석

1.  mov dl, BYTE PTR[rsi+rcx]

  • 현재 rcx = 0 이므로, 첫 번쨰 바이트(0x400000)를 'dl'로 이동한다.
  • dl = 0x67

2.  xor dl, 0x30

  • 'dl'에 0x30을 xor 연산 한다. 0x67 ^ 0x30 = 0x57 (ASCII 'W')

3. mov BYTE PTR[rsi+rcx], dl

  • 'dl' 값을 다시 메모리 주소 0x400000에 저장합니다.
  • 0x400000 = 0x57

4. inc rcx

  • rcx 값을 1 증가시킵니다.

5. cmp rcx, 0x19

  • rcx 값을 0x19 (25)와 비교한다.

6. jg end

  • rcx > 0x19이면 루프를 종료합니다. 

7. jmp 1

  • 루프의 시작으로 돌아다.

변환된 메모리 상태

0x400000: 0x57 0x65 0x6c 0x63 0x6f 0x6d 0x65 0x20
0x400008: 0x74 0x6f 0x20 0x61 0x73 0x73 0x65 0x6d
0x400010: 0x62 0x6c 0x79 0x20 0x77 0x6f 0x72 0x6c
0x400018: 0x64 0x11 0x00 0x00 0x00 0x00 0x00 0x00

이를 ASCII 문자로 변환하면

Welcome to assembly world!

반응형

'hacking > pwnable' 카테고리의 다른 글

[Dream hack] Quiz: Shellcode-3  (0) 2024.05.23
[Dream hack] Quiz: Shellcode-2  (0) 2024.05.23
[Dream hack] Quiz: x86 Assembly 1-11  (0) 2024.05.19
[Dream hack] Quiz: x86 Assembly 1-10  (0) 2024.05.18
[Dream hack] Quiz: x86 Assembly 1-9  (0) 2024.05.18