■ Security/- System Hacking

Argc 및 Argv에 대한 어셈블리어

개발따 2023. 8. 17. 16:51
  • 일반적으로 프로그램이 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