main에서 코드 주소

system("/bin/sh") 주소가 0x400a11인 이유가 뭘까요?
system 함수를 call 하는 부분인 그 다음 주소 0x400a16이 아닌 이유가 뭘까요?

#pwnable
작성자 정보
답변 2
이무쿤
대표 업적 없음

image.png

여기서 보면
call system 하는 부분의 주소는 0x400a16 인데 그 전 주소인 mov edi를 하는 0x400a11 주소를 system call을 호출하는데 사용하는 이유가 뭘까요?

2022.08.16. 10:14
Hmin
강의 수강: 10

https://learn.dreamhack.io/54#6
위의 강의를 보면 sysv 호출규약의 경우 레지스터와 스택을 통해 인자를 전달합니다.
"rdi, rsi, rdx, rcx, r8, r9, 스택" 이렇게요

system("/bin/sh") 에서 system함수의 첫번째 인자는 "/bin/sh"이기 때문에
rdi의 32비트 버전인 edi로 /bin/sh를 넘기는 겁니다.

2022.08.17. 15:24
질문에 대한 답을 알고 계신가요?
지식을 나누고 포인트를 획득해보세요.
답변하고 포인트 받기