완료됨
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

스스로 풀 수 있어보이네요!

사소한것에 헷갈리신거 같은데

다시한번 천천히 한줄한줄 읽어봅시다!

한번쯤은 바보처럼 풀어보는것도 도움이될겁니다!

2022.08.23. 22:22
avatar
rikahail
워게임: 1

저도 처음에 같은 부분에서 헷갈려서 한참 헤맸는데...
rcx와 비교하는 건 0x19입니다...!

2022.09.01. 13:23