[ 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
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Working in Japan
      • 🌥️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
        • 2025
      • 2022 공부 로그 🐯
      • 2023 공부 로그🐰
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    KT침해사고
    보안부채
    파일리스 악성코드
    content collection
    뉴스스터디
    개인정보보호
    안드로이드 바이탈스
    엘라스틱 서치
    국가망보안체계
    인포스틸러
    주스재킹
    기지네트웍스
    ansible
    공공기관 보안
    jlpt n1 도전기
    웨이크락
    그림자AI
    보안뉴스
    초이스재킹
    엔드포인트보안
    바이브코딩
    클라우드리스크
    재해복구DR
    APT 공격
    디지털권위주의
    ansible galaxy
    좀비자산
    ai에이전트
    앱성능관리
    deprecation warning
  • 최근 댓글

  • 최근 글

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

티스토리툴바