几经挣扎,我最终还是选择了虚拟设备的方法来模拟Rockey2加密狗。HID.DLL劫持+API劫持的办法技术上虽然简单些,但太繁琐了,不仅要转发大量的函数,还要Hook好几个API,向我这么懒的人可干不了这体力活,几经取舍还是选择了虚拟设备的方法,原因有一下几点:

1、劫持HID.DLL同样要分析描述符,并没有避开难点。相比Dll劫持+API劫持两项技术,写一个虚拟设备只需要攻破一个点,总体结构上简单了。昨天惧怕虚拟设备是因为从没做过USB,都说技术是一层窗户纸,静下心来慢慢分析,也没那么恐怖。

2、趁机学习一下Windows下的驱动编写(其实用的都是人家的框架,也没学着什么)

3、趁机学习一下USB通讯(这方面倒是真学到了不少)

写虚拟狗首先要确认美萍认不认,从DSF的文档说明上看,虚拟设备的模拟是比较底层的,应用程序不会发现虚拟设备和真实物理设备的区别,就算有办法,估计美萍也不会费这么大事去识别的(当然,如果我真的成功了,估计美萍就要研究了,哈哈推动技术发展也是我的目的之一)。这里用到一个Tee8088大大的工具,其实就是一个劫持的HID.Dll,用来监听HID加密狗与狗通讯的。使用方法很简单,把这个HID.DLL考到美萍的目录下,正常运行美萍就行,监听到的数据会写在C盘根目录下的一个TXT里,实际使用了是另一个网友的改进版,输出的信息更全一点。一开始监听到的只有HidD_GetAttributes函数的调用,搜索监听到的VID、PID值发现是我的摄像头(哈哈,意外发现摄像头是HID设备。),运行插入虚拟狗的脚本(TestGenericHid.wsf)后出现了虚拟狗的VID、PID,我猜这是在枚举HID设备找狗 (后来OD看Rockey.dl也证实了我的想法),把HIDDevice.cpp 里的VID和PID改成R2的后(VID_096E PID_0201)监听数据多出来了HidD_GetPreparsedData 等函数的调用,依此确认虚拟设备原理上可行。这里有一点需要注意DSF运行时的文件夹里有一个默认的SoftHIDReceiver.dll,直接运行TestGenericHid.wsf脚本将调用这个dll,所以刚一开始时,发现改了HIDDevice.cpp里的VID PID居然不好用,还是例子里的值,用自己编译的SoftHIDReceiver.dll替换掉DSF文件夹里才成功。

OK,既然可行那就一步步来吧,根据Rockey2的一般流程应该是先调用RY2_Find找狗,于是OD载入Rockey2.dll在RY2_Find开头打个断点,调试--调用Dll导出,选择RY2_Find,没有参数,调用时隐藏打钩,CALL!一步步跟看到了96E和201,是比较VID,PID,后面有个CALL就是就是进一步验证是否是R2了,跟进去发现只有HidP_GetCaps填充的数据结构HIDP_CAPS的FeatureReportByteLength=0x49是才能通过,于是修改报告描述符加一个Feature项目报表,Report Size =8位 Report Count=0x48(这样加上Report id的一字节正好等于0x49),再次编译虚拟HID设备,调用RY2_Find已经可以返回1了!下一步向RY2_Open进军!

模拟美萍加密狗--Rockey2虚拟狗(三)的更多相关文章

  1. 模拟美萍加密狗--Rockey2虚拟狗(一)

    目录(?)[+]   最近受朋友之托做了一个美萍智能电源控制的插件.美萍茶楼从2010版开始支持智能电源控制设备,就是开单.结账时自动开关相应房间的电器,不过官方的设备是有线的.朋友的店已经开了一段时 ...

  2. 模拟美萍加密狗--Rockey2虚拟狗(五)

    虚拟狗开源后很多网友询问有关使用方法的问题,其实看我前四篇文章就应该了解怎样使用了,但还是写篇教程吧 [一].安装DSF (驱动模拟环境): 运行DSFx86Runtime.msi 如需改变安装目录请 ...

  3. 模拟美萍加密狗--Rockey2虚拟狗(二)

    按好了WDK,看了一天的DSF例子GenericHID,直接头大了,就能改个VID,PID让美萍识别成R2的狗.其他的什么各种描述符,根本无从下手,怪不得网上没有驱动模拟的加密狗,确实太复杂了,特别像 ...

  4. 模拟美萍加密狗--Rockey2虚拟狗(四)

    目录(?)[+]       首先,抱怨一下.学校个破网,似乎把我端口封了,死活分不上IP,也许是是我MAC改的太频繁了,有盗号嫌疑…… 然后,正文开始…… 其实虚拟狗几天前就写完了,可这几天上不了网 ...

  5. 克隆Rockey6加密狗复制资料

    克隆Rockey6加密狗复制资料下载 描述:Rockey6加密狗复制克隆方法Rockey6加密狗复制案例解析! 一.用OD加载DLL,并分析: 10001320 >/$ B8 4C140000 ...

  6. 老王教您怎么做cass7.1 8.0 9.1所有系列的复制狗 加密狗 破解狗

    cass7.1 8.0 9.1所有系列的复制狗 加密狗 破解狗本来是出于好奇看到网上有这样的东西,学了下感觉挺简单的,如果你是cass的初学者想仅仅是想学习这个软件,不想花大价格购买正版的,这个是可以 ...

  7. 美萍超市销售管理系统标准版access数据库密码mp611

    美萍超市销售管理系统标准版access数据库密码mp611 作者:admin  来源:本站  发表时间:2015-10-14 19:01:43  点击:199 美萍超市销售管理系统标准版access后 ...

  8. Rockey 4加密狗介绍

    Rockey 4加密狗介绍 特点:该加密狗是单片机加密狗时代飞天公司的主力产品,R4一样继承了R2的硬件特征,具有全球唯一性硬件ID.R4内置了硬件随机数生成器,可以进行一些抗跟踪,或在硬件算法中参与 ...

  9. C# Java间进行RSA加密解密交互(三)

    原文:C# Java间进行RSA加密解密交互(三) 接着前面一篇C# Java间进行RSA加密解密交互(二)说吧,在上篇中为了实现 /** * RSA加密 * @param text--待加密的明文 ...

随机推荐

  1. CentOS 6.2图形界面自定义开启终端快捷键

    菜单: System->Preferences->Keyboard Shortcuts 在Desktop分类下找到"Run a terminal" 点击Run a te ...

  2. oracle 导入txt

    没有Oraclehoume的情况下,执行下环境变量文件 sqlldr userid= DM/DM control = /home/oracle/libc/load.ctl load data infi ...

  3. php用百度地图API进行IP定位和GPS定位

    <?php /** * 根据地理坐标获取国家.省份.城市,及周边数据类(利用百度Geocoding API实现) * 百度密钥获取方法:http://lbsyun.baidu.com/apico ...

  4. javaWeb项目带红色感叹号问题原因

    自建Userlibrary 中库中含有非.jar 文件.

  5. 大数据之scala基本语法学习

    package edu.snnu.test object list2 { //把字符串转化成一个char类型的list "99 Red Balloons".toList //> ...

  6. 网络子系统48_ip协议数据帧的发送

    //ip协议与l4协议接口,l4通过此接口向下l3传递数据帧 //函数主要任务: // 1.通过路由子系统路由封包 // 2.填充l3报头 // 3.ip分片 // 4.计算校验和 // 5.衔接邻居 ...

  7. C#控件TabControl隐藏page

    隐藏 这个需求其实就是TABCONTROL控件会有很多提前制作好的PAGE页面,每次软件启动不可能所有页面都显示出来,目前想了个比较简单的方法解决这个问题 首先定义一个List集合存储TABCONTR ...

  8. 【转】几个常用的Oracle存储过程

    http://blog.bossma.cn/database/some-oracle-storing-process/ 几个常用的Oracle存储过程 发布时间:2008年1月6日 / 分类:Data ...

  9. MySQL 复制

    第一步:为配置主数据库与备数据库 主:server_id = 1      log_bin = E:\mysql_log_bin #复制事实上是二进制文件在备库上的重做,所以要支持二进制文件. 备: ...

  10. (转)《JAVA与模式》之模板方法模式

    该文章转自:http://www.cnblogs.com/java-my-life/archive/2012/05/14/2495235.html 在阎宏博士的<JAVA与模式>一书中开头 ...