공통
1. 전원인가   
2. POST 초기화 ( 프로그램 카운터 초기화)
3. BootStrap 이라 불리우는 ROM BIOS 초기화
4. 시스템버스, RTC, VIDEO, RAM, KEYBOARD 순서대로 점검
5. cd /hdd /floopy 드라이브 결정을 위한 버스 경로 지정
6. 시스템 구성정보와 CMOS 비교, 다르면 Setup 프로그램 업데이트
7. SCSI BIOS와 같이 시스템에 포함된 바이오스 정보 로딩
8. BootStrap( POST) 종료
: MBR, 또는 VBR(floopy) 로딩 
9. MBR의 파티션테이블에서 부팅가능한 파티션 영역의 BR주소를 찾아서 이동



DOS

10. IO.sys로드
11. SYSINIT 루틴 동작( SYSINIT루틴은 IO.sys의 서브루틴이다 )
12. SYSINIT 는 DOS 메모리 영역의 가장 위쪽에 연속적으로 자신을 복사
13. SYSINIT가 MSDOS.sys 로드 ( 시스템 장치의 상태체크, 기본 장치 드라이버 초기화)
14. SYSINIT가 config.sys파일 로드 ( DEVICE /INSTALL /SHELL )
15. command.com 수행
16. autoexec.bat파일이 존재시 해당 파일을 실행
17. autoexec.bat파일 미존재시 time/ date / copyright 정보와 함께 prompt 출력


Windows 2000 / xp 

10. NTLDR로드 ( protected mode로 동작 ) 
11. 파일 시스템 시작 및 BOOT.ini 파일 로드 ( 파티션정보, 부팅순서)
12. 윈도우가 아닌 계열은 BOOTSEC.DOS 파일이 로드 됨.
13. SCSI 드라이브가 존재할 시에는 SCSI 드라이브의 드라이버를 위해 NTBOOTDD.sys 를 포함하여 읽어들임
14. NTDETECT.com 수행
: 시스템에 설치된 하드웨어 / NTLDR에 의해 통과된 구성 정보를 찾아 실행 프로파일을 수행
15. NTDETECT.com에 의해 이전 단계에서 획득된 구성 정보는 NTLDR에 의해 NTOSKERNEL.exe로 넘어감 
: NTOSKERNEL은 "kernel / HAL / 시스템레지스트리" 정보를 로딩

                      <윈도우 커널구조 > 
**** 커널의 레벨을 나눈 이유는 안정성, 프로그램이 죽어도 커널은 안죽게 하기 위해.

 
16. 네트워킹코드( tcp / ip와 같은), 드라이버들이 nt 부트 프로세스에서 로딩된다. 
: 서비스 중 하나인 로그온 서비스가 구동되고 , 정상적으로 로그온 시에 "good" 상태는 마지막 성공한 구성으로 업데이트 되어 진다. 
17. 로그온과 동시에 장치 탐지가 수행되고, 장치가 발견되면 driver.cab파일을 압축 해제 후 드라이버를 설치하며, 드라이버가 존재하지 않으면  사용자에게 요구한다. 소프트웨어와 하드웨어의 구성을 위한 상호 허가가 발생된다. 


cf. 윈도우 비스타 , 7, 2008은 NTLDR 대신에 Bootmgr( Windows Boot Manager ) 가 로딩된다. 


BOOT.ini 대신에 시스템 "루트디렉토리에\BOOT" 디렉토리에 위치한 BCD 파일을 Bootmgr이 읽어들임
: BCD파일은 DB 파일
BCD파일은 레지스트리 HIVE와 동일함

NTOSKERNEL 대신에 Bootmgr이 WINLOAD.exe 호출
: Bootmgr은 VHD파일을 읽을 수 있어 멀티 부팅도 가능케 해준다. 

WINLOAD.exe는 NTOSKERNEL을 구동하고 부트 클래스 드라이버를 로드 한다. 

 
 
AND

1. CASE : 정전기 방지해야 함
2. ROM
3. RAM : Hibernation이슈  -->>> Hiberfil.sys 
: 최대 절전 모드시 Hiberfil.sys파일이 생성된다.
파일의 용량은 램사이즈와 동일하게 생성된다.
파일의 저장 경로는  <c:\>
4. Powersupply
5. Main Board 
6. CPU
7.Heat Sink and Fan
8. Hard Drive
:  CHS_MFM_RLL / LBA-ZBR /ATA 모드
9. SCSI
10. IDE
11. RAID
12. Flopy Drive
13. CDROM/ CDRW /DCVDROM / DVDRW
14. USB controller
15. USB port
16. IEEE1394 / 1394a / 1394b --800)786.432Mbps)
17. Sournd
18. VGA
19. ISA/EISA/PCI/PCI Express 등
20. RTC( real-time clock)
: CMOS BIOS Battery 로 불리나 실제 명칭은 RTC / NvRam
: 시스템 시간/ 날짜 기록
21. NvRAM
:CMOS data 저장
22. CMOS
: Comlermentrary Metal Oxide Semiconductior. 하웨어 반도체. 컴퓨터의 부팅디스크, 시각등을 기록. 베터리가 없으면소멸됨
RTC(시스템의날짜시간저장 ) / NvRam(메모리크기,드라이브타입,부팅순서및 구성정보등의 CMOS data저장) 라고 불리우는 CMOS 칩이 존재한다. 이 칩이 CMOS방식으로 만들어져 있다. 
23. CMOS Battery
24. BIOS
: OS 와 H/W 사이에 존재
low level software, Setup Program 
운영체제와 하드웨어 사이의 입출력을 담당하기 위해 저수준의 소프트웨어와 드라이버로 이루어진 펌웨어.
운영체제는 하드웨어와 통신하기 위해 하드웨어 구성을 알 필요없고 중간매개체인 BIOS와 통신하면된다. 
이는 하드웨어에 포함시켜둔다. --->>> 롬에 저장

CMOS Vs BIOS
: 부팅시 부팅설정을 하기 위한 파란 화면에 뜨는 내용들은 실제 CMOS(RTC/NvRAM)에 저장되어 있다. 하지만 이런 화면이 뜨게 하는 프로그램은 ROM BIOS에 존재 한다. BIOS프로그램이 COMS에 저장된 내용을 읽어와 설정할 수 있도록 보여주는 것이다. 
 

25. NIC / Modem
26. Parrel port /serial port

 

'Forensic & 침해사고대응' 카테고리의 다른 글

컴퓨터 부팅 프로세서  (0) 2011.08.24
리틀엔디안 빅엔디안 내부 원리  (0) 2011.08.24
RISC VS CISC  (0) 2011.08.24
[펌] 리틀엔디안 & 빅 엔디안  (0) 2011.08.24
메모리 덤프하기  (0) 2011.08.22
AND

CISC 구조 : 리틀엔디안( 인텔x86, 일반적인 PC)   사용
RISC 구조 : 빅엔디안 ( 모토로라 , SPARQ, unix ) 사용

CISC 와 RISC  비교는 이전글을 참조하세요 ( 
http://dbckdgns0515.tistory.com/entry/RISC-VS-CISC )

장단점을 논할 순 있지만, 어떤게 더 좋다고 말하기는 달걀의 위에서부터 까먹냐 아래서부터 까먹냐 차이처럼 별 의미 없다고 생각됩니다. 각각 용도에 달리 적용될 수 있기 때문이지요. 


 
다음을 살펴보겠습니다. 

다음에 0xf0f0 라는 16진수가 있을때 각 구조는 내부적으로 다음과 같이 배열됩니다.

빅엔디안




리틀엔디안 

: 확장성이 좋겠네요.  추가될때마다 뒤에다가 붙이면되니까요. 빅엔디안은 다 쭉 밀어야 겠군요. 


우리가 읽게 되는 16진수  0xf0f0 은 앞에 f0가 2^8 ~ 2^15 입니다. 뒤에 f0 는 2^0 ~ 2^7 이구요.  즉 우리들은 일반적으로 빅엔디안과 같은 형식으로 16진수를 읽고있습니다.  0x1234하면 2^8 ~2^15 승의 범위가 0x12 ,  2^0 ~ 2^7 는 0x34 이런식으로요.


그래서 우리가 MBR영역의 끝을 알리는 시그니처를 0x55aa라고 읽어도 리틀엔디안을 사용하는 시스템에서 파일시스템 덤프를 떠보면 MBR 맨 마지막에 AA 55 이렇게 나오는 것입니다. 읽을 땐 0x55aa라고 읽죠. 

따라서 위에 예에서 빅엔디안으로 저장되는 시스템에서는 눈에 보이는 그대로 0xf0f0 읽으면 되지만, 
리틀엔디안으로 저장되는 시스템에서는 순서를 1byte단위로 거꾸로 읽어야 합니다. 
쉽게 생각해서 거꾸로 읽는다고 생각하는 것이지, 사실은 이렇게 생각하셔야 정확합니다.



리틀엔디안 시스템에 0x123456  이 저장되어 있으면 역으로 읽는다고 생각해서 0x563412 이렇게 하는것이 아니라, 리틀엔디안의 구조에 저장될 때 높은 승수의 값들은(56)은 뒤에 있는데 읽을 땐 앞에 있는게 큰 수입니다
그냥 역으로 읽지말고 배치가 이렇게 된다는 걸 알아둡시다.




마찬가지로 이렇게 배치됩니다
리틀엔디안을 사용하는 시스템에 저장된 0x12345678 은 읽을때 0x78563412 라고 표시하게되는입니다.
 




'Forensic & 침해사고대응' 카테고리의 다른 글

컴퓨터 부팅 프로세서  (0) 2011.08.24
컴퓨터 포렌식을 위한 하드웨어 구성  (0) 2011.08.24
RISC VS CISC  (0) 2011.08.24
[펌] 리틀엔디안 & 빅 엔디안  (0) 2011.08.24
메모리 덤프하기  (0) 2011.08.22
AND