부트로더 - 4
부트로더 코드에 대해서 설명하기에 앞서 어셈블리어에 대해서 좀 알아야한다. 아무래도 가장 기계어에 가까운 부분이다 보니 C나 다른 언어로 짜는 것보다는 어셈블리어로 짜는게 좀 더 용이한 부분이 있다. 아래는 주로 사용되는 어셈블리어 명령어이다. 명령어 모음 사칙 연산 add A, B A에 B를 더한 뒤 A에 저장 sub A, B ...
부트로더 코드에 대해서 설명하기에 앞서 어셈블리어에 대해서 좀 알아야한다. 아무래도 가장 기계어에 가까운 부분이다 보니 C나 다른 언어로 짜는 것보다는 어셈블리어로 짜는게 좀 더 용이한 부분이 있다. 아래는 주로 사용되는 어셈블리어 명령어이다. 명령어 모음 사칙 연산 add A, B A에 B를 더한 뒤 A에 저장 sub A, B ...
이전에 MBR에 대한 설명을 했을 때 PeTya 랜섬웨어의 금전요구 화면에 대한 이야기를 했는데 어떻게 그런 금전 요구 화면을 띄울 수 있었을까? OS가 부팅되지 않아 그래픽카드나 드라이버에 엑세스할 수 없는데 말이다. 이는 기본적으로 메모리의 특정 위치에 디스플레이가 매핑되어있어서 가능한 일이다. 비디오 메모리라고 불리는 것인데 메모리의 특정 부분...
현대의 MBR은 다음 세가지로 이루어져야한다. 1. Bootstrap Code 파티션 테이블을 참조해서 관련 코드를 불러오는 코드다. 2. Partition Table Entry Boot Flag (1 Byte) 0x80 -> 부팅 가능 코드 0x00 -> 부팅 불가 코드 Starting CHS Address (3 Byte) 현재는 사용...
BIOS에서 구동가능한 부트로더를 한줄로 정의하면 아래와 같다. OS를 구동하기 위해서 필요한 512Bytes 코드 이 문장을 해석하면 BIOS를 통해서 구동되는 부트로더(이하 부트로더)가 무엇인지 어떻게 구동되는지 알 수 있다. 컴퓨터가 켜지면 POST라는 절차를 거친다. 펌웨어인 바이오스가 실행하는 일종의 검사 루틴으로 이 POST는 프로세서...
2. 세그멘테이션 세그멘테이션은 한마디로 세그먼트 레지스터를 이용하여 주소 공간을 관리하는 기법이다. 이 세그먼트 레지스터는 프로세스를 실행하는데 필요한 데이터의 뭉치 시작 주소들을 가리키고 있는데 이러한 데이터 뭉치는 코드, 데이터, 스택으로 나눌 수 있다. 앞서 설명한 페이징이 고정된 사이즈로 메모리를 나눠서 관리하는 기법이라면 세그멘테이션은 ...
페이징과 세그멘테이션 메모리를 효율적으로 운용하기 위해서 컴퓨터의 발생부터 사람들의 많은 노력이 있었다. 그냥 일괄처리 시스템이라면 메모리 0번지부터 차근차근 써버리고 해제하면 되겠지만 PC의 시대가 도래하면서 여러가지 프로그램을 한번에 처리해야할 필요성이 생겼다. 그리하여 메모리 운용의 가장 최신 기술이 세그멘테이션과 페이징인것이다. 이러한 세그멘...
IA-32e 모드 앞서 포스팅한 내용에 따르면 보호 모드의 특성은 아래와 같다. 최근 제공되는 OS들이 구동되는 모드이다. 멀티태스킹, 세그멘테이션, 페이징을 지원한다. 이론상 최대 16EB(2^64) 만큼의 메모리 제한이 있다. 민감한 메모리 영역에 대한 보호를 제공한다. 32bit 호환 모드가 있어 32bit용 코드를 구동가...
보호 모드 앞서 포스팅한 내용에 따르면 보호 모드의 특성은 아래와 같다. 윈도우나 Linux가 구동되는 기본 모드이다. 멀티태스킹, 세그멘테이션, 페이징을 지원한다. 디바이스 드라이버를 써야 장치 제어가 가능하다. 4GB의 메모리 제한이 있다. (2^32) 민감한 메모리 영역에 대한 보호를 제공한다. 이러한 특성을 하나하나 ...
리얼 모드(Real mode) 앞서 포스팅한 내용에 따르면 리얼 모드의 특성은 아래와 같다. 16bit 프로세서와 동일하게 사용되며 BIOS의 여러 기능을 사용가능하다. 페이징을 지원하지 않는다. 640KB 메모리 제한이 있다 (실 사용 가능한 메모리 기준) 디바이스 드라이버 없이 장치 제어가 가능하다. 이러한 특성을 하나하나 ...
부트 로더에 대한 설명 이전에 각 모드에 대해서 설명을 하고 들어가야 보는 과정에서 이해가 될 것 같아서 이후에 포스팅을 추가한다. 1. 리얼 모드 16bit 프로세서와 동일하게 사용되며 BIOS의 여러 기능을 사용가능하다. 디바이스 드라이버 없이 장치 제어가 가능하다. 페이징을 지원하지 않는다. 640KB 메모리 제한이 있다 (실 ...