书籍作者:谭文 | ISBN:9787121384882 |
书籍语言:简体中文 | 连载状态:全集 |
电子书格式:pdf,txt,epub,mobi,azw3 | 下载次数:1494 |
创建日期:2021-02-14 | 发布日期:2021-02-14 |
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板 |
本书前身是《Windows内核安全与驱动开发》,重点围绕Windows操作系统的机制介绍内核安全编程技术,除了少数特殊章节,大部分内容均适用于Windows 2000至Windows 10操作系统,体系结构覆盖32位以及64位。同时本书也深入浅出地介绍了汇编基础和系统内核机制。本书共分为三篇,分别从不同的角度介绍内核编程技术。第1篇面向零基础的读者,其中“内核编程环境”“内核驱动运行与调试”“内核编程基础”重点介绍与内核编程相关的基本知识、开发环境搭建,以及基本的编程机制。“应用与内核通信”和“64位和32位内核开发差异”主要介绍应用层编程与内核编程的数据交互。*后,介绍了编程过程所需注意的事项,以及设计技巧。第2篇结合操作系统的机制,从*简单的“串口的过滤”开始,介绍了“键盘的过滤”‘“磁盘的过滤”“文件系统的过滤”“Windows过滤平台”“NDIS协议驱动”“NDIS小端口驱动”,以及“NDIS中间层驱动”。覆盖了整个Windows系统的主流过滤框架,并且深入剖析了文件透明加密解密的原理。第3篇侧重安全技术,重点介绍了安全编程所需要使用的知识,如“IA-32汇编基础”“Windows内核挂钩”“Windows通知与回调”“保护进程”,以及“代码注入与防注入”。本书由具有十多年终端安全开发经验的从业人员编写,以简洁实用为准则,理论与实际案例相结合。适用于计算机软件安全从业人员、有一定C语言基础且对计算机安全感兴趣的爱好者。
谭文,网名楚狂人,已有十七年客户端安全软件开发经验。先后在NEC、英特尔亚太研发有限公司、腾讯科技任职。曾经从事过企业安全软件、x86版Android的houdini项目、腾讯电脑管家、腾讯游戏安全等开发工作。对Windows内核有深入研究,现任腾讯科技游戏安全团队驱动程序开发负责人,专家工程师。陈铭霖,十余年终端开发经验,先后任深信服科技架构师、腾讯科技高级工程师;曾主导腾讯电脑管家内核安全驱动开发,以及疑难病毒打击项目、腾讯Windows服务器安全开发项目;对Windows及macOS系统有深入研究,在To C以及To B行业有丰富的开发经验,现任数篷科技高级架构师,终端安全负责人。
到现在仍清晰记得初见铭霖兄时,他儒雅、谦逊,令人印象非常深刻,而我早在此之前就拜读过铭霖兄的著作。
现在回想起来,我不由得对那本书有了更加深刻的理解。
记得那是在2015年年末,当时我们正在策划规模约1000多个课时的系统内核安全课程,教研部的负责人当时向我推荐了一本集大成之作,并准备以此书为模板策划课程的大部分内容,而这个负责重新整理编辑以前中国内核领域两本大作的编者正是铭霖兄。
当时的课程研发工作从2015年年末一直持续到了2017年年初,虽然在此之前我们教研组的老师,以及课程研发的负责人都做过内核安全相关的研究,但仍然被其中冗杂的规则与部分讳莫如深的非公开技术细节拖住了脚步,整个研发工作进展颇为艰辛,而正是铭霖兄的那本著作,为我们艰难的研发之旅点亮了一盏明灯,大大加快了我们课程研发的步伐,也正是因为这次经历,使得陈铭霖这个名字印在了我的脑海里。
后来在一次偶然的机会下,得知铭霖兄正在写一本新的与Windows内核编程相关的书籍,顿时激起了我的好奇心,由于我也曾出版过两本书籍,深知耕耘文字的不易,像系统内核编程这种前后依存关系紧密、内部知识点交织复杂的书籍更是难以掌控,除了要能统领此领域内各技术细节外,还要有一种不为功利、默默耕耘的精神追求,这在当前国内的技术领域内是非常宝贵且罕见的。
然而缘分是个奇怪的东西,经过我一位挚友的介绍,后来有幸能与铭霖兄相识,我们初见便促膝长谈了近6个小时,至今铭霖兄那谈到内核编程话题时滔滔不绝的样子仍历历在目。
在我们谈到要出版的新著作时,其实我内心是有所疑虑的,虽然铭霖兄有过出版经历,并且在腾讯、深信服科技等顶级安全实验室的多年工作中积累了大量的宝贵经验,但当时铭霖兄也正值创业初期,如何能在繁忙且高压的创业工作之余照顾好家人,还要再安排出如此巨大的精力去沉淀梳理自己的所思所想?我不由得替铭霖兄默默担忧。
而一切忧虑在铭霖兄邀请我查看其书稿时瞬间烟消云散,当我看到这本600余页的“大部头”时,不由得替铭霖兄高兴,也不由得替国内的内核开发从业者们高兴。
这是一本从初学者角度出发,以内核安全高度为终点的书,本书从最基本的Windows内核级基本概念开始介绍,只要读者具备C语言基础就可以读懂,并在第二篇中由易到难地介绍了各种内核编程中的过滤技术,最后拔高到内核安全,不夸张地说,如果读者想要学习Windows内核安全,有这本书基本就够了。
随着网络空间安全的逐步发展以及对个人隐私的逐步重视,这几年略微降温的内核编程在个人隐私保护以及防泄密等领域渐渐升温,内核编程即将迎来第二春,而这本书不失为各位读者把握住这一技术潮流的最有利武器。
最后,在有幸作序之余,祝愿这本书能有更多的读者,能有更多的认可,能发挥更多的价值,希望这本书能成为国内Windows内核编程的经典著作。
任晓珲
十五派信息安全教育创始人
《黑客免杀攻防》作者
黑客反病毒组织创始人
2019年11月
前 言
Windows是当前主流的闭源操作系统,从第一个NT内核的Windows 2000至今,已经有20年左右的历史,在这漫长的20年内,为了满足日益变化的业务需求,以及应对不断升级的安全挑战,Windows操作系统内核一直不断升级与完善,其主要表现是内核中增加了新的逻辑模块与安全机制,其中最为典型的是64位的Windows操作系统内核对比32位内核增加了“PatchGuard”模块,这个模块的主要作用是检查内核是否被第三方内核模块“污染”,目的是防止病毒木马使用内核挂钩或劫持的技术篡改内核。新的安全机制往往会对安全开发者带来一定的影响,其原因是一些软件过度依赖系统未公开的底层技术,而正确的做法是开发者需紧密依赖系统提供的公开机制,利用可利用的机制完成相同的功能,这要求开发者对整个Windows内核机制有深入的理解,作者编写本书的目的之一,正是希望读者能对Windows内核有更全面、更深入的认识。
本书的前身是《Windows内核编程与驱动开发》,本书在前者的基础上,删除了部分过时章节,重写了大部分基础章节并新增了部分当前较为热门的技术章节,同时为了使本书内容更为聚焦,删除了与Windows内核关联性不强的内容。
本书面向的人群主要有以下几类。
? 有一定C语言基础,有兴趣了解Windows内核的读者。
? 有一定C语言基础,并且希望从事Windows内核开发的读者。
? 有一定基础的Windows内核开发者,有意愿进一步提高的读者。
本书共分为三部分。第一部分,从初学者的角度出发,介绍Windows内核的基本概念、开发环境的搭建、系统机制以及内核编程的技巧;其中,第1章与第2章是本书最为基础的部分,介绍了内核编程的基本概念与开发环境搭建,初学者应该首先学习这部分内容。第3~5章重点介绍了系统的常用机制,这些机制的使用会贯穿本书所有章节,掌握这些常用机制是内核开发者最基本的要求。第6章介绍了内核编程的注意事项与技巧,这些注意事项与技巧可以帮助初学者少走弯路,快速入门。
第二篇为过滤篇,是本书的核心内容,分别详细介绍了Windows系统的过滤机制。首先以最简单的串口过滤驱动开始,剖析了一个过滤驱动的最基本要素,然后分别介绍了键盘过滤、磁盘过滤、文件过滤以及网络过滤,由易到难;对于网络过滤,本篇从不同的网络层次与角度介绍了TDI、WFP以及NDIS等机制。本篇内容涵盖了目前Windows系统绝大部分主流的过滤技术。
第三篇为应用篇,结合前面两篇的知识点,本篇综合介绍了Windows安全领域所需的其他技术,通过对本篇的学习,读者将会发现安全技术并不局限于系统提供的现成机制。本篇选取了目前主流安全软件所使用到的典型技术,深入浅出,首先介绍了CPU的基本知识点,然后基于上述知识点,第20章重点介绍了Windows下的挂钩技术,挂钩技术常被用于安全软件的检测、审计、拦截等技术;第22章与第23章从守护的角度,为读者介绍了自我保护技术。
笔者拥有十余年的Windows开发经验,主导过数据安全、主机安全、服务器安全等项目,涉及to C(面向消费者群体)和to B(面向企业用户群体)行业,深知Windows内核的复杂性,由于行业的特殊环境,to C和to B的内核技术方案选型不尽相同,因为不同的用户群体,其主机上软件存在参差不齐的同类安全软件,安全软件之间也存在大量的兼容性问题,这些问题的引入使得原本并不简单的内核编程更为复杂化。记得有很多读者问过我一个相同的问题:如何编写一个稳定的内核模块。这个问题其实没有标准答案,从笔者的经验来看,读者首先应该养成良好的编程习惯,然后深入理解系统的各种安全机制以及拦截方法,在编写代码时候,请思考如下几个问题:①这句代码是否会被其他软件拦截导致失败;②这句代码是否会触发一些第三方的回调函数;③这句代码失败后应该怎么处理。本书在为读者介绍技术的同时,也为读者介绍了笔者的内核开发心得体会与技巧,希望这些体会与技巧可以为读者带来更多的思考。内核编程类似于武林秘籍的内功修炼,需要时间沉淀,并非一蹴而就,请读者赋予更多的耐心,“成功之道,贵在坚持”。
技术书籍写作的工作量巨大而繁杂,在整个写作过程中,要感谢安全圈内朋友的支持,尤其感谢数篷科技的科学家吴烨以及CTO杨一飞、架构师王柏达,他们在工作中为我提供了大量的帮助,使得本书能顺利出版。感谢我的父母、妻子、女儿以及其他家人,在每天有限的时间里,需要花费更多的精力在写作上而缺少对他们的陪伴,尤其是我的女儿,在深感愧疚的同时,也感谢他们的理解与支持;感谢上一本书籍的热心读者,他们反馈的问题更好地完善了本书内容。最后,希望本书能为安全圈内的读者或者即将进入安全圈的读者带来更大的收获。
陈铭霖
2019年11月于深圳
本书的作者和贡献者
本书的前身是《Windows内核安全与驱动开发》,除了直接编写本书的作者外,也有业内技术人士协同编写了部分章节,所有作者一并介绍如下:
谭文,网名楚狂人,已有十七年客户端安全软件开发经验。先后在NEC、英特尔亚太研发有限公司、腾讯科技任职。曾经从事过企业安全软件、x86版Android的houdini项目、腾讯电脑管家、腾讯游戏安全等开发工作。对Windows内核有深入的研究,现任腾讯科技游戏安全团队驱动程序开发负责人,专家工程师。指导本书主题思想,编写了核心过滤章节,并审核了所有新章节。
陈铭霖,现任职数篷科技终端安全负责人,负责终端安全开发,之前曾任腾讯科技高级工程师,主导腾讯电脑管家客户端安全项目也曾任深信服科技Windows架构师以及虚拟化产品架构师。有十余年终端安全开发经验,覆盖to C、to B及to G行业,并具有千万级DAU安全产品的研发经验。主导了全书内容,重写了大部分章节,新增了部分章节。
张佩,Windows驱动开发技术专家,长期从事声卡、显卡等硬件驱动程序的开发、调试工作。目前在英特尔亚太研发有限公司平板电脑相关部门工作。曾著有《竹林蹊径——深入浅出Windows驱动开发》一书。为本书贡献了若干个网络驱动相关的章节。
杨潇,曾任Windows客户端安全工程师,先后在上海贝尔和北京Comodo工作。后来离职创业,目前为西安一家医疗科技公司的CEO。编写了本书磁盘驱动相关章节。
邵坚磊,网名wowocock,业内著名的Windows安全技术专家。长期从事Windows安全相关的内核开发工作。目前在奇虎360任职。编写了本书部分章节并提供了部分代码实例。
卢冠豪,中国台湾人。毕业于辅仁大学资讯工程学系。长期从事C、C++、网络与通信程序设计工作,参与过“端点安全”“资产管理”“网络流量分析”等项目的开发与维护,擅长Windows项目开发。编写了本书文件系统微端口过滤一章。
本书读者反馈的QQ群是4088102,想了解更多信息也可以关注微信订阅号:终端安全编程。