서론
해당 글에서는 드림핵의 시스템 해킹 강의를 들으며 배운 내용을 정리하는 식으로 작성할 예정이다.
본론에 들어가기 전에, 나는 학습을 진행하면서 내가 배운 전공지식이 정말 얉았다는것과 3학년이면서 한게 하나도 없다고 느꼈다.
이를 설명하기에는 생각의 과정이 너무 많았기에 나중에 기회가 되면 작성해봐야겠다.
물론 지금부터 열심히 할거고, 노베이스 상태에서 배우듯이 하나하나 자세히 공부하겠다. (실제로 노베이스가 맞지만)
그럼 시작하겠다.
https://dreamhack.io/lecture/paths/system-hacking-fundamental
컴퓨터 구조
컴퓨터라는건 CPU, RAM, GPU 등 부품들이 하나하나 독립적으로 작동하는게 아니라, 서로 다른 기능을 수행하는 여러 부품이 모여 컴퓨터라는 고유의 기능을 수행한다.
이런식으로 설계하는 것을 컴퓨터 구조라고 부르며, 우리는 그 중 명령어 집합구조(ISA)를, 그 중에서도 가장 널리 사용되는 x86-64 아키텍처에 대해 집중적으로 알아보고자 한다.
폰 노이만 구조
폰 노이만은 컴퓨터에 연산, 제어, 저장의 세 가지 핵심 기능이 필요하다고 생각했다.
이에따라 현재 컴퓨터는 연산과 제어를 위한 CPU, 저장을 위해 Memory를 사용하며, 장치간에 데이터나 제어 신호를 교환할 수 있는 Bus라는 통로를 사용한다.
RAM이나 Bus는 구조적으로 대략 알고있기 때문에 CPU의 구조에 대해서만 잠깐 설명하겠다
CPU는 프로그램의 연산을 처리하고, 시스템을 관리하는 역할을 한다. 이러한 산술/논리 연산은 ALU로, 제어는 Control Unit, 마지막으로 CPU에 필요한 데이터를 저장하는 Register 등으로 구성된다.
여기서 Register는 CPU가 직접 갖다쓸 수 있는 유일한 데이터 저장소이다. CPU는 RAM이나 SSD에 있는 데이터를 직접 갖다쓰지 못하고, 간접적으로만 사용할 수 있다. 이에 관련해서는 나중에 정리하겠다.
ISA (Instruction Set Architecture)
ISA라고 불리는 명령어 집합 구조는 CPU가 해석하는 명령어의 집합을 의미한다. 이 구조는 정말 다양하게 존재한다. IA-32, x86-64, AVR 등이 있는데, x86-64는 우리가 현재 사용하고있는 컴퓨터와 같이 고성능 프로세서를 설계하기 위해 사용되며 굉장히 많은 점유율을 기록하고있다.
그렇다고 다른 구조를 배우면 안된다는게 아니라 온디바이스 형태의 기기들에 최적화된 구조의 보안을 유지하기 위해서는 다른 구조도 학습하면 좋다.
x86-64 아키텍처는 각각 32비트, 64비트 아키텍처로 CPU가 한번에 처리할 수 있는 데이터의 크기이다. 컴퓨터 과학에서는 이 단위로 WORD를 사용한다.
CPU가 처리할 수 있는 데이터의 크기라는건 다음 뜻과 같다
- 레지스터의 크기: x64의 경우에는 하나의 레지스터에 최대 64비트를 저장할 수 있다.
- ALU 연산 데이터 크기: CPU 내부에는 ALU라는 산술 유닛이 있는데, 이 때 사용되는 데이터의 크기이다.
- 표현 가능한 주소의 크기: x86에서 x64로 바뀌게된 핵심 요인이다. 한 번에 접근할 수 있는 메모리의 크기이다.
- Bus의 대역폭: CPU와 메모리, 또는 다른 부품들 사이에서 한 번에 전송할 수 있는 데이터의 양이다.
Register

위에서 말했듯이 레지스터는 CPU가 데이터를 빠르게 저장하고 사용할 때 임시로 저장해놓는 메모리이다. 데이터 저장, 주소 저장 등 다양한 용도로 사용되며, 대표적인 범용 레지스터로 rax, rbx, rcx, rdx, rsi, rdi, rsp, rbp가 있다.
이 뿐만 아니라 세그먼트 레지스터인 cs, ds, ss, es, fs, gs 총 6개의 레지스터는 코드, 데이터, 스택의 주소를 저장하거나 범용으로 쓰인다.

또 CPU가 연산을 수행한 뒤 상태를 저장하는 플래그 레지스터가 있는데, 다 외울 필요 없다. 쓰다보면 나중에 다 알게된다.
레지스터 호환
x86와 x64 아키텍처는 서로 호환된다. 각각 32비트, 64비트 형태이므로 x64에서 레지스터를 반만 사용하면 그게 x32 아키텍처의 레지스터이다.

레지스터의 이름은 외우려고 애쓸필요 없고 어차피 쓰다보면 외워진다.
후기
간단하게 내용만 정리하는 식으로 짧게 쓰려고 했는데 쓰다보니 너무 부가적인 정보들도 적은거같다. 다음엔 정말 필요한 정보만 적어야겠다.
'보안 > System Hacking' 카테고리의 다른 글
| [Dream hack] 셸 코드란? (0) | 2026.04.03 |
|---|---|
| [Dream hack] GDB/PWN 정리 (0) | 2026.04.03 |
| [Dream hack] Linux 메모리 구조 & 어셈블리 정리 (0) | 2026.03.16 |