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