이미 소장하고 있다면 판매해 보세요.
|
01장 파일 시스템 드라이버에 대해서
Section01. Windows 시스템의 구조 Section02. 파일 시스템 드라이버 1. 파일 시스템 드라이버의 특징 2. 파일 시스템 드라이버의 기능 3. 파일 시스템 드라이버의 종류 4. Windows 2000 파일 시스템의 종류 Section03. 필터 드라이버 1. 필터 드라이버란 무엇인가? 2. 어떻게 IRP를 가로채는가? 02장 드라이버 동기화 메커니즘 Section 01. 스핀 록 1. 데드록 2. 데드록을 피하는 방법 3. 스핀 록의 사용 규칙 4. 스핀 록의 종류 Section 02. 디스패처 오브젝트 1. 이벤트 오브젝트 2. 뮤텍스 오브젝트 3. 세마포어 오브젝트 4. 타이머 오브젝트 Section 03. 리소스 오브젝트 Section 04. 그 밖의 커널 모드 동기화 오브젝트 1. Fast Mutex 오브젝트 2. 인터록 연산 3. 결론 03장 프로세스와 스레드의 컨텍스트 Section 01. 컨텍스트란 무엇인가? Section 02. 코드가 실행되는 컨텍스트 Section 03. 스레드와 프로세스 컨텍스트의 중요성 Section 04. 오브젝트와 핸들 04장 I/O 관리자 Section 01. I/O 시스템 1. 설계 목표 2. I/O 시스템의 구성 요소 3. I/O 서브 시스템 Section 02. I/O 관리자 1. I/O 관리자가 제공하는 기능 2. I/O 관리자의 설계 개념 3. 파일 시스템 드라이버와 I/O 관리자의 통신 Section 03. 주요 데이터 구조체 1. 드라이버 오브젝트 구조체 2. 디바이스 오브젝트 구조체 3. IRP 4. VPB 구조체 5. I/O Status Block 구조체 6. 파일 오브젝트 구조체 Section 04. 오브젝트의 선택과 사용 05장 데이터 버퍼에 대해서 Section 01. I/O 데이터 버퍼의 종류 1. Direct I/O 방식 2. Buffered I/O 방식 3. Neither I/O 방식 4. 데이터 버퍼 방식의 선택 Section 02. Device I/O 컨트롤 코드 1. 사용자 IOCTL 정의 2. CTL_CODE 매크로의 사용 06장 IRP의 처리 과정 Section 01. IRP에 대해서 Section 02. IRP 처리 방식 Section 03. 동기적/비동기적 I/O 처리 1. 동기적 I/O 처리 방식 2. 비동기적 I/O 처리 방식 Section 04. IRP의 할당과 생성 1. IRP의 할당 2. IRP의 생성 3. IRP의 완료 루틴 4. IRP의 재사용 5. IRP를 생성하기 위한 함수 6. DPC에 기반을 둔 I/O 요청 7. MDL에 기반을 둔 I/O 요청 8. 데이터 읽기 요청 9. 데이터 저장 요청 10. 압축 처리된 I/O 요청 Section 05. I/O 완료 처리 과정 1. I/O 스택 2. IRP 완료를 처리하기 위한 I/O 스택 설정 3. I/O 관리자의 역할 4. I/O 요청 완료의 과정 5. 완료 루틴의 호출 Section 06. I/O 요청 취소 1. I/O 요청 취소 과정 2. I/O 요청 취소 절차 3. I/O 요청 취소 시 문제점 Section 07. IRP 처리 규칙 Section 08. I/O 요청 처리 시 주의 사항 07장 가상 메모리 관리자 Section 01. 가상 메모리의 탄생 배경 1. 가상 메모리가 왜 유용한가? 2. 가상 메모리 동작 방식 Section 02. 가상 메모리 관리자의 기능 Section 03. 프로세스의 주소 공간 1. 사용자 주소 영역과 시스템 주소 영역 2. 시스템 주소 공간의 레이아웃 Section 04. 물리 메모리 관리 1. 페이지 프레임과 페이지 프레임 데이터베이스 2. 페이지 교체 알고리즘 3. 섹션 오브젝트 Section 05. 가상 주소의 변환 1. 페이지 테이블 2. 가상 주소를 물리 주소로의 변환 3. VAD(Virtual Address Descriptor) Section 06. 메모리 매핑된 파일의 지원 1. PPT와 PPTE 2. PPT 설계상의 문제점 3. 카피 온 라이트 4. 섹션과 뷰 5. 파일 매핑 구조체 Section 07. 페이징 1. 워킹 세트 2. 밸런스 세트 관리자 3. Modified Page Writer와 Mapped Page Write Section 08. 페이지 오류 처리 1. MiResolvePageFileFault() 함수 2. MiResolveTransitionFault() 함수 3. MiDispatchFault() 함수 4. MiResolveDemandZeroFault() 함수 Section 09. 파일 시스템 드라이버와의 통신 08장 캐시 관리자 Section 01. 논리적 블록 캐싱과 가상 블록 캐싱 Section 02. 캐시 관리자가 제공하는 기능 1. 시스템 전체에 걸친 캐시 기능 2. 미리 읽기 기능 3. 지연 쓰기 기능 Section 03. 캐시 인터페이스 1. 복사 인터페이스 2. 고정 인터페이스 3. MDL 인터페이스 Section 04. 데이터 읽기/쓰기 캐싱 1. 데이터 읽기 동작 2. 데이터 저장 동작 Section 05. 주요 데이터 구조체 1. 파일 오브젝트 내의 주요 필드 2. 캐시 맵 3. 버퍼 컨트롤 블록 Section 06. 파일 크기에 대한 고려 사항 Section 07. 가상 주소 컨트롤 블록 배열 Section 08. 공유된 캐시 맵과 독립된 캐시 맵 Section 09. 캐싱의 사용을 위해 필요한 작업 1. Fast I/O 2. 파일을 열 때 처리하는 작업 Section 10. 캐싱의 종료 1. I/O 제거 요청 2. I/O 종료 요청 Section 11. VMM 및 I/O 관리자와의 통신 1. VMM과의 통신 2. I/O 관리자와의 통신 Section 12. 미리 읽기 기능 Section 13. 지연 쓰기 기능 09장 드라이버 작성 필수 예제 Filemon Section 01. 드라이버 개발 절차 1. 개발 내용 분석 2. 자료 수집 3. 관련 지식 습득 4. 샘플 프로그램 분석 5. 전체 구성도 작성 6. 전체 흐름도 작성 7. 세부 순서도 작성 8. 코딩과 디버깅 9. 작업 일지 작성 Section 02. Filemon 예제 분석 1. Filemon의 전체 구조 2. 주요 구조체 설명 3. 주요 함수 설명 | Special Page | 좋은 드라이버 개발자를 위한 제언 1. 프로젝트와 관련된 지식을 습득하라 2. 문서를 작성하는 것은 기본 3. 전문가가 되라 10장 파일 액세스 제어용 드라이버 개발하기 Section 01. 드라이버의 개발 절차 1. 관련 자료 수집 2. 주요 기능 정리 3. 새로운 구조체 생성 4. 전체 구성도 설계 5. 기본 흐름도 설계 6. 세부 순서도 작성 Section 02. SecuPF 함수 1. DriverEntry() 함수 2. 기본 함수들(Create, Close, Unload 함수) 3. 애플리케이션과 통신 4. 볼륨 후킹 5. Fast I/O 함수들 6. 파일의 전체 경로 얻기 7. 폴더 내의 파일 접근을 제어하는 함수 Section 03. SecuPF 드라이버 개선법 11장 실시간 암복호화 Section 01. SecuEFS 드라이버란? Section 02. 드라이버 개발 절차 1. 기본 개념 2. 관련 자료 수집 3. 주요 기능 정리 4. 구조체 정보 변경 5. 전체 구성도 설계 6. 기본 흐름도 7. 세부 순서도 설계 Section 03. 실시간 암복호화 드라이버의 동작 1. DriverEntry() 함수 2. SecuEFSDeviceRoutine() 함수 3. SecuEFSFastIoDeviceControl() 함수 4. SecuEFSHookRoutine() 함수 5. SecuEFSHookDone() Section 04. SecuEFS 드라이버의 개선점 12장 폴더 숨기기 예제 Section 01. SecuHF 드라이버의 개요 1. IRP_MN_QUERY_DIRECTORY 2. IRP_MN_NOTIFY_CHANGE_DIRECTORY Section 02. 드라이버 개발 절차 1. 관련 자료 수집 2. 주요 기능 정리 3. 구조체 정의 4. 전체 구성도 설계 5. 전체 흐름도 작성 6. 세부 순서도 작성 Section 03. 폴더 숨김 드라이버의 내부 코드 1. DriverEntry() 함수 2. SecuHFFastIoDeviceControl() 함수 3. 폴더 숨기기 절차 Section 04. SecuHF 드라이버의 개선점 부록 Appendix A. 디바이스 드라이버 컴파일하기 Appendix B. 파일 시스템 필터 드라이버 작성 시 주의할 점 Appendix C. 시스템 부팅 절차 Appendix D. Attach 함수 |
|
01장_파일 시스템 드라이버에 대해서
드라이버 개발 시 필요한 기초적인 내용을 소개한다. 드라이버 개발의 기본 환경인 Windows 시스템 구조와 드라이버의 종류에 대해 살펴본 다음, 파일 시스템의 종류에 대해서 언급한다. 마지막으로 이 책에서 설명하고자 하는 필터 드라이버의 동작 원리에 대해 설명한다. 02장_드라이버 동기화 매커니즘 드라이버 개발 시 데이터 보호를 위해 사용되는 동기화 처리 방안을 다룬다. 파일 시스템 필터 드라이버뿐만 아니라 WDM 드라이버 및 레거시 드라이버(Legacy Driver) 제작에 필요한 스핀 록과 디스패치 오브젝트들에 대한 전반적인 내용을 소개한다. 03장_프로세스와 스레드 컨텍스트 파일 시스템 필터 드라이버 개발에 있어서 알아두면 유용한 컨텍스트에 대한 내용을 소개한다. 컨텍스트의 개념과 함께 드라이버 코드가 실행되는 프로세스와 스레드 컨텍스트를 이해하고, 이러한 개념들이 파일 시스템 필터 드라이버 개발에 왜 중요한지 언급한다. 04장_I/O 관리자 IRP의 생성과 관리를 담당하기 위한 I/O 관리자에 대한 내용을 다루었다. Windows 운영체제에서 I/O 시스템의 설계 목표와 함께 I/O 관리자의 역할과 기능을 중심으로 소개한다. 또 드라이버 개발 시 가장 핵심이 되는 주요 구조체에 대한 내용을 설명한다. 05장_데이터 버퍼에 대해서 애플리케이션과 드라이버 간 통신 시 사용되는 데이터 버퍼에 대한 내용을 다룬다. 데이터를 읽거나 저장하기 위해 사용되는 데이터 버퍼의 서로 다른 세 가지 사용법을 소개한다. 또한 개발자가 지정한 명령을 드라이버에 전달하기 위해 사용되는 방법에 대해서 설명한다. 06장_IRP의 처리 과정 IRP의 생성부터 소멸까지의 전체 내용을 다루었다. 전반적인 IRP에 대한 내용과 함께 드라이버에서 IRP를 처리하는 과정, 그리고 동기식 IRP와 비동기식 IRP에 대해서 설명하고 있다. 마지막으로 IRP의 처리 과정을 통해서 어떻게 IRP를 처리할 것인가에 대한 처리 규칙을 정리했다. 07장_가상 메모리 관리자 Windows 운영체제에서 메모리 관리와 관련된 내용을 다룬다. 가상 메모리의 탄생 배경과 함께 운영체제의 코드와 애플리케이션의 코드가 상주하는 영역에서부터 물리 메모리의 관리, 그리고 가상 메모리를 물리 메모리로 변경하는 과정 등을 설명한다. 또한 가상메모리 관리자와 파일 시스템 드라이버의 관계를 설명한다. 08장_캐시 관리자 파일 시스템 드라이버에서만 사용되는 캐시 관리자에 대한 전반적인 내용을 다룬다. 캐시의 종류와 함께 캐시 관리자가 기본적으로 제공하는 세 가지 종류, 그리고 파일의 데이터를 읽거나 저장할 때의 처리 과정을 살펴봄으로써 어떻게 데이터가 캐시와 관련되는지 알아본다. 09장_드라이버 작성 필수 예제 Filemon 파일 시스템 필터 개발자가 가장 많이 참고하는 예제 소스 중 하나인 Filemon을 다룬다. 이 장은 필자가 5년 이상 드라이버를 개발하면서 정리한 드라이버 개발 절차를 간단히 제시하고, 실제 참고가 되는 예제 소스인 Filemon의 분석 내용을 담고 있다. 10장_파일 액세스 제어용 드라이버 개발하기 세 가지 파일 시스템 필터 드라이버의 예제 중 첫 번째 예제로써 간단하게 파일을 제어하기 위한 드라이버의 개발 과정을 담고 있다. 9장에서 설명했던 개발 절차에 따라 필터 드라이버를 설계하고, 실제 개발된 필터 드라이버를 참고로 주요 함수들에 대해 설명한다. 11장_실시간 암복호화 파일 시스템 필터 드라이버를 활용하는 두 번째 예제로 데이터 실시간 암복호화에 대한 내용을 다룬다. 이 드라이버는 필자가 처음 파일 시스템 필터 드라이버를 배우면서 개발했던 암복호화용 드라이버의 버그를 수정하여 제시한다. 12장_폴더 숨기기 예제 파일 시스템 필터 드라이버에 대한 마지막 예제로 지금까지도 유용하게 사용되고 있는 폴더를 숨기는 방법에 대해서 소개한다. 폴더 숨김은 일반 컴퓨터 보안에서 응용되고 있는 기법인데, 이를 개발하기 위한 절차와 함께 주요 함수에 대해서 설명한다. 부록 초보 드라이버 개발자를 위해 디바이스 드라이버의 컴파일 과정을 그림과 함께 자세히 소개한다. 또 파일 시스템 필터 드라이버 개발 시 주의할 내용, Windows 운영체제의 부팅 과정을 설명한다. 마지막으로 필터 드라이버를 실제 감시 대상이 되는 드라이버에 추가시키는 세 가지 함수에 대해 설명한다. |
|
이 책은 현장에서의 오랜 실무 드라이버 개발 경험과 국내 최대의 드라이버 개발자 커뮤니티인 KOSR(www.kosr.org) 운영 노하우를 통해 운영체제 내부의 구조와 드라이버 제작 과정을 파헤치고 있다.
드라이버의 개념뿐만 아니라 개발 과정에서의 위험성과 운영체제의 특성에 관해 자세히 설명하고 있는 것이 특징이다. 또한 관련 프로그램을 예로 들면서 드라이버 개발의 개념에 접근할 수 있는 방법까지 제시하고 있다. 초보자들이 드라이버 개발에 쉽게 입문하도록 기초적인 지식은 물론, 실무에 바로 적용 가능한 응용 드라이버 소스를 담고 있어 PC 보안, DRM 등 여러 분야에 폭넓게 활용할 수 있다. 이 책은 크게 두 부분으로 구성되어 있다. 1~8장은 윈도우의 구조, 드라이버 동기화 매커니즘, 스레드 컨텍스트, I/O 관리, 데이터 버퍼, 가상 메모리 관리, 캐시 관리, IRP 처리 등 드라이버 개발에 필요한 이론적인 기초를 다진다. 9~12장은 이 이론을 바탕으로 실제 파일 시스템 필터 드라이버 예제를 소개한다. 개발자들이 많이 참고하는 Filemon 예제를 비롯해 간단하게 파일을 제어하는 드라이버, 가장 개발이 어려운 데이터에 대한 실시간 암복호화 처리 드라이버, 지금까지도 유용한 보안 기법으로 쓰이는 폴더 숨김 예제를 다룬다. 드라이버 개발은 일반적인 프로그래밍 방식과 차이가 큰 생소하고 어려운 분야라 개발을 중도 포기하는 경우가 많다. 이 책이 그 문턱을 낮추고 드라이버 개발의 내부까지 익히는 좋은 길잡이가 되어 줄 것이다. 또한 커널 레벨 프로그래밍에 관심 있는 이들의 호기심을 해소시켜 줄 것이다. |