코드 분석
push rbp와 mov rbp, rsp: 스택 프레임을 설정하는 기본적인 코드임
mov esi, 0xf: esi 레지스터에 0xf(15)를 저장. 이는 출력할 바이트 수와 관련이 있을 수 있음
mov rdi, 0x400500: rdi 레지스터에 0x400500 값을 저장. 이는 메모리 주소를 가리킴
call 0x400497 <write_n>: write_n 함수를 호출함
mov eax, 0x0와 pop rbp, ret: 함수 종료 후 리턴함
write_n 함수
스택 프레임 설정 (push rbp, mov rbp, rsp)
mov QWORD PTR [rbp-0x8], rdi: rdi의 값을 스택에 저장. 이 값은 0x400500
mov DWORD PTR [rbp-0xc], esi: esi 값을 스택에 저장. 이 값은 0xf
xor rdx, rdx: rdx를 0으로 초기화
mov edx, DWORD PTR [rbp-0xc]: edx에 0xc 오프셋에 있는 값을 저장하는데, 이는 esi의 값 0xf
mov rsi, QWORD PTR [rbp-0x8]: rsi에 0x8 오프셋에 있는 값을 저장하는데, 이는 rdi의 값 0x400500
mov rdi, 0x1: 표준 출력(stdout)에 해당하는 파일 디스크립터 1을 rdi에 저장
mov rax, 0x1: write 시스템 호출을 위한 호출 번호 1을 rax에 저장
syscall: 커널에 write 시스템 호출을 실행
0x400500 | 0x3037207964343372
0x400508 | 0x003f367562336420
메모리 내용
메모리 숫자를 아스키로 변환하면
"r34dy 70 d3bu6?"