当前位置: 首页 > news >正文

漳州建设网站云南专业网站建设

漳州建设网站,云南专业网站建设,cms开源系统php,金坛做网站的通过直接调用Kbdclass的回调函数KeyboardClassServiceCallback直接给上层发送键盘驱动。这个方法网上已经公开#xff0c;参考Hook KeyboardClassServiceCallback实现键盘 Logger#xff0c;其他的还有很多#xff0c;可以到网上去查。简单说一下没有公开的部分#xff0c;…通过直接调用Kbdclass的回调函数KeyboardClassServiceCallback直接给上层发送键盘驱动。这个方法网上已经公开参考Hook KeyboardClassServiceCallback实现键盘 Logger其他的还有很多可以到网上去查。简单说一下没有公开的部分就是按下和松开的模拟已经扩展键的模拟。模拟主要是构造KEYBOARD_INPUT_DATA结构按下和松开的Flags分别对应KEY_MAKE、KEY_BREAK然后调用KeyboardClassServiceCallback。这里直接用的sudami的代码在此谢过懒得改了。代码如下case IOCTL_KEY_DOWN :{if (ioBuf){lKeyCode *(ULONG*)ioBuf;dprintf([KeyMouse] KeymouseDispatchDeviceControl IOCTL_KEY_DOWN 0x%x/n, lKeyCode);dwSize sizeof(KEYBOARD_INPUT_DATA);__asm {push eaxmov kid.UnitId,0 ; 构造 KEYBOARD_INPUT_DATAmov eax,lKeyCodemov kid.MakeCode,axmov kid.Flags,KEY_MAKE ;模拟按下mov kid.Reserved,0mov kid.ExtraInformation,0lea eax,dwRetpush eaxlea eax,kidadd eax,dwSizepush eaxlea eax,kidpush eaxpush g_kbDeviceObjectcall orig_KeyboardClassServiceCallback ;利用 KeyboardClassServiceCallback 模拟按键pop eax}status STATUS_SUCCESS;}break;}case IOCTL_KEY_UP:{if (ioBuf){lKeyCode *(ULONG*)ioBuf;dprintf([KeyMouse] KeymouseDispatchDeviceControl IOCTL_KEY_UP 0x%x/n, lKeyCode);dwSize sizeof(KEYBOARD_INPUT_DATA);__asm {push eaxmov kid.UnitId,0 ; 构造 KEYBOARD_INPUT_DATAmov eax,lKeyCodemov kid.MakeCode,axmov kid.Flags,KEY_BREAK ;模拟松开mov kid.Reserved,0mov kid.ExtraInformation,0lea eax,dwRetpush eaxlea eax,kidadd eax,dwSizepush eaxlea eax,kidpush eaxpush g_kbDeviceObjectcall orig_KeyboardClassServiceCallback ;利用 KeyboardClassServiceCallback 模拟按键pop eax}status STATUS_SUCCESS;}break;}扩展键的区别是按下和松开的Flags分别对应KEY_E0、KEY_E1。其他和上面的一样这里就不贴代码出来了。主要说一下扩展键有哪几个(前面是MakeCode后面代表按钮)0x1D-RIGHT CONTROL 0x38-RIGHT ALT 0x48-↑ 键 0x50-↓ 键 0x4b-← 键 0x4d-→ 键 0x5B-LEFT WIN 0x5C-RIGHT WIN重点说一下鼠标的模拟原理和键盘的一样。查找驱动mouclass.sys中的MouseClassServiceCallback函数然后获取//Device//PointerClass0设备对象指针构造MOUSE_INPUT_DATA结构然后调用MouseClassServiceCallback。难点就在与构造MOUSE_INPUT_DATA结构上面。typedef struct _MOUSE_INPUT_DATA {USHORT UnitId;USHORT Flags;union {ULONG Buttons;struct {USHORT ButtonFlags;USHORT ButtonData;};};ULONG RawButtons;LONG LastX;LONG LastY;ULONG ExtraInformation;} MOUSE_INPUT_DATA, *PMOUSE_INPUT_DATA;通过调试操作系统调用MouseClassServiceCallback的参数主要的标示有3个。Flags标志是标示鼠标的坐标属性(即相对坐标、绝对坐标等)ButtonFlags标志是左右中键按下和松开的标志LastX是鼠标X坐标与Flags标志有关LastY是鼠标Y坐标与Flags标志有关其他几项可以填0。具体模拟代码如下case IOCTL_MOUSE_LEFT_BUTTON_DOWN:{MouseFlags MOUSE_LEFT_BUTTON_DOWN;goto __MouseCallBack;}case IOCTL_MOUSE_LEFT_BUTTON_UP:{MouseFlags MOUSE_LEFT_BUTTON_UP;goto __MouseCallBack;}case IOCTL_MOUSE_RIGHT_BUTTON_DOWN:{MouseFlags MOUSE_RIGHT_BUTTON_DOWN;goto __MouseCallBack;}case IOCTL_MOUSE_RIGHT_BUTTON_UP:{MouseFlags MOUSE_RIGHT_BUTTON_UP;goto __MouseCallBack;}case IOCTL_MOUSE_MIDDLE_BUTTON_DOWN:{MouseFlags MOUSE_MIDDLE_BUTTON_DOWN;goto __MouseCallBack;}case IOCTL_MOUSE_MIDDLE_BUTTON_UP:{MouseFlags MOUSE_MIDDLE_BUTTON_UP;__MouseCallBack:mid.UnitId 0;mid.Flags MOUSE_MOVE_RELATIVE;mid.Buttons 0;mid.ButtonFlags MouseFlags;mid.RawButtons 0;mid.LastX *((ULONG*)ioBuf);mid.LastY *((ULONG*)ioBuf1);mid.ExtraInformation 0;InputDataStart mid;InputDataEnd InputDataStart1;orig_MouseClassServiceCallback(g_mouDeviceObject,InputDataStart,InputDataEnd,InputDataConsumed);status STATUS_SUCCESS;break;}case IOCTL_MOUSE_MOVE_RELATIVE:{mid.Flags MOUSE_MOVE_RELATIVE; //相对坐标goto __MouseMoveCallBack;}case IOCTL_MOUSE_MOVE_ABSOLUTE:{mid.Flags MOUSE_MOVE_ABSOLUTE; //绝对坐标goto __MouseMoveCallBack;}case IOCTL_MOUSE_VIRTUAL_DESKTOP:{mid.Flags MOUSE_VIRTUAL_DESKTOP; //虚拟桌面__MouseMoveCallBack:mid.UnitId 1;mid.Buttons 0;mid.RawButtons 0;mid.LastX *((ULONG*)ioBuf);mid.LastY *((ULONG*)ioBuf1);mid.ExtraInformation 0;InputDataStart mid;InputDataEnd InputDataStart1;orig_MouseClassServiceCallback(g_mouDeviceObject,InputDataStart,InputDataEnd,InputDataConsumed);status STATUS_SUCCESS;break;}驱动在windows XP SP2上测试通过。
http://wiki.neutronadmin.com/news/264203/

相关文章:

  • 公众号排版怎么做seo是什么品牌
  • 企业网站建设方案渠道深圳网站建设网络
  • 电商网站设计公司排行榜安康市代驾公司
  • 建材做网销哪个网站好对手网站分析
  • 北京社保网站做社保增减员线上线下一体化营销
  • 营销策划方案网站天津建设电工证查询网站
  • 网站页面分析哪个网站建设公司好
  • 无锡cms建站黑龙江建设工程招标网
  • 天津企业如何建网站ocr是不是用于制作网页的软件
  • 建设部人才交流中心网站天津北辰做网站
  • 网站优化建设深圳百度100%秒收录
  • 网站建设工作分解结构图或表wordpress页面加密
  • 可以做家教的网站有哪些wordpress 新建模板
  • 男子做网站曹县网站建设公司
  • 舆情网站wordpress 百度百科
  • 网站播放视频插件有限公司和有限责任的区别在哪里
  • 北京建设工程质量协会网站做网站需要那些东西
  • thinkphp开发大型网站阿里巴巴的网站二维码怎么做
  • 电商品牌网站开发运营北京最新新闻报道
  • 个人网站模板html免费北京展板设计制作公司
  • 徐州市建设局网站首页wordpress 调用评论数量
  • 零基础网站建设教程wordpress 商务模板
  • 51做网站建设企业官网个人网站设计源码
  • 网站风格什么意思正规拉新推广平台有哪些
  • 工信部网站域名备案查询系统分析网站优缺点
  • 如何建一个商业网站专做中医教学网站
  • 镜子厂家东莞网站建设思创医惠网站建设
  • 网站建设预算申请表c2c模式有哪些
  • 微网站建设代运营昆明建网站电话
  • seo模板建站番禺区保安服务公司