완료됨
덧셈과 뺄셈 질문
[Register]
rax = 0x31337
rbx = 0x555555554000
rcx = 0x2
[Memory]
0x555555554000| 0x0000000000000000
0x555555554008| 0x0000000000000001
0x555555554010| 0x0000000000000003
0x555555554018| 0x0000000000000005
0x555555554020| 0x000000000003133A
[Code]
1: add rax, [rbx+rcx8]
2: add rcx, 2
3: sub rax, [rbx+rcx8]
4: inc rax
에서 1번 문제가 add rax, [rbx+rcx*8] 인데 rcx * 8을 한다면 10이고 그것을 5555 5555 4000과 더한값인 5555 5555 4010을 rax에 더하는 거니까 rax값에 들어있는 31337을 포함하여 더해야 하는거 아닌가요? 정답은 보니까 5555 5555 4010을 가리키는 값인 3을 rax인 레지스터에 더하여 3133A가 정답이던데 제가 무엇을 읽는것을 빠트렸길래 rax값은 3을 더하게 되었을까요
*(WORD *)rdi 이게 어떻게 읽히는지만 알면 혼자 해결 할 수 있을거 같습니다
#시스템_해킹
#배경지식
작성자 정보
답변
1
wyv3rn
무플 방지 위원회장
괄호 안의 연산은 주소를 계산해서 그 주소의 값을 가져와서 합니다.
즉 최초 rax는 31337이고
rcx8 + rbx는 28 + 4000이니 4010이고
이 위치의 값은 3이기에
둘을 더하면 3133A가 됩니다.
그 아래도 마찬가지고요.