완료됨
질문
   0x00000000004006e8 <+0>:	push   rbp
   0x00000000004006e9 <+1>:	mov    rbp,rsp
   0x00000000004006ec <+4>:	sub    rsp,0x30
   0x00000000004006f0 <+8>:	mov    eax,0x0
   0x00000000004006f5 <+13>:	call   0x400667 <init>
   0x00000000004006fa <+18>:	lea    rdi,[rip+0xbb]        # 0x4007bc
   0x0000000000400701 <+25>:	mov    eax,0x0
   0x0000000000400706 <+30>:	call   0x400540 <printf@plt>
   0x000000000040070b <+35>:	lea    rax,[rbp-0x30]
   0x000000000040070f <+39>:	mov    rsi,rax
   0x0000000000400712 <+42>:	lea    rdi,[rip+0xab]        # 0x4007c4
   0x0000000000400719 <+49>:	mov    eax,0x0
=> 0x000000000040071e <+54>:	call   0x400570 <__isoc99_scanf@plt>

여기서 scanf 인자주는부분

   0x000000000040070b <+35>:	lea    rax,[rbp-0x30]

요 버퍼 크기 [rbp-0x30]는 처음에 늘려준

   0x00000000004006ec <+4>:	sub    rsp,0x30

여기부분을 가르키는건가요 아니면
call한후 그쪽 스택프레임에서 [rbp-0x30]을 가르키는건가요

#시스템_해킹 #공격기법
작성자 정보
더 깊이 있는 답변이 필요할 때
드림핵 팀과 멘토에게 직접 문의해 보세요!
답변 1
avatar
믕믕이부하
대표 업적 없음

scanf가 call되기 이전 스택프레임에서 가져옵니다. 애초에 인자로 주는 변수는 scanf 함수 내부가 아니라 scanf를 호출하는 함수(main 등)에 포함되어 있으니까요...!

2022.03.09. 01:54