[ Dreamhack ] Reverse Engineering 3 (Computer Architecture)

2023. 9. 19. 18:22·INTERLUDE ✦/2023 Reversing STUDY

컴퓨터 구조(Computer Architecture)
- 컴퓨터가 효율적으로 작동할 수 있도록 하드웨어 및 소프트웨어의 기능을 고안하고, 이들을 구성하는 방법
- 기능 및 구조에 대한 설계, 명령어 집합구조, 마이크로 아키텍처, 기타 하드웨어 및 컴퓨팅 방법에 대한 설계 등 포함
- 폰 노이만 구조 / 하버드 구조 / 수정된 하버드 구조

 

명령어 집합구조(Instruction Set Architecture, ISA)
- 전체적인 컴퓨터 구조 중 특히 CPU가 사용하는 명령어와 관련된 설계
- 대표적으로 Intel의 x86-64 Architecture
- 그 외에도 ARM, MIPS, AVR 등

 

마이크로 아키텍처(Micro Architecture)
- 정의된 명령어 집합을 효율적으로 처리할 수 있도록 CPU의 회로를 설계하는 분야

- CPU의 하드웨어적 설계
- 캐시 설계 / 파이프라이닝 / 슈퍼 스칼라 / 분기 예측 / 비순차적 명령어 처리 등


폰 노이만 구조

폰 노이만 : oO(컴퓨터에는 연산, 제어, 저장의 세 가지 핵심 기능이 필요!)


근대의 컴퓨터는 연산과 제어를 위해 CPU를, 저장을 위해 memory를 사용함 + 장치 간 데이터나 제어 신호를 교환할 수 있도록 Bus라는 전자 통로 사용

중앙처리장치(Central Processing Unit, CPU)
- 프로그램의 연산을 처리하고 시스템을 제어하는 컴퓨터의 두뇌
- ALU(Arithmetic Logic Unit, 산술논리장치) / Register 등으로 구성됨

 

기억장치
- 동작에 필요한 여러 데이터를 저장하기 위해 사용됨
- 주기억장치 : 프로그램 실행과정에서 필요한 데이터들을 임시로 저장하기 위해 사용
                        RAM(Random-Access Memory)

- 보조기억장치 : 운영체제, 프로그램 등과 같은 데이터를 장기간 보관하고자 할 때 사용
                        HDD, SDD

 

버스

- 부품과 부품 사이, 컴퓨터와 컴퓨터 사이의 신호를 전송하는 통로
- Data Bus, Address Bus, Control Bus 등이 있음
- 랜선이나 데이터 전송을 목적으로 하는 SW, Protocol 등도 Bus라고 불림


명령어 집합 구조

Instruction Set Architecture, ISA
- CPU가 해석하는 명령어의 집합을 의미
- IA-32, x86-64, MIPS, AVR 등 다양하게 존재함


x86-64 Architecture

- x64 아키텍처 : 인텔의 64bit CPU 아키텍처
                           인텔의 32bit CPU 아키텍처인 IA-32를 64bit 환경에서 사용할 수 있도록 확장한 것
- 64와 32는 CPU가 한번에 처리할 수 있는 데이터의 크기
  컴퓨터 과학에서는 이를 CPU가 이해할 수 있는 데이터의 단위라는 의미에서 WORD라고 표현함

- WORD의 크기는 CPU 설계 방식에 따라 달라짐

 

레지스터
- CPU 내부의 저장장치로, CPU가 빠르게 접근하여 사용 가능
- 산술 여산에 필요한 데이터를 저장하거나 주소를 저장, 참조하는 등 다양한 용도로 사용됨
- General Register, Segment Register, Instruction Pointer Register, Flag Register 등이 존재


범용 레지스터(General Register)


- 주 용도가 있으나, 그 외의 임의 용도로도 사용될 수 있는 레지스터
- x86-64에서 각각의 범용 레지스터는 8byte 저장 가능
- unsigned int 기준으로 2^64 - 1까지 나타낼 수 있음
- x64의 경우 r8~r15까지의 범용 레지스터가 더 존재함

 

세그먼트 레지스터(Segment Register)

- x64 아키텍처에는 cs, ss, ds, es, fs, gs의 6가지 세그먼트 레지스터가 존재
- 각 레지스터의 크기는 16bit
- 과거에는 세그먼트 레지스터를 이용하여 물리 메모리의 크기를 키우려고 했음
   ex) cs:offset에서 cs << 4 + offset의 주소를 사용하여 16bit 범위에서 접근할 수 없는 주소에 접근 가능했음
         -> 요즘에 이런 용도로는 거의 사용하지 않음(넓어져서)
- 현대에서는 cs(코드 영역), ds(데이터 영역), ss(스택 메모리 영역) 으로 사용됨

 

명령어 포인터 레지스터(Instruction Pointer Register, IP)

- CPU가 어느 부분의 코드를 실행할 지 가리키는 역할
- x64 아키텍처의 명령어 레지스터는 rip, 크기는 8byte

 

플래그 레지스터(Flag Register)

 

- 프로세스의 현재 상태를 저장하고 있는 레지스터
- x64 아키텍처의 경우 RFLAGS라고 불리는 플래그 레지스터가 존재함(과거 16비트 플래그 레지스터가 확장된 것)

주로 접하게 될 Flag bit들

 

ex)

a = 3, b = 5일 때, a - b의 결과는 음수이므로 SF가 설정됨
CPU는 SF를 통해 a가 b보다 작았음을 알 수 있음


Quiz .

rax = 0x0123456789abcdef 일 때, eax, ax, ah, al의 값은?

정답 : eax = 0x89abcdef, ax = 0xcdef, ah = 0xcd, al = 0xef
풀이 : eax는 rax의 하위 32비트, ax는 eax의 하위 16비트, ah는 ax의 상위 8비트, al은 ax의 하위 8비트를 각각 의미함

 

rax에서 rbx를 뺐을 때, ZF가 설정되었다. rax와 rbx의 대소를 비교하시오

정답 : rax = rbx

풀이 : ZF(zero flag)는 연산의 결과가 0이 되었을 때 설정되는 플래그로, ZF가 0이 되었다면 두 피연산자의 값이 동일함(==)을 의미한다.

'INTERLUDE ✦ > 2023 Reversing STUDY' 카테고리의 다른 글

[ 악성코드 ] PreLab4  (0) 2023.10.19
[ SqureCTF ] Gates of Hell 1, 2  (0) 2023.09.21
[ INTERLUDE ] Reversing 강의 영상  (0) 2023.09.17
[ Dreamhack ] Reverse Engineering 1  (0) 2023.09.14
[ Dreamhack - Reversing ] Small Counter  (0) 2023.08.21
'INTERLUDE ✦/2023 Reversing STUDY' 카테고리의 다른 글
  • [ 악성코드 ] PreLab4
  • [ SqureCTF ] Gates of Hell 1, 2
  • [ INTERLUDE ] Reversing 강의 영상
  • [ Dreamhack ] Reverse Engineering 1
L_Chae
L_Chae
🎮😻🤓🖥✨
  • L_Chae
    Cherish
    L_Chae
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 🌥️Cloud Study🌥️
        • AWS
        • NHN
        • KT
        • Microsoft (Azure 900)
        • TroubleShooting
        • IaC
        • Etc
      • STUDY
        • English
        • Japanese
        • 개인정보보호 관련
      • 초등학교 AI 교육 진행
        • 2024학년도 1학년-2학년
        • 2025학년도 4학년
      • 2024 KDT 📕
        • Lecture
        • Study 📗
        • Study-JAVA
        • Project
        • etc
      • INTERLUDE ✦
        • 2022 SYSTEM STUDY
        • 2022 Winter Study
        • 2023 AutoMobility STUDY
        • 2023 Summer Study (CPPG)
        • 2023 Reversing STUDY
        • etc
      • Private🔒
        • MacBook 💻
        • Screenshot 🩷
        • Photo 🖼️
        • FFXIV - Backup 🎮
        • Tistory
      • PBL 📗
        • 논문 스터디
        • Backup
      • Project 🖤
        • 2022-2) 개인정보보호 소학회
        • 2022-2) winter GURU2 - iOS
        • 2023-1) PBL 3
        • 2023-2) PBL 4
        • 2024-1) SW-AI교육 실습 일지
      • CTF 🚩
        • 2022
        • 2023
      • News scrap 📰
        • 2022
        • 2023
      • 2022 공부 로그 🐯
      • 2023 공부 로그🐰
  • 블로그 메뉴

    • 글쓰기
    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    N1
    JLPT
    ansible galaxy
    ansible
    멱등성
    jlpt n1 도전기
    content collection
    deprecation warning
    JLPT N1
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
L_Chae
[ Dreamhack ] Reverse Engineering 3 (Computer Architecture)
상단으로

티스토리툴바