不幸的是,对于一个初学者来说,就算一个这些条件都具备并且勤奋有耐性,能够做一些相对复杂的内核项目至少也是要以年为单位计的时间辛勤换取。现在由于网络化的深度发展,很多软件项目都不得不把安全作为一个重要的功能考量,而Windows信息系统的安全与操作系统内核关系密切,很多系统安全工作都离不开内核相关开发。鉴于Windows上内核开发的客观难度,很多安全类项目的开发周期都是以N年为单位计算,相关的核心技术难点很多都未公开。
多年来在OSR论坛,国内的驱动开发网论坛(driverdevelop)以及“第八个男人(debugman)”广泛被发问、讨论。但是极少有一个完整的解决方案出台,这造成了核心安全技术的长期神秘感,而参与其中者由于诸多的不确定难度因素,在一定程度受阻于此。由于这些不确定性,公司也因为对驱动内核开发难以确定项目进度而苦恼不堪。
市场上最近出现的《寒江独钓――Windows内核安全编程》是楚狂人等的又一重磅力作。作者对内核驱动开发中的广泛热点问题进行讲解分析。其中包含网络游戏保护、透明加密、反病毒驱动、系统还原、主机网络防火墙等最热门话题。这些话题中的每一个,都是可以写满满的一本大部头来介绍的。而《寒江独钓》的独特之处在于,对这样复杂的话题采取难点突破、辅助高质量代码说话的科学方法,将话题中的内容介绍得明明白白。学习者可以通过阅读本书(书中内容很多都是其他公开文档和书籍中没有介绍过的技巧和经验),辅助以光盘代码来学习。代码都是可以编译测试的,其内容含量完全可以成为读者开始这些高级话题的坚实基础,在作者铺就的一条相对平坦的路线上降低内核开发难度曲线。
就我而言,比较感兴趣的是透明加密部分。作者在本书中最出彩,将以前国内外从未公开的加密标识做了详细的介绍。这个是透明加密研究者都绕不过去,引无数英雄折腰的技术瓶颈。作者的文字介绍连同代码一起,加密标识部分难点你也可以很容易通过,当然作者也将透明加密相关的完整流程一一地介绍清楚,像区分进程的普通做法、内存映射与文件缓冲文件加密表操作、加密标识的查询、添加、删除细节,以及如何解决重入打开。最后是加密、解密IRP处理过程、基本上全流程的介绍,读者通过这些重点技术基本上就可以站在文件透明加密的技术潮头开始自己的技术研究了。你可以用以这些支持记事本加密的技术为基础,把焦点集中在对WINWORD类复合文档加密、与杀毒软件兼容,以及加密算法(比如AES,DES等)及商用稳定性与性能的研究中。在这个过程中,可以做出商用级别的透明产品,这都全拜作者给我们提供的诸多技术秘密。
对文件系统过滤驱动,以及微过滤驱动的介绍也是内核安全编程中使用很多的内容,同时文件系统过滤驱动和微过滤驱动也是透明加密的技术骨架与基础架构,作者对这些内容的介绍将整个文件系统类安全内核编程的图谱完整化、有机化。当然,文件代码中的很多技术基本内容由于书中篇幅所限制,书中可能并没有去详细介绍,建议读者可以结合Rejeev Nargar的《Windows File System internals》(驱动开发网名《Windows NT文件系统驱动开发指南》)IFSHelp,OSR论坛文章,寻找更多细节来丰满自己的认识。
对于书中的其他章节,比如磁盘过滤,作者介绍了类似影子系统的还原系统。这个也是近几年内核驱动研究的热点话题。还原系统在学校、网吧、企业等环境中减少管理员管理维护难度与成本,在一定程度上对了解公众环境的病毒感染问题都有重大意义。NDIS、TDI网络相关驱动,作者也用了大量章节介绍。这些技术可以利用在网络主机防火墙、ARP防火墙以及VPN等安全应用中,如果对这些技术有兴趣那么详细阅读一下一定有所帮助。
(《寒江独钓――Windows内核安全编程》,谭文、杨潇、邵坚磊著,电子工业出版社,2009年6月)