본문 바로가기

x862

[Reversing] Calling Convention(호출 규약) Calling ConventionCalling Convention(함수 호출 규약)이란 '함수 호출 시 인자(parameter) 전달 및 반환값을 처리하는 방식에 관한 규약'이다. Calling Convention은 다음과 같은 것들을 정의한다.  인수(argument)를 어떤 순서로 전달할지 - 오른쪽에서 왼쪽?인수를 어디에 저장할지 - 레지스터에? 스택(stack)에?함수가 반환값을 어디에 저장할지 - eax? stack frame을 누가 정리할지 - Caller? Callee?어떤 레지스터를 보존해야 할지 - 함수 호출 전에 저장하고, 호출 후 복구해야하는 레지스터대표적인 Calling Convention들은 다음과 같다.  Calling Convention들을 하나씩 살펴보자. _cdecl 인자를.. 2025. 4. 7.
[Reversing] Memory Structure x86 환경에서의 메모리 구조 메모리는 프로세스 동작과 실행에 필요한 정보를 저장한다.  (IA-32)x86 환경을 기준으로 4GB(2**32 byte = 4GB)의 메모리를 가지는데, 2GB 단위로 OS가 사용하는 커널 영역과 사용자가 실행한 프로세스가 사용하는 유저 영역으로 나뉜다. 지금까지 본 메모리의 구조는 물리(Real/Physical) 메모리이 구조이고, 다음에 알아야 할 것은 가상(Virtual/Logical) 메모리이다.  실제 프로세스가 저장된 물리 메모리는 2GB이지만, 하나의 프로세스는 4GB 크기의 하나의 가상 메모리를 가진다. 당연하지만, 물리 메모리 상의 실제 메모리 주소와 가상 메모리 상의 주소는 다르며 CPU에 있는 MMU(Memory Management Unit)이 가상 주.. 2025. 4. 7.