键盘过滤第一个例子ctrl2cap(4.1~4.4)汇总,测试 完整源代码 /// /// @file ctrl2cap.c /// @author wowocock /// @date 2009-1-27 /// #include <wdm.h> #include <ntddkbd.h> #include "ctrl2cap.h" typedef struct _C2P_DEV_EXT { // 这个结构的大小 ULONG NodeSize; // 过滤设备对…
键盘过滤第一个例子ctrl2cap(4.1~4.4)汇总,测试 完整源代码 /// /// @file ctrl2cap.c /// @author wowocock /// @date 2009-1-27 /// #include <wdm.h> #include <ntddkbd.h> #include "ctrl2cap.h" typedef struct _C2P_DEV_EXT { // 这个结构的大小 ULONG NodeSize; // 过滤设备对…
4.1 技术原理 & 4.2 键盘过滤框架 4.1 预备知识 符号链接:符号链接其实就是一个“别名”.可以用一个不同的名字来代表一个设备对象(实际上),符号链接可以指向任何有名字的对象. ZwCreateFile是很重要的函数.同名的函数实际上有两个:一个在内核中,一个在应用层.所以在应用程序中直接调用CreateFile,就可以引发对这个函数的调用. 它不但可以打开文件,而且可以打开设备对象(返回得到一个类似文件句柄的句柄).所以后面会常常看见应用程序为了交互内核而调用这个函数,这个函数最终调…
source: https://www.kernel.org/doc/html/latest/process/coding-style.html translated by trav, travmymail@gmail.com 这是一篇阐述Linux内核编程代码风格的文档,译者以学习为目的进行翻译. 1 缩进 Tab的宽度是八个字符,因此缩进的宽度也是八个字符.有些异教徒想让缩进变成四个字符,甚至是两个字符的宽度,这些人和那些把 PI 定义为 3 的人是一个路子的. 注意:缩进的全部意义在于清晰…
4.1 技术原理 & 4.2 键盘过滤框架 4.1 预备知识 符号链接:符号链接其实就是一个“别名”.可以用一个不同的名字来代表一个设备对象(实际上),符号链接可以指向任何有名字的对象. ZwCreateFile是很重要的函数.同名的函数实际上有两个:一个在内核中,一个在应用层.所以在应用程序中直接调用CreateFile,就可以引发对这个函数的调用. 它不但可以打开文件,而且可以打开设备对象(返回得到一个类似文件句柄的句柄).所以后面会常常看见应用程序为了交互内核而调用这个函数,这个函数最终调…
Windebug双机调试环境搭建    开始进行内核编程/驱动编程的调试工作是非常烦人的,由于程序运行与内核层不受操作系统的管控,所以容易引起主机蓝屏和崩溃是常有的事.这也就使得内核程序的调试成了一大问题,而在资源有限的时候,利用虚拟机进行调试是一个很好的选择,这样一来即使是虚拟机因为调试问题而发生蓝屏或崩溃的问题也不至于殃及主机. 今天在搭建环境过程中还是遇到了不少问题,虽然关于这方面的文章已经很多了,但是有一些细节还是会不小心被忽略,而这往往导致最后环境搭建的失败.在这里就相当于做个总结吧,…
注意: Makefile 文件的命名注意M需要大写,否则会报错. 在Makefile文件中make命令前应为tab制表符. 下文转载至:https://blog.csdn.net/bingqing07/article/details/5888875 首先得了解一下什么是模块: 模块是具有独立功能的程序,它可以被单独编译,但不能独立运行.它在运行时被链接到内核作为内核的一部分在内核空间运行,这与运行在用户空间的进程是不同的.模块通常由一组函数和数据结构组成,用来实现一种文件系统.一个驱动程序或其他…
想要知道ElasticSearch是如何使用的,最快的方式就是通过一个简单的例子,第一个例子将会包括基本概念如索引.搜索.和聚合等,需求是关于公司管理员工的一些业务. 员工文档索引 业务首先需要存储员工数据.这将采取一个员工文档的形式:单个文档表示单个员工.在Elasticsearch中存储数据的行为称为索引,但是在索引文档之前,我们需要决定在哪里存储它. 在Elasticsearch中,文档属于某个类型,这些类型位于索引中.可以绘制一些(粗略)与传统关系数据库的对比: Relational D…
一.前言                                  我们一起从3个小例子来体验一下linux内核编程.如下: 1.内核编程之hello world 2.模块参数传递 3.模块间函数调用 二.准备工作                           首先,在你的linux系统上面安装linux头文件,debian系列: $:sudo apt-get install linux-headers-`uname -r` 安装后,在你的/lib/modules/目录下有你刚刚安…
最近正在看<寒江独钓——Windows内核安全编程>这本书,感觉这本书非常好,有兴趣的朋友可以买来看看,有关这本书的信息请参考:http://www.china-pub.com/195592 这本书里没有详细介绍如何搭建Visual Studio的内核编程开发环境,在这里我简单介绍一下,希望能让像我一样刚学习内核编程的朋友更方便地开发. 一.下载与安装WDK <寒>说,以前说的DDK.IFS已成为历史,现在已经改为使用WDK了,具体下载地址可以这里注册并下载:http://conn…