주요 코드를 분석해보면 다음과 같다.
mov esi, 0xf : esi에 0xf (15)저장 >> 이를 통해 출력할 바이트 수가 15바이트임을 알 수 있다.
mov rdi, 0x400500 >> rdi에 0x400500 메모리 주소를 저장하는 것을 알 수 있다.
그리고 write_n 함수 코드에서 syscall 명령어를 주의깊게 봐야한다.
mov rax, 0x1 : rax에 0x1을 대입하여 write 기능을 수행하게 한다.
mov rdi, 0x1 : rdi에서 0x1은 unsigned int fd이기 때문에 rdi는 1로 설정된다.
[Memory]
1바이트 단위로 끊어보면 0x30/37/20/79/64/34/33/72와 0x00/3f/36/75/62/33/64/20이 된다.
이 값을 아스키코드로 변경하면 각각 d3bu6? 와 r34dy 70 이 나오게 되는데
이는 리틀엔디안방식을 고려하지 않아서 그렇다.
리틀엔디안방식 : 낮은 주소에 데이터의 낮은 바이트를 저장하는 방식
을 고려하면, 정답은 r34dy 70 d3bu6?