Pwnable

mwaah·2023년 11월 23일
0

• Architecture & Register

프로세서, 메모리, 입출력 등의 시스템 구성

  • 레지스터: 프로세서가 사용하는 고속 메모리
    x86 아키텍처 - EAX, EBX, ECX, EDX

• Linux Memory Layout

주소 공간을 여러 영역으로 분할

  • 커널 영역
  • 사용자 공간
  • 스택

커널 영역 (Kernel Space):

커널 공간은 운영체제의 핵심 부분으로, 운영체제 커널이 실행되는 메모리 영역. 이 영역은 일반 프로그램이 직접 접근할 수 없고, 특권 명령이 필요. 보안을 강화하기 위해 사용자 영역과 분리되어 있음.

사용자 영역 (User Space):

일반적인 응용 프로그램이 실행되는 메모리 영역입니다. 이 영역은 사용자 프로세스들이 동작하며, 각 프로세스는 독립적으로 자신의 메모리 공간을 가짐.

스택 (Stack):

함수 호출 및 지역 변수 저장에 사용되는 메모리 영역. 함수가 호출될 때마다 스택 프레임이 생성되고, 이전에 호출된 함수의 정보와 지역 변수가 저장.
LIFO 방식으로 동작

힙 (Heap):

동적으로 할당된 메모리를 관리하는 영역.
FIFO 방식으로 동작.

메모리 매핑 (Memory Mapping):

메모리 매핑은 파일이나 장치를 메모리에 연결하는 방법을 나타냅니다. 이를 통해 파일이나 장치에 접근하는데 사용되는 메모리 영역을 생성할 수 있습니다.
프로세스 실행 및 데이터 저장 등에 사용

• Calling Convention

caller가 전달할 argument를 stack에 push
callee prolog
callee epilog
caller가 call과정에서 사용한 stack 정리

0개의 댓글