2024. 1. 28. 00:55ㆍ시스템 해킹
컴퓨터 구조 Computer Architecture
; 컴퓨터가 효율적으로 작동할 수 있도록 하드웨어 및 소프트웨어의 기능을 고안, 이들을 구성하는 방법
-기능 구조에 대한 설계, 명령어 집합구조, 마이크로 아키텍처, 기타 하드웨어 및 컴퓨팅 방법에 대한 설계 등
명령어 집합구조 Instruction Set Architecture
; CPU의 명령어에 대한 설계.
마이크로 아키텍처 Micro Architecture
;CPU의 하드웨어적 설계. CPU 회로 설계.
폰 노이만 구조
; (연산, 제어)->CPU + (저장)->기억장치. 장치간에 데이터나 제어 신호를 교환할 수 있도록 버스라는 전자 통로 사용.
중앙처리장치 CPU
; 연산을 처리하고 시스템을 관리하는 컴퓨터의 두뇌.
-산술/논리 연산을 처리하는 산술논리장치, CPU를 제어하는 제어장치, CPU에 필요한 데이터를 저장하는 레지스터
주기억장치
; 프로그램 실행과정에서 필요한 데이터들을 임시로 저장하기 위함.
-RAM
보조기억장치
; 운영 체제, 프로그램 등과 같은 데이터를 장기간 보관하기 위함.
-HDD, SSD
버스
; 컴퓨터 부품과 부품사이 또는 컴퓨터와 컴퓨터 사이에 신호를 전송하는 통로.
-데이터 버스(데이터 이동), 주소 버스(주소 지정), 제어 버스(읽기/쓰기 제어), 랜선, 데이터전송 SW, 프로토콜 등
명령어 집합구조 Instruction Set Architecture, ISA
; CPU가 해석하는 명령어의 집합.
- IA-32, x86-64(x64), MIPS, AVR 등
*다양한 컴퓨팅 환경, 다양한 ISA.
x86-64 아키텍처
; 대다수 개인용 컴퓨터는 이 아키텍처 기반의 CPU 탑재.
*x86-64의 여러 이름: Intel64, IA-32e, amd64, EM64T …
x86-64 아키텍처: 레지스터
; CPU가 데이터를 빠르게 저장하고 사용할 때 이용하는 보관소
- 범용 레지스터(General Register); 주용도는 있으나 다양한 용도로 사용될 수 있는 레지스터
-세그먼트 레지스터(Segment Register); cs, ss, ds, es, fs, gs 총 6가지 존재. 각 크기는 16비트. x64로 아키텍처가 확장되면서 용도에 큰 변화가 생긴 레지스터.
*현대의 x64에서 cs, ds, ss 레지스터는 코드 영역과 데이터, 스택 메모리 영역을 가리킬 때 사용.
*나머지 레지스터는 운영체제 별로 용도를 결정할 수 있도록 범용적인 용도로 제작됨.
-명령어 포인터 레지스터(Instruction Pointer Register, IP); CPU가 프로그램의 어느 부분의 코드를 실행할지 가리키기 위함. rip 크기 8바이트
-플래그 레지스터(Flag Register); 프로세서의 현재 상태를 저장하고 있는 레지스터. RFLAGS 크기 64비트. 자신을 구성하는 여러 비트들로 CPU의 현재 상태를 표현.
레지스터 호환
; x86-64 아키텍처는 IA-32의 64비트 확장 아키텍처. IA-32에서 CPU의 레지스터들은 32비트 크기를 가지며, 이들의 명칭은 각각 eax, ebx, ecx, edx, esi, edi, esp, ebp. 호환성을 위해 이 레지스터들은 x86-64에서도 그대로 사용가능.
rax, rbx, rcx, rdx, rsi, rdi, rsp, rbp가 이들의 확장된 형태
eax, ebx 등은 확장된 레지스터의 하위 32비트(ex. eax는 rax의 하위 32비트)
* 마찬가지로 과거 16비트 아키텍처인 IA-16과의 호환을 위해 ax, bx, cx, dx, si, di, sp, bp는 eax, ebx , ecx , edx, esi, edi, esp, ebp의 하위 16비트를 가리킴.
rax = 0x0123456789abcdef 일 때, eax의 값은? 0x89abcdef
rax = 0x0123456789abcdef 일 때, ax의 값은? 0xcdef
rax = 0x0123456789abcdef 일 때, ah의 값은? 0xcd
rax = 0x0123456789abcdef 일 때, al의 값은? 0xef
'시스템 해킹' 카테고리의 다른 글
[프로젝트] AI를 활용한 악성코드 분류기_트로이 목마란 (0) | 2024.02.24 |
---|---|
[C언어] 스택(POP, PUSH, PEEK 구현), 레지스터, 스택프레임 (1) | 2024.02.12 |
[시스템 해킹] 02-2. Computer Science-x86 Assembly (0) | 2024.01.28 |
[시스템 해킹] 02-1. Computer Science-Linux Memory Layout (1) | 2024.01.28 |
[시스템 해킹] 01. 리눅스 환경 구축 (0) | 2024.01.27 |