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

<寒江独钓>Windows内核安全编程__键盘过滤之内核级Hook(一) Hook分发函数 前一篇文章讲述了进行键盘过滤,截取用户输入的方法。本篇文章开始更加深入地讨论键盘的过滤与反过滤对抗。无论是过滤还是饭过滤,原理都是过滤,取胜的关键在于谁第一个得到信息。 一种方发是Hook分发函数,即将键盘驱动的分发函数替换成自己的函数用来达到过滤的目的。 阅读详情

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

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

void __stdcall print_keystroke(UCHAR sch,USHORT stch)
{
 UCHAR ch = 0;
 int  off = 0;

 if (!stch) //make
 {
  switch (sch)
  {
  case 0x3A:
   kb_status ^= S_CAPS;
   DbgPrint("CAPS");
   break;

  case 0x2A:
  case 0x36:
   kb_status |= S_SHIFT;
   DbgPrint("SHIFT");
   break;

  case 0x45:
   kb_status ^= S_NUM;
  }
  
      
 }
 else  //break
 {
  if (sch == 0x2A || sch == 0x36)
   kb_status &= ~S_SHIFT;
 }
 
 if ((sch < 0x47) || 
    ((sch >= 0x47 && sch < 0x54) && (kb_status & S_NUM))) // Num Lock
   { if(kb_status==6||kb_status==2) off=84;
    if(kb_status==5||kb_status==1) off=168;
    if(kb_status==7||kb_status==3) off=252;

    ch = asciiTbl[off+sch];
   }

 if (ch >= 0x20 && ch < 0x7F)
 {
  DbgPrint("%C \n",ch);
 }

}
标红的地方就是我修改的地方。主要有:

(1)原程序是用sch与0x80相与是否为零判断其是按下状态还是释放状态。通过调试我发现自己的电脑并没有在扫描码最高位添1来表示其DOWN或UP状态,所以我将函数修改了一下,将KeyData->Flags的值传进去来判断其状态,1为UP,0为DOWN。

(2)对于SHIFT键需要判断其处于按下或弹起,因为其按下有效,弹起则无效。

(3)原程序中虽设置了一个偏移值off,但其未对它进行处理。我根据头文件的ASCII码表,对于CAPS、SHIFT以及两者同时按下的情况对off值进行处理,从而实现打印出相应大小写值。

目前仍存在一个问题未解决,就是每次驱动服务启动后,对于第一个按下的键无法捕捉到其按下的状态,只能反应出该键弹起的状态。现在仍不清楚其原因是什么。

程序有一个好玩的地方就是可以修改按键的扫描码,从而使系统无法正确接收到键盘输入的信息。这一点可以用来做些简单的木马程序。

转自:http://blog.163.com/sherlock_105/blog/static/3275329201051915733261/

<寒江独钓>Windows内核安全编程__键盘过滤之内核级Hook(二) Windows内核安全编程__键盘过滤内核级Hook(二) 如果不想让键盘过滤驱动程序或回调函数首先获得按键,则必须比端口驱动更加底层一些。 早期版本的QQ反盗号驱动的原理是这样的:用户要输入密码时(比如把输入焦点移动到了密码框里),就注册一个中断服务来接管键盘中断,比如0x 阅读详情

相关推荐

键盘过滤驱动 获取键盘按键

把别人nt的键盘过滤驱动改成了wdm的,刚开始觉得很简单,但还是遇到各种问题,呵呵,学习!!学习!!

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

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

GamerMonstor的博客 1045

寒江独钓源代码

寒江独钓全部的源代码。对学习寒江独钓十分有帮助

寒江独钓:键盘的过滤 学习笔记

先来名词热身: 一、符号链接:其实就是一个别名。可以用一个不同的名字来代表一个设备对象 二、PDO:是物理设备对象,可以理解为是设备栈最下面的那个设备对象。 函数介绍: 内核中:ZwCreateFile是很重要的函数,不但可以打开文件,还可以打开设备对象。在应用程序中跟它对应的是CreateFile函数.. 接下来是记录Windows如何获得按键,然后传递给各个应用程序。 csrss这...

weixin_30819085的博客 240

【MATLAB例程,无人机避障7】基于RRT*与人工势场法(RRT*+APF)的多无人机二维动态路径规划与避障

程序采用快速扩展随机树星算法(RRT*)与人工势场法(APF),实现四架无人机在二维动态障碍环境中的路径规划与协同避碰。通过RRT*的邻域选父和节点重连优化全局参考路径,利用APF进行局部动态避障,绘制全局路径、实际轨迹、安全净间隙、速度与加速度及航程等图像,对比RRT+APF与RRT*+APF的规划效果。无人机起终点、障碍物分布、采样次数及运动约束均可自行调整。

【机械故障诊断】基于VMD分解与故障频率匹配的复合故障分离方法:MATLAB实现与智能运维应用 MATLAB 轴承复合故障分离|VMD分解与故障频率匹配

内容概要:通过结合变分模态分解(VMD)与理论故障频率匹配技术,实现对滚动轴承复合故障的自适应分离与精准诊断。该方法首先对振动信号进行稳健预处理,再通过参数寻优的VMD实现频带自适应分解,随后利用包络解调提取各模态的冲击周期,并基于轴承几何参数和转速计算理论故障频率。通过基频、倍频与边带的多证据匹配策略,将模态与外圈、内圈、滚动体、保持架等具体故障类型关联,支持共享模态的复合故障重构,最终输出各故障类型的独立分量与诊断结果。该方案提升了复杂工况下弱故障的识别能力与诊断的可解释性。; 适合人群:具备一定信号处理与机械故障诊断基础知识,从事工业设备状态监测、智能运维系统开发或相关算法研究的研发人员。; 使用场景及目标:①应用于电机、泵组、风电、轨道交通等领域的轴承复合故障诊断;②解决强弱故障共存、频率重叠导致的掩蔽问题,实现多故障的分离与识别;③为设备的智能运维、健康管理和剩余寿命预测提供可靠的故障分量数据与诊断依据; 阅读建议:此资源以MATLAB R2025b为实现平台,提供了完整的算法流程、代码示例与GUI界面。建议使用者在实践中重点关注参数搜索策略、多证据匹配的实现细节以及共享模态重构的逻辑,并结合实际工程数据进行验证和调优。

寒江独钓-键盘过滤学习1传统型的键盘过滤

最顶层的设备对象是驱动 Kbdclass 生成的设备对象 中间层的设备对象是驱动i8042prt生成的设备对象 最底层的设备对象是驱动ACPI生成的设备对象 学习参考: http://bbs.pediy.com/showthread.php?t=96205&highlight=IOAPIC http://bbs.pediy.com/showthre...

weixin_30378311的博客 212

基于.NET8开发,是一套开源、免费、跨平台、企业级在线考试软件,支持x64、x86、Arm64芯片架构的windows和linux操作系统,支持人大金仓、达梦、OceanBase数据库 等数据库

星期八在线考试系统,基于.NET8开发,是一套开源、免费、跨平台、企业级在线考试软件,支持x64、x86、Arm64芯片架构的windows和linux操作系统,支持人大金仓、达梦、OceanBase数据库 及 MySql、SqlServer、PostgreSql、SQLite 等数据库。

[寒江独钓] IRP HOOK 键盘过滤之替换原键盘分发函数

标题:[IRPHOOK]键盘过滤驱动学习 作者:0xFFFFCCCC 时间:2012-05-20 链接:http://hi.baidu.com/pushad/item/0a78c3ba0812e6afeaba9399 MajorFunction.h #ifndef _MAJORFUNCTION_HEADERS_ #define _MAJORFUNCTIO...

weixin_30691871的博客 219

TC8测试TCP-UNACCEPTABLE-04/006

TC8测试TCP-UNACCEPTABLE-04/006

PSIM-串联谐振半桥LLC开关电源+PFM变频闭环控制【仿真+计算书+参考文献】

内容概要:本文档系统性地整合了电力电子与控制系统仿真领域的丰富资源,聚焦于基于PSIM和Simulink平台的串联谐振半桥LLC开关电源建模与仿真,深入探讨PFM变频闭环控制策略的设计与实现。内容涵盖LLC谐振变换器的工作原理、关键参数设计、开环与闭环仿真模型构建、软开关技术(ZVS/ZCS)、恒压恒流双竞争控制机制以及调频控制等核心技术,配套提供完整的仿真文件、计算书和参考文献,有助于深入理解高频开关电源系统的动态响应特性与稳定性分析方法。此外,文档还汇集了大量拓展性仿真资源,涉及双向DC-DC变换器、PWM整流器、PFC电路、储能系统、微电网优化、DAB变换器、并网逆变器等多个方向,构成一套完整的科研与工程实践参考资料体系。; 适合人群:适用于电力电子、电气工程及其自动化等相关专业的高校本科生、研究生,以及从事开关电源设计、新能源系统开发、电力变换器研发等工作的工程技术人员。; 使用场景及目标:①深入学习LLC谐振变换器的拓扑结构与闭环控制原理;②掌握PSIM/Simulink在电力电子系统中的高精度建模与仿真技能;③为科研项目、学位论文或产品开发提供可复用的技术方案与代码基础;④深化对PFM控制、软启动过程、ZVS/ZCS实现机制及系统稳定性的理解; 阅读建议:建议结合文档中提供的仿真模型与计算书进行同步操作,优先剖析主电路拓扑与控制逻辑架构,再逐步开展参数调节与仿真验证实验,同时可参考所列相关资源拓展技术视野,提升综合设计能力。

键盘过滤驱动快捷实现

     最近在网上无意中看到一段代码,主要讲述的是Windows 下键盘过滤驱动的实现方式,这段代码很有意识,是一种比较好的一种方法,主要将获取的键盘驱动对象的所有分发函数替换,然后另行处理,具体的代码如下;         //获取键盘驱动对象     status = ObReferenceObjectByName(&uniNtNameString,            OBJ_CASE_INSENSITIVE,            NULL,            0,

Tech is Online(物联网技术传播) 1938

Windows开发工具环境管理:Git、Node.js、Python多版本与PATH冲突排查 - 配套实验资源

本资源是《Windows开发工具环境管理:Git、Node.js、Python多版本与PATH冲突排查》的配套实验工具,适用于 Windows PowerShell 5.1 和 PowerShell 7,帮助开发者排查 Git、Node.js、Python、Codex 等工具的多版本共存、PATH 配置异常及命令优先级冲突问题。 **资源包含两个 PowerShell 脚本:** 1. **Get-ToolchainInventory.ps1**:只读环境诊断工具,可列出开发工具的命令候选路径,检查 PATH 目录、重复条目及无效路径。不执行开发工具,也不修改系统配置。 2. **Invoke-PathPrecedenceLab.ps1**:PATH 优先级演示工具,在系统临时目录中生成测试命令,通过临时调整当前进程的 PATH,直观展示 Windows 命令查找与优先级规则。实验结束后自动恢复 PATH 并清理自身创建的临时文件。 **资源特点:** - 兼容 Windows PowerShell 5.1 和 PowerShell 7。 - 支持开发工具路径盘点与 PATH 冲突分析。 - 提供可重复的命令优先级实验。 - 不修改注册表、系统级或用户级环境变量。 - 不卸载软件、不安装依赖、不执行包管理器。 - 适合 Windows 开发环境排查、PowerShell 学习与技术教学。 **使用说明:** 下载后建议先审查脚本,再按照配套文章中的 PowerShell 命令运行。脚本已完成静态检查与打包,尚未经过 Windows 实机执行验证。 **安全提示:** 诊断结果可能包含个人或组织目录信息,公开分享前请脱敏。若受到 PowerShell 执行策略限制,应采用符合环境安全要求的授权方式运行,不建议全局关闭安全限制。

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

1.status = ObReferenceObjectByName( &uniNtNameString, OBJ_CASE_INSENSITIVE, NULL, 0, *IoDriverObjectType, KernelMode, NULL, &KbdDriverObject ); // 如果失败了就直接返回 if (!NT_S

hercs的博客 819

算法-基于MACD的Adaboost股价涨跌预测模型

MACD是一个指标,具体用法是MACD>0看涨,反之看跌,果真是这样的吗?由于所有的技术指标都基于对历史数据的统计,指标的滞后性也就难免,有时候MACD明明大于0,股价仍然跌,有时候macd小于0,股价仍然涨。 本文基于Adaboost算法提出了一种基于macd的线性阀值分类器作为若分类器,通过在限定的解空间内寻找使得错误率最小的阀值和偏置,这样做避免了训练若分类器的复杂性,经验证,这种方法有效。

mtaxot的博客 8022

HDMI协议介绍(一)--Overview

HDMI全称(High Definition Multimedia Interface)高清多媒体接口,支持在单线缆上传输全数字高清视频和多声道音频。

SlamDunk的博客 2万+
上一篇: 漫谈兼容内核之十二: Windows的APC机制(毛德操)
下一篇: 关于NT驱动irp pending的注意事项
vbsourcecode
博客等级 码龄17年 19粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值