什么是Windows内核编程?

上述文字由《天书夜读:从汇编语言到Windows内核编程》作者  谭文  提供

Linux的内核编程大家都是比较熟悉的。而Windows内核编程则不大为一般读者所熟悉。常常有这样的问题:

“你又没有Windows的代码,你如何搞内核编程?”

“除了微软的人,难道还有人做Windows内核吗?”

“Windows内核编程有用吗?”

其实Windows内核编程不但有用,而且常用。很多我们每天都使用的软件,就毫无疑问的使用了Windows内核编程的技术。最典型的就是实时监控的杀毒软件。此外还有防火墙、虚拟光驱、以及90%的驱动程序。这些程序的有一个共同的特点,他们的一部分组件,是作为Windows的一部分,能对Windows上运行的所有的应用程序起作用。

因此内核编程的应用,往往给传统软件带来更强的功能,实现技术上的飞跃。

举个例子。我们常常听说,对文件进行加密,可以使文档更加安全。对文件加密并不需要任何内核组件。我们可以写一个应用程序,读入文件,加密数据,然后重写为一个加密文件。解密也可以同样如此。

但是实际上这并不满足一般的用户需求。对一个公司的员工来说,那些“重要的文档”很可能就是每天工作所用的文件。想象一下,他必须要每天从服务器上下载加密的文件,然后用解密工具解密。然后用Office开始工作。工作完毕后,用加密工具加密,再上传,然后删除工作文档。且不说大部分时间文档是以解密的方式保存在硬盘上的不安全性,这个工作流程是可以接受的吗?没有人会接受的。

比较“人性化”的方式就是让Office可以直接打开已经加密的文档。保存的时候,直接就保存成加密的文档。硬盘上,这个文档始终是加密的。而且对合法的用户透明。对非法的用户,则只能看见密文,从而无法编辑也无法阅读。而且也不仅仅Office,还有AutoCAD、Visual Studio、Photoshop等等用户可能用于编辑机密文件的所有的工具。这是可以实现的吗?如果我们不能去修改Office和其他的工作软件。

这当然是可以实现的。既然我们编写Windows内核程序,当然可以让Windows的文件系统从硬盘读取文件的时候,对特定的进程进行特别的解密。等这些软件读取到数据的时候,它们读到的已经是正常的数据了。这个过程和实时扫描病毒的原理是一样的,使用一个文件过滤驱动程序。这就是读者可能已经听到过的文件透明加密技术。

在和《天书夜读:从汇编语言到Windows内核编程》一书同一系列的《寒江独钓——Windows内核编程与信息安全》(预计明年出版)中,对键盘过滤、硬盘过滤、文件过滤、网络过滤等安全相关的内核编程,都有详尽的讲解和例子。

内核编程的另一个特点是:这些代码运行在R0级。R0级别是最高特权级别。对CPU有完全控制的能力。这非常的适合一些安全软件,当然也适合做破坏的工作。因为内核程序有最高(也就是根)权限,这样的技术在安全领域(或者破坏领域)被称为rootkit技术。rootkit技术是当前安全领域最热门的技术之一。

许多病毒使用了rootkit技术。用来隐藏病毒文件,窃取密码、发送攻击包等等。rootkit病毒感染后极难清除,在感染前提前防范是最有效的办法。

Windows内核确实没有公开源代码。但是MS提供Windows内核程序的开发包:WDK。WDK实际上主要用于开发驱动程序。而驱动程序基本上都是内核程序。WDK提供的头文件以及部分源代码,实际上就是Windows内核的代码的一部分。有部分驱动程序(比如FAT32文件系统)的代码是完全公开的。我们也可以在这里看到Windows内核开发者的代码风格。同时,微软也提供了所有Windows版本的符号表在网上供研究者下载。并提供了功能无比强大的调试器WinDbg。有了它们,你就可以轻松的调试Windows内核了。无论是你自己写的代码的部分,还是Windows内核开发者们编写的部分。虽然看到的是汇编语言,但是函数名和全局变量名都是存在的。而且,所有的这些(WDK、WinDBG,符号表)都是免费的。

那您还在等什么呢?欢迎进入Windows内核编程的世界!

本书购买地址:http://www.china-pub.com/209258

【书 名】天书夜读:从汇编语言到Windows内核编程
【作 者】 谭文,邵坚磊 著
【ISBN】 978-7-121-07339-7
【出版社】 电子工业出版社
【出版日期】2008年12月
【宣传语】
从貌似天书的汇编代码中,一探Windows底层的核心实现。
在开发中出现的问题,能从Windows自身找到答案!

什么是Windows内核编程相关推荐

  1. 2、从汇编语言到Windows内核编程笔记(2)

    内核线程 在驱动中生成的线程一般是系统线程.系统线程所在的进程名为"System". NTSTATUS PsCreateSystemThread( OUT PHANDLE Thre ...

  2. 寒江独钓Windows内核编程-双机调试1

    今天总结一下关于双机调试,前面一直使用的是DDK包进行NT式与WDM式驱动入门,至今已进入使用WDK包进行编程了,DDK包早已落后我只作为入门因为大体内容变化不大.我使用的书是<寒江独钓Wind ...

  3. Windows内核编程实现拦截Xuetr程序

    Windows内核编程实现拦截Xuetr程序 ----TTL 寒假的时候,开始学习windows内核编程,想走近windows的内部世界.由于微软对于windows并不开源,所以有些人开始质疑:学习w ...

  4. 【Windows内核编程】Win10/Win11通过PspCidTable取得EProcess

    温馨提示 本文的内容均在Windows 11 Enterprise(22000.466)版本下测试 不同版本的部分内容可能存在差异,但万变不离其中 [Upadate 20220803]经测试,本文内容 ...

  5. 【windows内核编程】vs2013+WDK8.1+winDbg+vmware win7虚拟机联调

    [我的]vs2013+WDK8.1+winDbg+vmwarewin7虚拟机联调 作者:zcr214 时间:2016/4/8 内核驱动开发,首先要配置开发环境,目前微软已经出到了vs2015+WDK1 ...

  6. Windows内核编程(三)-内核驱动运行与调试

    内核驱动运行与调试 驱动的运行 驱动的运行通过服务来实现. 微软规定,驱动文件必须经过微软的数字签名后,才可以运行在64位系统上,如果把没有经过签名的驱动直接放在64位操作系统中运行,结果是驱动加载失 ...

  7. Windows内核编程生成.sys文件需要签名才能加载

    作者最近因为在做内核驱动的作业,在本机WIndows10+WDK10上简单实现了一个驱动,满心欢喜放在Win7虚拟机里运行结果各种一直有提示需要签名,作者查了许多资料,包括开机F8取消强制签名,进入调 ...

  8. windows内核编程读书摘抄

    Windows API中的某些函数,比如Wi n E x e c和O p e n F i l e等,只是为了实现与1 6位Wi n d o w s程 序的向后兼容而存在,因此,应该避免使用.应该使用对 ...

  9. 西电网络攻防大赛Windows内核编程第3题

    一.题目: 编写程序,实现可注入dll模块到任意启动的程序,用户态界面模块完成选择dll和需要注入的程序,内核模块完成注入功能. 二.目前的思路: 1.先完成内核模块,实现注入dll模块到程序: 2. ...

  10. 寒江独钓-Windows内核安全编程(完整版).pdf

    寒江独钓-Windows内核安全编程(完整版).pdf   编写Windows内核程序,就意味着这个程序可以执行任意指令,可以访问计算机所有的软件.硬件资源.因此,稍有不慎就有可能将系统变得不稳定.W ...

最新文章

  1. Windows Server 2008英文正式版安装体验
  2. MySQL 优化上来就分库分表?面试官:根本不懂底层原理!
  3. linux rm 删除所有文件,linux无需rm就可快速删除大量文件
  4. 有事情不能第一时间给父母说
  5. 计算机没有游戏扫雷,系统没有扫雷游戏怎么办 简单几步轻松安装
  6. 一个小栗子聊聊JAVA泛型基础
  7. 举例 微积分 拉格朗日方程_Euler-Lagrange Equation (欧拉-拉格朗日方程)推导
  8. 查找算法——插值查找
  9. 在WSUS 3.0的环境中,部分客户机没有向WSUS服务器更新状态,该如何解决?
  10. 移动端车牌识别,小功能大作用
  11. 纯css+js打造返回顶部代码
  12. redhat7 虚拟机 取消屏幕保护或自动休眠时间
  13. 泛微oa服务器文件,泛微oa云服务器要求
  14. Scan2CAD pro中文版
  15. 《P2P技术详解》系列文章
  16. 根据两点的经纬度求方位角和距离
  17. Office 2019离线安装ISO镜像
  18. 请介绍一下ivac 2L
  19. Ubuntu aria2c 下载
  20. Firefox – 一个开源的浏览器

热门文章

  1. java 世界中Annotation
  2. hightcharts 如何修改legend图例的样式
  3. [原]MS SQL表字段自增相关的脚本
  4. ios系统框架一: Core Animation
  5. 存储过程中“ 警告: 聚合或其他 SET 操作消除了 Null 值” 导致错误的解决
  6. 菜鸟上路-Web开发模式
  7. C++编程语言中类的静态成员介绍
  8. shift and算法
  9. sql server 2016新特性 查询存储(Query Store)的性能影响
  10. 前端面试题之手写事件模型及事件代理/委托