主要作者: 谭文,C程序员。1980年生于湖南。2002年毕业于西安交通大学自动控制系。毕业后一直从事各类系统底层软件的开发设计工作;目前在英特尔在上海紫竹科技园的研发中心参与不同平台二进制指令动态翻译系统的项目开发。爱好聊天、发帖。曾著有《天书夜读——从汇编语言到Windows内核编程》一书。编写本书的第1~3,7,8,10~12章,并统稿全书。 杨潇,C程序员。1981年生于陕西。2006年毕业于西安交通大学自动控制研究所。一直从事各类系统软硬件接口部分的开发设计工作;目前在Comodo北京研发中心任职,负责各类Windows/Linux相关驱动的开发。爱好音乐、旅游和摄影。负责编写本书的第5,6章。 邵坚磊,前执业医生,现C、汇编程序员。1976年生于上海,毕业于上海交通大学计算机系,具有临床医学和计算机专业的双学位。长期致力于x86体系架构与Windows系统底层技术的研究与相关开发工作;目前在NEC-AS上海研发中心主持信息防泄密软件的Windows内核驱动的开发工作。是著名的反rootkit工具DarkSpy的作者之一。曾与谭文合著《天书夜读——从汇编语言到Windows内核编程》。爱好网游。编写本书的第4章。 其他有贡献的作者: 卢冠豪,C程序员。1981年生于中国台湾。毕业于辅仁大学资讯工程学系。长期从事C、C++、网络与通信程序设计的工作;参与过“端点安全”、“资产管理”、“网络流量分析”等项目的开发与维护;擅长Windows项目开发。平时爱好吸收与科技电脑有关的新知识。受邀编写本书的第9章。 张佩,C程序员,1982年生于江苏扬中,毕业于苏州大学。近三四年来,一直从事底层软件开发工作,乐此不疲。因偶然的机会,在NEC-AS公司加入了Infocage安全软件开发项目组,从此与底层驱动开发结缘。现工作于上海一家公司,服务于美国Avid公司音频驱动项目。此人好读书,好写文章,好交朋友。为人善,与人交善,诚善人也。受邀编写本书的第13章。 其他有贡献者: 杨瑾,西安交通大学在读博士生。在参与导师的项目过程中,因技术的需要阅读了本书的原稿,修改了书中的许多细节错误与纰漏,并按照本书介绍的步骤,编译、安装和测试了本书源码光盘上的部分代码。是本书最主要的审校者。 张帆,1980年生于北京,毕业于北京理工大学电子工程系。目前在赛门铁克北京的研发中心从事信息安全方面的工作;著名畅销书《Windows驱动开发技术详解》的作者。阅读了全书的原稿,并给出了许多指导性的意见,并为本书作序。 张银奎,国内著名的调试专家。目前和本书作者谭文在同一研发中心工作,著有《软件调试》一书。阅读了本书的全部原稿,修改了书中多处细节,给本书作者许多指导性的意见,并参与了本书的命名。 马勇,驱动开发网的站长,国内知名的文件系统驱动专家。“驱网核心技术丛书”的组织和策划者之一,阅读了全书的原稿,并给出了许多指导性的意见。 序 早在一年前,谭文就和我谈过想写一本既能深刻介绍Windows内核架构,又能结合具体Windows驱动程序开发实例的书。在一年的时间中,谭文一直在构思酝酿。那时候他的《天书夜读——从汇编语言到Windows内核编程》已经出版,《天书夜读》所涉及的内容很广,但就如同书名一样,它的内容不太适合刚刚涉猎Windows内核编程的程序员,反而更像一本供黑客学习的读物。书中翔实地介绍了很多反汇编技巧的技巧,非常的精辟,但对于新手来说,容易对Windows内核编程产生畏惧感。 当我第一次读完《寒江独钓——Windows内核安全编程》的初稿时,我觉得本书非常适合Windows内核程序的入门。Windows内核程序一直被认为是只有高手才能涉及的领域,很多程序员对这种开发都觉得非常神秘。我觉得这是一种错觉,其中有一个很重要的原因就是国内很少出版这方面的书籍。这本书很好地弥补了这方面的空白,我相信大部分读者读完后,都会觉得Windows内核开发程序不再那么神秘。的确,微软自从Windows 2000版本以后,内核的架构变化不是很大。当然,这并不意味着你读完本书后,你就可以对内核开发游刃有余了,这需要你对每一个细节反复研究,并且多做试验。 编写Windows内核程序,就意味着这个程序可以执行任意指令,可以访问计算机所有的软件、硬件资源。因此,稍有不慎就有可能将系统变得不稳定。Windows的设计者设计了各种驱动模型或者框架,如NT式内核驱动模型、WDM框架和新推出的WDF框架。在这些模型框架下编程,就使内核编程变得简单,同样也降低了内核程序崩溃的机会。其实,Windows驱动程序员和黑客都在写内核程序,唯一不同的是驱动程序员按照微软设计的模型写程序,而黑客可以不按照这些框架写。Windows设计的这些框架,可以将操作系统的原理隐藏起来,只暴露一些接口,驱动程序员只要把这些接口写好就可以了。从这个角度看,驱动开发并不难,尤其是读完本书后,更会觉得不难了。但是想完成一些特殊的功能,如内核级隐藏进程等,Windows的这些框架就没什么用处了,程序员就需要对Windows内核有全面的了解,通过直接修改Windows内核来实现这些目的。往往黑客对这种技术乐此不疲,通过修改Windows内核,你会发现你的程序几乎无所不能。 编写内核程序是一件很痛苦的事情,回想起这些年学习内核程序开发的经历,真是感慨万千。就如同谭文所说:编写内核程序的人从某种程度讲是孤独的。当一个经验并不丰富的小程序员面对庞大复杂的并且不开源的Windows框架时,那是一种怎样的无助感啊!谭文是我比较钦佩的程序员之一,他对技术非常执着,并且精力充沛。内核程序的知识涉及面非常广,不同类别的内核程序差别也特别大,他几乎都有所涉猎。相信读者在读完这本书后,能对Windows内核开发有比较详细的了解,同时也能结合书中的实例写出很优秀的内核程序了。 张 帆 2009年5月1日于北京