摘要:
MFC工程的复制 【1】 在VS中新建一个同类型的MFC工程。 【2】 复制.rc资源文件,用记事本打开旧工程和新工程的.rc文件,将旧工程的对应部分复制到新工程的对应部分,文件中都有相应的注释说明。需要注意的是,文件名不要一并复制过来了!! 【3】 复制Resource.h的内容,这里存放的是对话 阅读全文
摘要:
#include#include#define MAXSIZE 1000using namespace std;int main(){ int a[MAXSIZE]; ifstream fin("input.txt"); if( !fin.is_open() ) { ... 阅读全文
摘要:
4.5 HOOK分发函数 本节开始深入的探讨键盘的过滤与反过滤。有趣的是,无论是过滤还是反过 滤,其原理都是进行过滤。取胜的关键在于:谁将第一个得到信息。 黑客可能会通过修改一个已经存在的驱动对象(比如前面的KbdClass)的分 发函数指针来实现过滤所有请求的目的。黑客将这些函数指针替换成自己的黑 阅读全文
摘要:
键盘过滤第一个例子ctrl2cap(4.1~4.4)汇总,测试 完整源代码 ctrl2cap.h代码: 按键输出结果: 程序虽然可以动态卸载,但是要注意的是,停止之后,必须要按下一个键才能彻底退出。 阅读全文
摘要:
4.4 从请求中打印出按键信息 4.4.1 从缓冲区中获得KEYBOARD_INPUT_DATA 请求完成后,读到的信息在Irp_AssociatedIrp.SystemBuffer中。这里需要介绍一下这个缓冲区中的数据格式。这个缓冲区中可能含有n个KEYBOARD_INPUT_DATA 结构(这个 阅读全文
摘要:
4.3 键盘过滤的请求处理 4.3.1 通常处理 (1) 最通常的处理就是直接发到真实设备,跳过虚拟设备的处理。这里和前面的串口过滤的方法一样。 注:代码中直接使用了设备扩展。 (2) 与电源相关的IRP处理: (a)在调用IoSkipCurrentIrpStackLocation之前,先调用PoS 阅读全文
摘要:
4.1 技术原理 & 4.2 键盘过滤框架 4.1 预备知识 符号链接:符号链接其实就是一个“别名”。可以用一个不同的名字来代表一个设备对象(实际上),符号链接可以指向任何有名字的对象。 ZwCreateFile是很重要的函数。同名的函数实际上有两个:一个在内核中,一个在应用层。所以在应用程序中直接 阅读全文
摘要:
在学习汉江独钓一书后,打算总结一下内核编程应该注意的事项,以及有关的一些基础知识。第一次接触内核编程,还真是很生疏,很多东西不能一下马上消化。这里做个回顾总结,好加深自己的印象。 ## 1、内核编程环境 这里涉及到两个模式:内核模式和用户模式。这个可以和CPU的等级联系到一块:ring0,ring1 阅读全文
摘要:
visual studio 2010 配置驱动开发环境 ** 工具/材料 VS2010、WDK开发包 ** 配置过程 以下将讲述VS2010驱动开发环境的配置过程,至于必要软件的安装过程这里不再赘述。 (1)新建VS控制台项目,选择【空项目】,如下图所示 (2)右键点击“源文件”,如下图所示添加.c 阅读全文
摘要:
一、过滤的概念: 过滤是在不影响上层和下层接口的情况下,在Windows系统内核中加入新的层,从而不需要修改上层的软件或者下层的真是驱动程序,就加入了新的功能。 1.1 设备绑定的内核API 进行过滤的最主要的方法是对一个设备对象(Device Object)进行绑定。通过编程可以生成一个虚拟设备对 阅读全文
摘要:
一、基本概念 在某些情况下,我们必须处理相当大的一个整数,运用类型int、long int、long long int 类型均无法对其进行存储。要解决这样的问题,我们就需要自己编写相应的处理程序。在处理大数的时候,可以将其作为字符串读入,然后一个数字一个数字的存储到数组中,然后编写相应运算操作的处理 阅读全文
摘要:
第一个内核程序 刚刚搭建完调试程序,应该趁热打铁,来一个程序调试调试。调试程序是参照《寒江独钓——Windows内核编程》敲的,算是一次整理加深印象。 一、准备工作: 1、WDK 可以在:http://www.microsoft.com/en-us/download/details.aspx?id= 阅读全文
摘要:
Windebug双机调试环境搭建 开始进行内核编程/驱动编程的调试工作是非常烦人的,由于程序运行与内核层不受操作系统的管控,所以容易引起主机蓝屏和崩溃是常有的事。这也就使得内核程序的调试成了一大问题,而在资源有限的时候,利用虚拟机进行调试是一个很好的选择,这样一来即使是虚拟机因为调试问题而发生蓝屏或 阅读全文
摘要:
树状数组 基本概念 假设数组a[1..n],那么查询a[1]+...+a[n]的时间是log级别的,而且是一个在线的数据结构,支持随时修改某个元素的值,复杂度也为log级别。 树状数组的结构图 令这棵树的结点编号为C1,C2...Cn。令每个结点的值为这棵树的值的总和,那么容易发现: C1 = A1 阅读全文