컴퓨터 구조의 필요성
-OS, 어플리케이션 등을 알기 위해서 컴퓨터의 구조와 동작 과정에 대해 먼저 학습이 필요함.
- 특히 키 로거를 구현하기 위해서 입출력 장치에 대해서 이해 필요
컴퓨터 구조
- CPU : 명령어를 해석하여 제어 신호를 주변 장치에 전달
- 메모리 : 데이터 저장
- 주변 장치 : 입력 장치로 키보드와 마우스, 출력 장치로 모니터와 프린터, 기능 확장을 위한 네트워크/그래픽카드
- 버스 : CPU가 메모리, 주변장치 간 데이터 전송을 위한 통로
CPU
- ALU Arithmetic Lo : 산술 논리연산 수행
- CU Control Unit : 기억장치로부터 받은 명령어를 해석하여 제어 신호를 보내는 유닛
- 레지스터 : 고속 데이터 저장 장소. 해킹시 레지스터 값 변화를 주시해야함
- 버스 인터페이스
메모리
- 프로세서가 수행되는 공간으로 메모리 상의 값을 조작 함
- 논리적 메모리 구조 : 힙, 스택, 코드, 데이터
- ROM, RAM이 존재
운영체제
- SW, HW를 제어하는 프로그램
- 개발자는 OS가 제공하는 API만 알면 됨
- SW 기능 : 프로세스 생성, 소멸, 동기화, 스케출링 수행, 파일 시스템 관리
- HW 기능 : 주변장치와 CPU, 센서 관리
프로세스
- OS의 제어를 받는 프로그램의 실행 단위 -> PCB Process Control Block으로 표현
* PCB 자료구조 구성 : PID, Process Status, Counter, Register, 스케줄링 정보 등
- API 후킹, DLL 인잭션을 하기 위해서 프로세스 동작 이해 필요
프로세스와 메모리, 해킹
- 프로세스는 데이터를 메모리에 적재하여 수행.
- 메모리에 적재되는 데이터 종류 : 주소, 변수, 객체, 반환값
- 해킹과 메모리 : 소스 코드 인젝션, 버퍼 오버플로우 등은 메모리의 데이터를 변경하여 수행
논리적인 메모리 구조
- 코드 영역 : 실행 파일들을 이루는 명령어들이 적재되는 공간 -> 함수, 제어문, 상수 등
- 데이터 영역 : 전역 변수, 정적 변수, 구조체 등 적재
- 힙 영역 : 프로세스가 임의로 할당하는 공간(동적 할당). ex) malloc 사용하는 경우
- 스택 영역 : 지역 변수, 함수 호출 정보 저장 공간
네트워크 관련 용어
- 식별자 : 컴퓨터를 구분하기 위한 수단으로 MAC, IP
- 프로토콜 : 데이터를 전송하기 위한 규칙으로 주소, 포트번호 등 정보의 모음을 하나의 프로토콜이라 할 수 있음.
- 라우팅 : 데이터를 빠르게 전송할수 있는 경로를 찾는 기능
OSI 7계층
- Open System Interconnection
- 서로 다른 장치/시스템간에 통신을 수행할수 있도록 하는 표준 모델
- 상위에서 하위 층으로 내려갈때 헤더와 테일이 추가됨
7. 응용계층 : 프로그램에 서비스, API 제공(ex. FTP)
6. 표현 계층 : 데이터 표현 방식을 규정(ex. JPEG, ASCII, UTF-8)
5. 세션 계층 : 데이터를 전송하기 위한 프로세스간 가상의 통신 경로
4. 전송 계층 : 시스템간 연결이 확립되면 데이터를 전송하기 위한 정의(ex. TCP, UDP)
3. 네트워크 계층 : 서로 다른 시스템이 통신하기 위한 최적의 경로 선정(ex. 라우터, IP, ICMP)
2. 데이터 링크 계층 : 논리적인 연결 정의 (ex. 이더넷, HDLC)
1. 물리 계층 : 물리적인 연결을 정의(ex. 리피터, 허브)