본문 바로가기

리버싱/리버싱핵심원리

Process Explorer, 함수 호출 규약

Process Explorer

- 프로세스 익스플로러는 시스템의 현재 상태를 가장 간단하면서 명확하게 체크할 수 있는 도구

 

- 장점

  • Parent/Child 프로세스 트리 구조
  • 프로세스 실행/종료 시 각각의 색깔(초록/빨강)로 표시
  • 프로세스 Suspend/Resume 기능(실행 중지/재개)
  • 프로세스 종료(kill) 기능(Kill Process Tree 기능 지원)
  • DLL/Handle 검색(프로세스에 로딩된 DLL 또는 프로세스에서 점유하는 Handle 검색)

함수 호출 규약

함수 호출 후에 ESP(스택 포인터)를 어떻게 정리하는지에 대한 약속

 

용어설명

Caller(호출자) - 함수를 호출한 쪽

Callee(피호출자) - 호출을 당하는 함수

 

cdecl

- 주로 C언어에서 사용되는 방식이며, Caller에서 스택을 정리한다

- C언어의 printf() 함수와 같이 가변 길이 파라미터를 전달할 수 있다는 것이 장점이다

 

stdcall

- Win32 API에서 사용되며, Callee에서 스택을 정리한다

- Callee내부에 스택 정리 코드가 존재하므로 함수를 호출할 때마다 "ADD ESP, XXX" 명령을 써줘야 하는 cdecl 방식에 비해 코드가 작아진는 장점이 있다

fastcall

- stdcall방식과 같으나, 함수에 전달하는 파라미터 일부(2개까지)를 스택 메모리가 아닌 레지스터를 이용해 전달한다

- 어떤 함수의 파라미터가 4개라면, 앞의 두 개는 ECX, EDX 파라미터를 이용해 전달한다

- 빠른 함수 호출이 가능하다

- ECX, EDX에 중요한 값이 저장되어 있으면 백업해 놓아야 한다.

'리버싱 > 리버싱핵심원리' 카테고리의 다른 글

PE File Format(EAT)  (0) 2019.12.01
PE File Format(IAT)  (0) 2019.11.29
PE File Format(Dos Header ~ Optional Header)  (0) 2019.08.26
3, 4장 요약(바이트 오더링, IA-32 Register)  (0) 2019.08.24
1, 2장 요약  (0) 2019.08.24