본문 바로가기
about Security/시스템 해킹

[드림핵] Computer Architecture

by saniii 2022. 3. 26.

# SYSTEM HACKING

 

* 가상 머신 : 컴퓨터를 에뮬레이팅 한 것

가상 머신을 작동 시키는 컴퓨터를 호스트(Host)라고 부르며, 가상 머신 안에서 작동하는 컴퓨터를 게스트(Guest)라고 부릅니다. 가상 머신을 이용하면 호스트는 게스트에게 독립된 실행환경을 제공할 수 있습니다. 그 위에서 게스트는 윈도우, 리눅스, 맥 등의 운영체제를 구동할 수도 있고, 원하는 특정 프로그램만 실행할 수도 있습니다.

대표적인 가상화 소프트웨어로는 VMware, VirtualBox, Parallels, QEMU 등이 있습니다.

 

# COMPUTER ARCHITECTURE, 컴퓨터 구조

컴퓨터로서 작동할 수 있도록 하는 여러가지 부품에 대한 기본 설계

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

  • 컴퓨터의 기능 구조에 대한 설계
    • 컴퓨터가 연산을 효율적으로 하기 위해 필요한 기능을 고민하고, 설계
    • ex) 폰 노이만 구조, 하버드 구조, 수정된 하버드 구조 ...
  • 명령어 집합구조
    • CPU의 명령어에 대한 설계 
    • ex) x86, x86-64, ARM, MIPS, AVR ...
  • 마이크로 아키텍처
    • CPU의 하드웨어적 설계
    • 정의된 명령어 집합을 효율적으로 처리할 수 있도록 CPU의 회로를 설계
    • ex) 캐시 설계, 파이프라이닝, 슈퍼 스칼라, 분기 예측, 비순차적 명령어 처리 ...
  • 하드웨어 및 컴퓨팅 방법에 대한 설계
    • 직접 메모리 접근
  • 등등

 

 

+ 폰 노이만 구조

출처 :  https://ko.wikipedia.org/wiki/%ED%8F%B0_%EB%85%B8%EC%9D%B4%EB%A7%8C_%EA%B5%AC%EC%A1%B0#:~:text=%ED%8F%B0%20%EB%85%B8%EC%9D%B4%EB%A7%8C%20%EA%B5%AC%EC%A1%B0(%EC%98%81%EC%96%B4%3A%20Von,%EC%97%90%20%EA%B8%B0%EB%B0%98%ED%95%9C%20%EC%BB%B4%ED%93%A8%ED%84%B0%20%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98%EC%9D%B4%EB%8B%A4.

 

- 컴퓨터에 연산, 제어, 저장의 세가지 핵심 기능이 필요하다..!

   > 연산과 제어를 하는 중앙처리장치(CPU, Central Processing Unit) + 저장을 하는 기억장치 (memory)

   > 장치간에 데이터, 제어 신호를 교환할 수 있게 하는 전자통로, 버스 (bus)

  • 중앙처리장치, CPU
    • 프로그램의 연산을 처리하고 시스템을 관리
    • 산술논리장치(ALU) : 산술/논리 연산을 처리
    • 제어장치(Control Unit) : CPU를 제어
    • 레지스터(Register) : CPU에 필요한 데이터를 저장
  • 기억장치, memory
    • 컴퓨터가 동작하는데 필요한 데이터를 저장
    • 주기억장치
      • 프로그램 실행과정에서 필요한 데이터를 임시로 저장하기 위해 사용 
      • ex) RAM ...
    • 보조기억장치
      • 운영체제, 프로그램 등과 같은 데이터를 장기관 보관할 때 사용
      • ex) HDD(하드 드라이브), SSD ...
# 기억장치가 있음에도 CPU안에 레지스터가 필요한 이유
빠른 속도로 연산을 처리하는 CPU는 필요한 데이터를 빠르게 공급하고 반출할 수 있어야 효율적으로 작동할 수 있다.
이때 CPU의 연산 속도가 기억장치와 데이터 교환 속도보다 압도적으로 빠르기 때문에 기억장치만을 사용하면 병목현상이 발생하므로 이 교환 속도를 단축하기 위해 레지스터와 캐시를 저장장치 내부에 가진다.  

 

  • 버스, bus
    • 컴퓨터 부품과 부품 사이, 컴퓨터와 컴퓨터 사이에 신호를 전송하는 통로
    • 데이터 버스 (data bus) : 데이터가 이동
    • 주소 버스 (address bus) : 주소를 지정하는 버스
    • 제어 버스 (Control bus) : 읽기 / 쓰기를 제어
    • 랜선, 데이터 전송 소프르웨어, 프로토콜 ...

 

 

# Instruction Set Architecture, ISA, 명렁어 집합구조

ISA : CPU가 사용하는 명령어와 관련된 설계

- 모든 컴퓨터가 동일한 수준의 연산 능력을 요구하지 않고, 컴퓨팅 환경도 다양하기 때문에 다양한 ISA가 존재한다. 

- 랩탑, 데스트탑 -> x86-64 / 임베디드 장비 -> ARM, MIPS, AVR

 

 

 

# 인텔 x86-64

인텔 x86-64== intel 64 == amd64 == IA-32e ...

 

+ N 비트 아키텍처

- N : CPU가 한번에 처리할 수 있는 데이터의 크기 >> WORD : CPU가 이해할 수 있는 데이터의 단위

  • N 비트 아키텍처에서 CPU는 N비트의 데이터까지만 처리할 수 있다. 

 

+ x86-64 아키텍처의 레지스터

- CPU가 데이터를 빠르게 저장, 사용할 때 레지스터를 이용한다. 

  • 범용 레지스터 (in x86-64)
    • 다양한 용도로 사용할 수 있는 레지스터
      • 각각의 범용 레지스터는 8바이트를 저장할 수 있다. > (unsigned int) 2^64-1까지 표현
      •  
  • 세그먼트 레지스터 (in x86-64)
    • 6가지 세그먼트 레지스터 존재
    • cs, ds, ss : 코드 영역과 데이터, 스택 메모리 영역을 가리킬 때 사용
    • es, fs, gs : 운영체제 별로 용도를 결정할 수 있도록 범용적인 용도로 제작된 세그먼트 레지스터
  • 명령어 포인터 레지스터 (in x86-64)
    • CPU가 어느 부분의 코드를 실행할지 가리킨다. 
    • rip - 8byte
  • 플래그 레지스터
    • 프로세서의 현재 상태를 저장한다. 
    • 플래그 레지스터, 본인을 구성하는 여러 비트들로 CPU의 현재 상태를 표현
    • RFLAGS - 64bit
    • 자주 사용하는 플래그 
      • CF (carry flag) 
      • ZF (zero flag)
      • SF (sign flag)
      • OF (overflow flag)

플래그 레지스터 / 출처 : dreamhack

- 레지스터 호환 : 32bit 아키텍처와 호환하고자 할 때 64비트의 레지스터를 반으로 나눠서 뒷부분을 계속해서 반으로 자르면서 비트를 나눈다. >> ex) rax(64) > EAX(32) > AH, AL(16) ...

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

[ 참조 ]

본 페이지는 드림핵(dreamhack.io)의 시스템 해킹 로드맵, STAGE2를 정리한 글입니다. 

'about Security > 시스템 해킹' 카테고리의 다른 글

[드림핵] x86 Assembly  (0) 2022.03.26
[드림핵] Linux Memory Layout  (0) 2022.03.26

댓글