几经挣扎,我最终还是选择了虚拟设备的方法来模拟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. HTML系列(六):划分文档结构

    常见的网页结构布局是酱紫的,真是美美哒^O^: 一.添加基本标题h1~h6(没什么好说的): 二.标题分组hgroup <hgroup>用来将标题和子标题进行分组.如果一篇文章articl ...

  2. gulp脚本编写方法

    建立一个gulpfile.js文件,内容直接抄gulp-htmlmin的readme: var gulp = require('gulp'); var htmlmin = require('gulp- ...

  3. SqlServer数据类型、C#SqlDbType对应关系及转换

    { { } } { SqlDbType dbType = SqlDbType.Variant; { dbType = SqlDbType.Int; dbType = SqlDbType.VarChar ...

  4. vsvim _vsvimrc 设置(转)

    c_joewang的专栏 (转) vsvim安装到vs2010后可以使用绝大部分原生vim的编辑功能,包括宏录制,也可以通过配置设置键盘映射,关于支持的编辑功能等可以参考上面链接去查看相关文档. Vi ...

  5. BZOJ 2716: [Violet 3]天使玩偶( CDQ分治 + 树状数组 )

    先cdq分治, 然后要处理点对答案的贡献, 可以以询问点为中心分成4个区域, 然后去掉绝对值(4种情况讨论), 用BIT维护就行了. --------------------------------- ...

  6. R与数据分析旧笔记(五)数学分析基本

    R语言的各种分布函数 rnorm(n,mean=0,sd=1)#高斯(正态) rexp(n,rate=1)#指数 rgamma(n,shape,scale=1)#γ分布 rpois(n,lambda) ...

  7. Android 一个抽奖应用的逆向破解全流程之加固自己应用

    转自: <a href="http://www.pedant.cn/2014/07/22/crack-a-draw-app/">http://www.pedant.cn ...

  8. BOOL、sizeof

    BOOL使用前需要声明 #include <stdbool.h>(这个头文件定义了bool,true,false等宏) int a[5]; sizeof(a[5]),sizeof是关键字, ...

  9. WM_SYSCOMMAND包括很多功能,比如:拖动左边框、拖动标题栏、滚动条滚动、点击最小化、双击标题栏——Delphi 通过事件代替了大部分常用的消息,所以Delphi 简单、易用、高效

    procedure TForm1.WMSysCommand(var Message: TWMSysCommand); var str: string; begin case Message.CmdTy ...

  10. Delphi 重启应用程序(创建Bat文件的Process)

    Delphi 重启应用程序在工程主文件中加入Delay(500); //启动程序时请延时一段时间,否则只能重启一次 procedure RestartApp; var BatchFile: TextF ...