Windows内核编程 - (EPUB全文下载)
文件大小:0.44 mb。
文件格式:epub 格式。
书籍内容:
Windows内核编程
第1篇 基础篇
第1章 内核编程环境
第2章 内核驱动运行与调试
第3章 内核编程基础
第4章 应用与内核通信
第5章 64位和32位内核开发差异
第6章 内核编程技巧
第2篇 过滤篇
第7章 串口的过滤
第8章 键盘的过滤
第9章 磁盘的虚拟
第10章 磁盘的过滤
第11章 文件系统的过滤与监控
第12章 文件系统透明加密
第13章 文件系统微过滤驱动
第14章 网络传输层过滤
第15章 Windows过滤平台
第16章 NDIS协议驱动
第17章 NDIS小端口驱动
第18章 NDIS中间层驱动
第3篇 应用篇
第19章 IA-32汇编基础
第20章 Windows内核挂钩
第21章 Windows通知与回调
第22章 保护进程
第23章 代码注入与防注入
附录A 如何使用本书的源码
附录B 练习题
反侵权盗版声明
第1篇 基础篇
本篇从初学者角度出发,介绍Windows内核的基本概念、开发环境的搭建、系统机制以及内核编程的技巧。
第1章与第2章是本书最为基础的部分,介绍了内核编程的基本概念与开发环境搭建,初学者应该首先学习这部分内容。
第3~5章重点介绍了系统的常用机制,这些机制的使用会贯穿本书所有章节,掌握这些常用机制是对内核开发者最基本的要求。
第6章介绍了内核编程的注意事项与技巧,这些注意事项与技巧可以帮助初学者少走弯路,快速入门。
第1章 内核编程环境
欢迎选择内核编程这门技术,这是一个充满神奇色彩与挑战的领域,在阅读本书前,需要进行术语约定与名词解释,以保证读者在后面的阅读中可以畅通无阻。
请注意,因为大部分Windows驱动程序都是内核驱动(Kernel Driver),所以本书中,不区分“驱动编程”与“内核编程”。同时,也不区分“内核模块”(Kernel Module)、“驱动程序”(Driver)与“内核程序”,这三个词汇都指本书中编译出的扩展名为“.sys”的可执行文件(注意,内核模块的扩展名一般是.sys,但是这个是非强制的,可以是其他扩展名,也可以没有扩展名)。同理,本书也不区分“应用层”与“用户态”。
本书和一般“驱动开发”书籍不同的是,本书专注于对较通用的内核程序的开发,并不介绍针对某种硬件,比如声卡、显卡、USB等的驱动程序的开发。
本书的许多内容涉及各种不同的内核驱动程序,比如文件系统驱动(File System Driver)、硬件设备过滤驱动(Filter Driver)及网络驱动(Network Driver)。但是开发目的,并不是为了驱动某个硬件,而是要在通用的Windows上实现某种功能。
驱动可以分为不同的类型,如NT驱动、WDM驱动、WDF驱动等。简单来说,NT驱动是最简单的驱动模型,不支持硬件特性;WDM驱动是在NT驱动基础上引入的一套驱动模型,支持即插即用、电源事件等特性;WDF驱动是对WDM驱动的封装与升级,屏蔽了部分细节,简化了大量接口。这三种类型的驱动大同小异,但NT驱动是所有驱动类型中的基础,本书后面章节的内容基本上也是基于NT驱动,所以除非特殊说明,否则本书所提及的驱动都泛指NT驱动。
Windows上内核态(Kernel Mode)编程和用户态(User Mode)应用编程有很多不同的地方。初次学习,很多读者会关心如何开始动手实践。为此,本章首先重点介绍如何在Windows平台上搭建内核编程环境,其中包括Visual Studio的下载,WDK的下载以及编译环境设置。
对实际上机暂时没有兴趣,或者已经做过驱动开发的读者,可以跳过第1章。
1.1 下载开发编译环境
1.1.1 编译环境介绍
在若干年前,驱动程序的编写和编译是两道独立的工序,开发者可以在Visual Studio或者其他代码编辑工具上编写驱动代码,然后通过WDK(Windows Driver Kit)来编译驱动。WDK是微软公司专为驱动开发者提供的一套开发包,里面包含了驱动开发所需要的头文件、链接库文件,以及内核驱动的编译程序。
WDK有不同的版本,一般来说,WDK的版本会跟随操作系统的版本而变化,不同版本的WDK对应着不同版本的Windows操作系统。如WDK 7600版本,其中7600表示操作系统的Build号;但有些WDK版本没有Build号,如WDK8.0版本,其中8表示Windows 8;再例如WDK10版本,10表示Windows 10,由于微软的更新策略,Windows 10作为最后一个Windows大版本,后面不会再出现类似Windows 11之类的版本,所以对于Windows 10版本的WDK,后面还会跟随着系统的版本号,如WDK 10 1709,其中10表示Windows 10,1709表示Windows 10的版本。
读者可能已经被上面的版本号绕晕了,不用担心,笔者下面为读者梳理清楚微软的版本号。上面提及的版本号无非有三类,比如Windows 10 1709 16299这个版本的系统,其中10表示操作系统的代号,类似Windows XP中的XP,Windows 7中的7;1709是系统的一个版本号,用于标识系统的具体版本,最后的16299是build号,读者可以将build号简单地理解成操作系统被编译构建时的一个号码,这个号码随着系统被编译构建的次数递增。
这里读者可能会有一个疑问,这么多的WDK版本,简直太混乱了,究竟应该下载哪一个版本呢?一般来说,每个版本的操作系统,都会对应一个版本的WDK,如果读者只是为某一个具体版本的操作系统开发驱动,如Windows 10,那可以选择对应的WDK 10;但如果读者开发的驱动需要运行在Windows XP至Windows 10系列的系统上,则需要使用低版本的WDK,如WDK 7600,因为WDK 7600可以支持Windows XP系统,并且低版本WDK编译出来的驱动,可以在高版本的操作系统上运行。看到这里,读者可能会问,既然WDK 7600编译出来的驱动,可以运行在Windows XP至Wi ............
以上为书籍内容预览,如需阅读全文内容请下载EPUB源文件,祝您阅读愉快。
书云 Open E-Library » Windows内核编程 - (EPUB全文下载)