- 일반적으로 프로그램이 argv 배열로 받은 인자는 스택에 저장됨
- main() 함수의 인자로 받은 argc와 argv는 스택에 저장되며, 이들은 다음과 같은 방식으로 스택에 위치할 수 있음
(x86 아키텍처를 가정)
push ebp ; 이전의 베이스 포인터를 스택에 저장
mov ebp, esp ; 새로운 베이스 포인터 설정
mov eax, [ebp+8] ; argc를 레지스터로 로드
mov edx, [ebp+12]; argv를 레지스터로 로드
; 이후 eax와 edx 레지스터에는 각각 argc와 argv의 값이 들어있음
- 여기서 [ebp+8]은 argc가 위치한 주소이며, [ebp+12]는 argv가 위치한 주소임
- argv 배열은 문자열 포인터 배열이므로, 해당 포인터들이 가리키는 실제 문자열은 별도의 메모리 위치에 저장되어 있을 것임
- 그렇기에 argv 배열을 따라가서 실제 문자열을 찾아내는 작업도 필요할 수 있음
'■ Security > - System Hacking' 카테고리의 다른 글
Frida 기본 예제 ( Windows ) (1) | 2019.06.10 |
---|