Without a Break

[Dreamhack] Computer Architecture 본문

Pwnable/Dreamhack

[Dreamhack] Computer Architecture

와븨 2022. 10. 5. 00:56

컴퓨터 구조와 명령어 집합 구조

컴퓨터 구조

: 컴퓨터가 효율적으로 작동할 수 있도록 하드웨어 및 소프트웨어의 기능을 고안하고, 이들을 구상하는 방법

  • 컴퓨터의 기능 구조에 대한 설계, 명령어, 집합구조, 마이크로 아키텍쳐, 하드웨어 및 컴퓨팅 방법에 대한 설계 등이 포함
  • 컴퓨터의 기능 구조에 대한 설계 : 컴퓨터가 연산을 효율적으로 하기 위해 어떤 기능들이 컴퓨터에 필요한지 고민하고, 설계하는 분야
  • 명령어 집합구조(Instruction Set Architecture) : CPU의 명령에 대한 설계. CPU가 처리해야하는 명령어를 설계하는 분야
  • 마이크로 아키텍쳐(Micro Architecture) : CPU의 하드웨어적 설계. 정의된 명령어 집합을 효율적으로 처리할 수 있도록, CPU의 회로를 설계하는 분야

 

컴퓨터 구조의 세부 분야

기능 구조의 설계 - 폰 노이만 구조
- 하버드 구조
- 수정된 하버드 구조
명령어 집합구조 - x86, x86-64
- ARM
- MIPS
- AVR
마이크로 아키텍쳐 - 캐시 설계
- 파이프라이닝
- 슈퍼 스칼라
- 분기 예측
- 비순차적 명령어 처리
하드웨어 및 컴퓨팅 방법론 - 직접 메모리 접근

 

폰 노이만 구조

 

중앙처리장치(CPU)

  • CPU는 프로그램의 연산을 처리하고 시스템을 관리하는 컴퓨터의 두뇌
  • 프로세스의 코드를 불러오고, 실행하고, 결과를 저장하는 일련의 모든 과정이 일어남
  • 산술논리장치(ALU) : 산술/논리 연산 처리
  • 제어장치(Control Unit) : CPU 제어
  • 레지스터(Register) : CPU에 필요한 데이터 저장

기억장치

  • 컴퓨터가 동작하는데 필요한 여러 데이터를 저장하기 위해 사용
  • 주기억장치 : 프로그램 실행 과정에서 필요한 데이터들을 임시 저장 ex) RAM
  • 보조기억장치 : 운영체제, 프로그램 등과 같은 데이터를 장기간 보관하고자 할 때 사용 ex)HDD, SSD

버스

  • 컴퓨터 부품과 부품 사이 또는 컴퓨터와 컴퓨터 사이에 신호를 전송한느 통로
  • 데이터 버스 : 데이터가 이동
  • 주소 버스 : 주소를 지정
  • 제어 버스 : 읽기/쓰기 제어
  • 랜선이나 데이터 전송 소프트웨어, 프로토콜 등도 버스라고 불림

 

명령어 집합 구조(ISA)

: CPU가 해석하는 명령어의 집합

 

 

x86-64 아키텍처

: 인텔의 64비트 CPU 아키텍처

  • 인텔의 32비트 CPU 아키텍처인 IA-32를 64비트 환경에서 사용할 수 있도록 확장한 것

레지스터

: CPU가 데이터를 빠르게 저장하고 사용할 때 이용하는 보관소

 

범용 레지스터

: 주용도는 있으나, 그 외의 다양한 용도로 사용될 수 있는 레지스터

이름 주용도
rax 함수의 반환 값
rbx x64에서는 주된 용도 없음
rcx 반복문의 반복 횟수, 각종 연산의 시행 횟수
rdx x64에서는 주된 용도 없음
rsi 데이터를 옮길 때 원본을 가리키는 포인터
rdi 데이터를 옮길 때 목적지를 가리키는 포인터
rsp 사용중인 스택의 위치를 가리키는 포인터
rdp 스택의 바닥을 가리키는 포인터

 

세그먼트 레지스터

: x64로 아키텍처가 확장되면서 용도에 큰 변화가 생긴 레지스터

: x64 아키텍처에는 cs, ss, ds, es, fs, gs

 

명령어 포인터 레지스터

: CPU가 어느 부분의 코드를 실행할지 가리킴

 

플래그 레지스터

: 프로세서의 현재 상태를 저장하고 있음

플래그 의미
CF 부호 없는 수의 연산 결과가 비트의 범위를 넘을 경우 설정
ZF 연산의 결과가 0일 경우 설정
SF 연산의 결과가 음수일 경우 설정
OF 부호 있는 수의 연산 결과가 비트의 범위를 넘을 경우 설정

'Pwnable > Dreamhack' 카테고리의 다른 글

[Dreamhack] Memory Corruption: Stack Buffer Overflow  (0) 2022.10.30
[Dreamhack] Exploit Tech: Shellcode  (0) 2022.10.30
[Dreamhack] Tool: gdb  (0) 2022.10.12
[Dreamhack] Linux Memory Layout  (0) 2022.10.05
[Dreamhack] Tool: Enviroment Setup  (0) 2022.09.27