先来名词热身:
一、符号链接:其实就是一个别名。可以用一个不同的名字来代表一个设备对象

二、PDO:是物理设备对象,可以理解为是设备栈最下面的那个设备对象。
函数介绍:
内核中:ZwCreateFile是很重要的函数,不但可以打开文件,还可以打开设备对象。在应用程序中跟它对应的是CreateFile函数..
接下来是记录Windows如何获得按键,然后传递给各个应用程序。
csrss这个进程里有个线程叫win32k!RawInputThread,这个线程总是调用nt!ZwReadFile来读入数据,等待键盘按下。的那个被按下,这个线程就好处理得到的数据,在继续要求读入数据并等待按键。
过程:
① 用传入参数符号链接名赋值OBJECT_attributes +0x8处的PUNICODE_STRING ObjectName。win32k!RawInputThread执行到函数win32k!OpenDevice,它的一个参数可找到键盘设备栈的PDO的符号链接名。win32k!OpenDevice有一个OBJECT_ATTRIBUTES结构的局部变量,它自己初始化这个局部变量,用传入参数符号链接名赋值OBJECT_attributes +0x8处的PUNICODE_STRING ObjectName。
②调用ZwCreateFile返回句柄。win32k!RawInputThread把得到的句柄保存起来,供后面的ReadFile、DeviceIoControl等使用。
③win32k!RawInputThread调用ZwReadFile读取数据。

转载于:https://www.cnblogs.com/tina0day/p/3702391.html

寒江独钓:键盘的过滤 学习笔记相关推荐

  1. 寒江独钓键盘过滤卸载蓝屏

    1.status = ObReferenceObjectByName( &uniNtNameString, OBJ_CASE_INSENSITIVE, NULL, 0, *IoDriverOb ...

  2. 寒江独钓-Windows内核安全编程笔记-第4章代码

    #ifndef __CTRL2CAP_H__ #define __CTRL2CAP_H__ #pragma once typedef struct _C2P_DEV_EXT { // 结构的大小 UL ...

  3. 寒江独钓-Windows内核安全编程笔记-第3章代码和笔记

    第3章代码 // #include #include #define NTSTRSAFE_LIB #include #define CPP_MAX_COM_ID 32 #define DELAY_ON ...

  4. windows7 《寒江独钓》传统键盘过滤驱动学习

    本人驱动方面小白一枚,如果有什么不足之处与不正确之处还请各位大佬多多指正. 另外,本篇博客参考了以下博客,非常感谢原作者的分享!我在学习的时候真的受到了很大的帮助! IRP相关: http://blo ...

  5. 《寒江独钓》内核学习笔记(1)-- IRP - .Little Hann

     原文  http://www.cnblogs.com/LittleHann/p/3450436.html 在学习内核过滤驱动的过程中,遇到了大量的涉及IRP操作的代码,这里有必要对IRP的数据结 ...

  6. 《寒江独钓》内核学习笔记

    <寒江独钓>内核学习笔记(1)-- IRP - .Little Hann 时间 2013-11-30 15:40:00  博客园_.Little Hann原文  http://www.cn ...

  7. ETHREAD APC 《寒江独钓》内核学习笔记(4)

    继续学习windows 中和线程有关系的数据结构: ETHREAD.KTHREAD.TEB 1. 相关阅读材料 <windows 内核原理与实现> --- 潘爱民 2. 数据结构分析 我们 ...

  8. 寒江独钓windows 内核安全编程学习笔记

    寒江独钓windows 内核安全编程学习笔记 本博客记录自己的学习过程,如有侵犯或者打扰请告知. 由于项目的需求,第一次接触到驱动程序.开始学习了寒江大神的的内核安全编程.小白一个,第一章就遇到了问题 ...

  9. 《寒江独钓》键盘过滤部分程序修改

    <寒江独钓>键盘过滤部分程序修改 看书的时候,发现书里第四章的键盘过滤程序并不能实现打印出扫描码详细信息的功能.我将程序修改了一下以后,可以实现该功能.以下是我的修改之处: void __ ...

  10. THREAD APC 《寒江独钓》内核学习笔记(4)

    继续学习windows 中和线程有关系的数据结构: ETHREAD.KTHREAD.TEB 1. 相关阅读材料 <windows 内核原理与实现> --- 潘爱民 2. 数据结构分析 我们 ...

最新文章

  1. 中国科学院院士褚君浩:第四次工业革命和智能时代
  2. Linux下oracle数据库spfile参数配置文件丢失问题解决,“ORA-32001: write to SPFILE requested but no SPFILE is in use“问题处理
  3. php取月份函数,分享3个php获取日历的函数
  4. python中import os_python import osgeo.gdal出错
  5. 支付宝小程序面向个人开发者公测
  6. php使用phantomjs
  7. Java面向对象程序设计--与C++对比说明:系列2(类机制)
  8. 华为鸿蒙os2.0更新,鸿蒙OS2.0更新了吗?更新方法、更新包大小、使用体验等都来了...
  9. 按键精灵手机助手php通讯,按键精灵手机助手教程_按键精灵手机助手怎么连接手机...
  10. docker安装网易云音乐(yesplaymusic)
  11. 从零读懂CAN总线(上)
  12. C#使用FFmpeg实现视频压缩优化的探索
  13. 3 Linux 10个主流发行版本
  14. R语言和医学统计学(10):正态性和方差齐性检验
  15. 初学 PCIe System (一) - PCIe介绍及其配置空间
  16. Java开发面试题目,java培训老师第一次讲课
  17. 电脑出现 initialization failure 问题
  18. 我的实践:通过一个一维线性回归入门pytorch
  19. Windos 快捷键的使用 windos 徽标键的妙用
  20. AFL学习笔记(下)

热门文章

  1. bzoj4816 [Sdoi2017]数字表格(反演)
  2. 第二次作业——时事评论
  3. Salient Object Detection Driven by Fixation Prediction 论文解读
  4. 【设计模式】职责链模式:如果第三方短信平台挂了怎么办?
  5. 基于FPGA的卷积神经网络加速器(绪论)
  6. Parallels将Win10引入Apple Silicon,实测运行效果糟糕
  7. 微表情如何用计算机分析计算,基于差分定位与光流特征提取的微表情识别 - 计算机应用与软件.pdf...
  8. 2021赣网杯web和misc部分wp
  9. 什么是Mirai僵尸网络
  10. 公有云与私有云的概念解读与优势分析