완료됨
QUIZ x86 assembly 1 xor 질문입니다..!
[Register]
rcx = 0
rdx = 0
rsi = 0x400000
[Memory]
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
[code]
1: mov dl, BYTE PTR[rsi+rcx]
2: xor dl, 0x30
3: mov BYTE PTR[rsi+rcx], dl
4: inc rcx
5: cmp rcx, 0x19
6: jg end
7: jmp 1
1번에서 BYTE PTR이므로 0x400000의 값 0x67을 xor 해서 0x57를 얻는 것은 이해가 되었는데 7번 수행후 다시 1번을 갔을때 rsi+rcx가 0x4000000+0x01=0x4000001이 되어서 0x4000001의 값의 첫번째 16진수를 xor하는거 아닌가요? 그래서 0x4000000~0x4000018의 앞자리만 xor 된다고 생각했는데 모든 값들을 xor 하는거더라고요 어떻게 그렇게 되나요? rcx가 1씩 총 18번 더해지면 18번만 xor해야되는거 아닌가요..?
#pwnable
작성자 정보
답변
2
ohohohohohohohohoh
질문 등록: 5
스스로 풀 수 있어보이네요!
사소한것에 헷갈리신거 같은데
다시한번 천천히 한줄한줄 읽어봅시다!
한번쯤은 바보처럼 풀어보는것도 도움이될겁니다!
rikahail
워게임: 1
저도 처음에 같은 부분에서 헷갈려서 한참 헤맸는데...
rcx
와 비교하는 건 0x19
입니다...!