Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- bee-box
- 웹
- 모의해킹
- 네트워크
- 시스템해킹
- TCP
- 비박스
- System
- 소프트웨어보안
- network
- 시스템
- reversing
- ftz
- 웹해킹
- 해킹
- 네트워크보안
- hacking
- Webhaking
- 리버싱
- Web
- 알고리즘
- WarGame
- 드림핵
- CodeEngn
- dreamhack
- webhacking
- 순서도
- 워게임
- XSS
- 소프트웨어
Archives
- Today
- Total
Without a Break
[Dreamhack] Computer Architecture 본문
컴퓨터 구조와 명령어 집합 구조
컴퓨터 구조
: 컴퓨터가 효율적으로 작동할 수 있도록 하드웨어 및 소프트웨어의 기능을 고안하고, 이들을 구상하는 방법
- 컴퓨터의 기능 구조에 대한 설계, 명령어, 집합구조, 마이크로 아키텍쳐, 하드웨어 및 컴퓨팅 방법에 대한 설계 등이 포함
- 컴퓨터의 기능 구조에 대한 설계 : 컴퓨터가 연산을 효율적으로 하기 위해 어떤 기능들이 컴퓨터에 필요한지 고민하고, 설계하는 분야
- 명령어 집합구조(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 |