본문 바로가기

S-DEV/Anti-Virus

Anti-Virus - 1

728x90

• X86 Platform 구성과 부팅 과정

1. X86 컴퓨터 하드웨어 구성

- CPU

- Main Memory

- SMBus (System Management Bus)

I2C 전기신호 프로토콜을 기반으로 하고 있음

  CPU 코어별 주파수 상태(클럭 속도)도 제어

LPC 중 하나이지만, 무척 소중 -> BUS 신호들로 인해서 메모리 버스 전송 속도를 결정

 

- LPC (Low Pin Count)

⇒ 저속으로 동작하는 장치 중, CPU와 직접 신호 연결을 통해 동작하는 장치와 버스를 통칭

⇒ BIOS, UEFI 펌웨어 롬도 이에 해당함

⇒ 펌웨어 업데이트 외에도 최근에 TPM, IPMI 같은 장치용으로 쓰임

Super I/O라는 형태의 장치로 많이 사용 -> 느린데 Super인 이유는 DMA, ACPI, APIC 우선순위는 높음

 

- ACPI (Advanced Configuration and Power Interface)

⇒ 현존 컴퓨터들은 ACPI를 기반으로 한 컴퓨터를 사용(ACPI 4.9 구격 사용)

⇒ ACPI 루틴들은 보통 BIOS나 UEFI 펌웨어에 프로그래밍되어 있는 경우가 많음 

⇒ 모바일 장치에도 적용 중

⇒ USB를 포함한 Plug n Play 장치들은 꼭 준수해야 함

 

- APIC (Advanced Programmable Interrupt Controller)

⇒ USB 장치를 연결하고, USB Host 와 통신할 수 있는 이유

⇒ APIC는 멀티코어 프로세서에도 필수

⇒ 새로운 장치가 등장할 때, 인터럽트 번호, 인터럽트 우선순위를 부여하고, 각 인터럽트가 발생할 때마다 인터럽트를 중재하거나, 전달, 지연하는 형태로 동작

 

- DMA (Direct Memory Access)

⇒ 장치간 직접 메모리 데이터 교환 시스템 

⇒ I/O 장치의 발달로 장치 간 데이터 전송 빈도와 대역이 증가하면서 CPU I/O 대역을 줄이기 위한 장치

 

- PIO (Programmed Input-output) 

⇒ 일반적인 프로그래밍을 통해 만드는 I/O 처리 프로그램은 PIO 방식과 마찬가지이다.

⇒ CPU를 통한 I/O 처리 기법

⇒ Memory Mapped I/O (MMIO), Port-mapped I/O (PMIO)

⇒ 저가 소형 임베디드 장치나 컨트롤러에서 주로 사용하는 방식

 

2. BIOS vs UEFI

- BIOS (Basic Input Output System)

16bit x86 architecture Binary

Core i 시리즈까지 사용가능 했으나 이후에 UEFI로 변경

ACPI를 사용하는 APM 기능도 포함

64bit을 지원하는 CPU라고 하더라고 16bit -> 32bit -> 64bit 모드로 변환해야 했음

 

- UEFI (Unified Extensible Firmware Interface)

32bit x86 Binary

기존 BIOS 기반의 MBR 부팅 방식을 지원하는 CSM(Compatibility Support Module) 방식 지원

컴퓨터를 운용하기 위한 모든 기능을 다 갖춘 펌웨어

 

3.  Windows 의 커널 구조와 부팅과정

- 일반 커널의 공통적인 작동 순서

  메모리 공간 인식 및 관리 -> 프로세스 구조체(객체) 정의, 메인 프로세스 시작 -> 드라이버 구조체 정의, 커널 드라이버 등록 시작 -> 저장장치 드라이버 등록, 파일 시스템 정의, 저장장치의 파티션 등록 -> BIOS 혹은 UEFI 호출 서비스 종료 -> 시스템 H/W 필수 드라이버 등록 -> OS 레벨의 드라이버 및 하드웨어 드라이버 호출, OS 부팅 시작

 

4. 안전모드가 갖는 의미

- 최소한의 권한

- 최소한의 하드웨어 드라이버

- 최소한의 리소스

- 보안과 사용자 로그인은 꼭 실행

 

 

'S-DEV > Anti-Virus' 카테고리의 다른 글

Yara 프로젝트  (0) 2023.10.29
Flex & bison  (0) 2023.07.31
Anit-Virus - 0  (0) 2023.07.30