几经挣扎,我最终还是选择了虚拟设备的方法来模拟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. 推荐两个不错的CAD二次开发(.Net)手册

    推荐两个不错的CAD二次开发(.Net)手册 http://www.mjtd.com/helpcenter/netguide/index.html http://www.ceesky.com/book ...

  2. IOS7 position:fixed 定位问题

    在IOS7下position:fixed定位会出一些bug. 输入框 focus 状态下 fixed会随之改变.参见该页面详细描述(http://www.cnblogs.com/zhangdaipin ...

  3. Process Node.js 进程

    Process 进程 process.argv 是命令行参数数组,第一个元素是node,第二个元素是脚本文件名,从第三个元素开始每个元素是一个运行参数. process.stdout 标准输出流 co ...

  4. JavaScript之childNodes属性、nodeType属性学习

    1.childNodes属性:在一颗节点树上,childNodes属性可以用来获取任何一个元素的所有元素,它是一个包含这个元素所有子元素的数组. <body> <script typ ...

  5. English - when用法

    一.作为副词,它有以下的用法:  1. 作为疑问副词,引导特殊疑问句,意为“什么时候:何时”.如: ( 1 ) When will they come back?( 2 ) What time wil ...

  6. PDF417码制尺寸定义

    PDF417码制尺寸定义         1.模块宽度(X)不得小于0.191mm,你们目前所用300dpi打印机点的尺寸是0.084 mm * 0.01 mm,可  三倍以上值        2.条 ...

  7. 解决Collection <__NSArrayM: 0x7f8168f7a750> was mutated while being enumerated.'

    当程序出现这个提示的时候,是因为你一边便利数组,又同时修改这个数组里面的内容,导致崩溃,网上的方法如下: NSMutableArray * arrayTemp = xxx; NSArray * arr ...

  8. JavaSE复习日记 : 继承关系和super关键字以及继承关系中方法的覆写

    /* * 类的继承和super关键字 * * 软件开发的三大目的: * 可拓展性; * 可维护性; * 可重用性; * * 这里单说下可重用性这一项: * 为了代码复用,复用方式有: * 函数的调用复 ...

  9. Centos 7 安装Mono和Jexus 默认目录安装 (一)

    一.准备环境 yum -y install gcc gcc-c++ bison pkgconfig glib2-devel gettext make libpng-devel libjpeg-deve ...

  10. symbolを見つけられませんの解決策

    类互相调用造成编译时找不到符号symbol 可以同时编译多个文件: