본문 바로가기

개념정리/System Hacking

(11)
3. 리눅스 프로세스의 메모리 구조 1. 세그먼트 리눅스에서는 프로세스의 메모리를 5가지의 세그먼트로 구분한다. 세그먼트(Segment)란 적재되는 데이터의 용도별로 메모리의 구획을 나눈 것이다. 1)코드 세그먼트, 2)데이터 세그먼트, 3)BSS 세그먼트, 4)힙 세그먼트, 5)스택 세그먼트로 구분한다. 1) 코드 세그먼트(텍스트 세그먼트) 실행 가능한 기계코드가 위치하는 영역이다. 프로그램이 동작하려면 코드를 실행해야 하기 때문에 코드 세그먼트는 읽기 권한과 실행 권한이 부여된다. 쓰기 권한이 있으면 공격자가 악의적인 코드를 삽입하기 쉬워지므로 현대 운영체제에서는 코드 세그먼트에 쓰기 권한을 제거한다. 2) 데이터 세그먼트 컴파일 시점에 값이 정해진 전역 변수 및 전역 상수들이 위치한다. CPU는 데이터 세그먼트의 데이터를 읽을 수 있..
2. x86-64 아키텍처 1. x86-64 아키텍처 인텔의 64비트 CPU 아키텍처로 인텔의 32비트 CPU 아키텍처인 IA-32를 64비트 환경에서 사용할 수 있도록 확장한 것이다. - n 비트 아키텍처 n은 CPU가 한번에 처리할 수 있는 데이터의 크기이다. 64비트 아키텍처, 32비트 아키텍처에서는 CPU가 64비트, 32비트를 한번에 처리할 수 있다. - 워드(WORD) 컴퓨터과학에서 CPU가 이해할 수 있는 데이터의 단위를 WORD라고 부른다. WORD의 크기는 CPU가 어떻게 설계됐느냐에 따라 달라진다. 32비트 아키텍처는 ALU는 32비트까지 계산할 수 있고 레지스터, 버스들의 대역폭이 32비트이다. 따라서 이들로 구성된 CPU는 32비트의 데이터까지만 처리할 수 있게 된다. - 큰 WORD의 장점 현대의 PC는 대..
1. 컴퓨터 아키텍처 1. 컴퓨터 구조 컴퓨터의 기능 구조에 대한 설계, 명령어 집합구조, 마이크로 아키텍처, 그리고 기타 하드웨어 및 컴퓨팅 방법에 대한 설계 등으로 이루어져 있다. 2. 컴퓨터의 기능 구조에 대한 설계 컴퓨터가 연산을 효율적으로 하기 위해 어떤 기능들이 컴퓨터에 필요한지 고민하고 설계하는 분야 3. 명령어 집합구조(Instruction Set Architecture, ISA) CPU가 해석하는 명령어의 집합을 의미한다. 프로그램은 기계어로 이루어져 있으며 프로그램을 실행하면 이 명령어들을 CPU가 읽고 처리한다. ARM, MIPS, AVR, 인텔 x86 및 x86-64 등이 있다. 4. 마이크로 아키텍처 CPU의 하드웨어적 설계이며 정의된 명령어 집합을 효율적으로 처리할 수 있도록 CPU의 회로를 설계하는..