目录(?)[+]

 
    首先,抱怨一下。学校个破网,似乎把我端口封了,死活分不上IP,也许是是我MAC改的太频繁了,有盗号嫌疑……

然后,正文开始……

其实虚拟狗几天前就写完了,可这几天上不了网,所以没写博客……(你有完没完!!!)

然后,正文开始……

第二步开始搞定RY2_Open函数……完了。真的完了,RY2_Open一句代码都不用谢,Rockey2的库在第一步枚举Rockey2加密锁的时候就把每把锁的HID,UID,硬件版本(就是RY2_GetVersion获得的版本,所以RY2_GetVersion也不用写了)读到内存了,所以直接调用RY2_Open就可以正确返回狗的句柄了,不过这也有一点不好,无法通过虚拟狗截取程序要求的UID和HID,因为这部分的比较都在RY2_Open里完成了。

接着就是关键的读写部分了RY2_Read和RY2_Write,通过OD跟踪发现Rockey2的通讯都是通过HidD_SetFeature和HidD_GetFeature这两个API完成的,封装成了个函数,流程就是HidD_SetFeature发送命令和数据HidD_GetFeature接收返回数据分析了一下协议,很简单:

  1. HidD_SetFeature
  2. FUN: RY2_Read       RY2_Write       RY2_GenUID      RY2_Transform
  3. CMD: 81         82          87          8B
  4. ARG: block_index    block_index     FF          00
  5. PAG: 0-8        0-8         FF          [LEN]1
  6. ARG: [uid]4     [uid]4          00 00 00 00     [uid]4
  7. DAT: buffer512      buffer512       seed64          data32

重写了Get_Report的HID_REPORT_TYPE_FEATURE分支返回数据,增加了Set_Report函数处理命令。这样RY2_Read和RY2_Write也就完成了

至此,虚拟狗已经基本完成了,只剩RY2_GenUID和RY2_Transform两个与算法相关的API了,由于没有实物狗,是在无能为力。RY2_GenUID用的应该不多,至少实际产品中应该不会用到,如果被调用的话我只写了个弹出Seed的消息框,并不会生成UID,应该不会用到,如果被调用的话我只写了个弹出Seed的消息框,并不会生成UID,不过有两个例外,根据官方文档和OD了一个写狗程序,找到两个Seed-UID对

seed:12345 uid:2AA426F3
seed:chinacoho and chi uid:2BF2DB93

RY2_Transform就直接返回一串0了。

狗内的数据部分我做成了一个外部的dat文件,包括HID、UID、block内数据,这样就方便交流了。

有问题的朋友请留言,可以深入交流。

另:希望使用Rockey2的厂商一定要使用RY2_Transform函数,这样才能更有效的保护自己的产品

代码开源!感谢某位大神的帮助!地址:http://download.csdn.net/detail/douniwan5788/4114939

(发博客时发生了点小意外,Service Unavailable,登不上博客了,挂着代理才上来,Google了一下还是个常见问题……)

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

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

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

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

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

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

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

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

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

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

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

  6. Rockey 4加密狗介绍

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

  7. 盘点几种DIY加密狗的制作方法,适用于穿越机模拟器

    前言 前几天笔者的加密狗在使用中突然坏掉了,现象是插电脑不识别,LED灯不亮. 网上很多模友也反映了同样的问题: http://bbs.5imx.com/forum.php?mod=viewthrea ...

  8. J20航模遥控器开源项目系列教程(五)| 制作STM32F0接收机,8路PWM输出,SBUS输出,PPM输出 | 加密狗无线化,畅玩飞行模拟器

    我们的开源宗旨:自由 协调 开放 合作 共享 拥抱开源,丰富国内开源生态,开展多人运动,欢迎加入我们哈~ 和一群志同道合的人,做自己所热爱的事! 项目开源地址:https://github.com/J ...

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

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

随机推荐

  1. 显示标题栏中标题左侧的小图icon

    如何显示网站logo,定义网站收藏夹图标 代码与解释 <link rel="shortcut icon" href="/path/favicon.ico" ...

  2. Java中单例七种写法(懒汉、恶汉、静态内部类、双重检验锁、枚举)

    /*** * 懒汉模式 1 * 可以延迟加载,但线程不安全. * @author admin * */ public class TestSinleton1 { private static Test ...

  3. javascript小练习—记住密码提示框

    px/px solid redpxpx]; var oTips = document.getElementById("tips"); oP.onmousemove = functi ...

  4. jar文件につぃて

    打包jar文件和设置class路径: 查看jar文件内容:

  5. 在CentOS 7 / Gnome 3 双屏时设置主屏

    在Windows中设置扩展显示器为主屏的方式非常清楚,但在Linux中就不是那么明显了,下面介绍如何完成这个设置 ------------------------------------------- ...

  6. codeforces 149E . Martian Strings kmp

    题目链接 给一个字符串s, n个字符串str. 令tmp为s中不重叠的两个连续子串合起来的结果, 顺序不能改变.问tmp能形成n个字符串中的几个. 初始将一个数组dp赋值为-1. 对str做kmp, ...

  7. poj 3270 置换

    poj 置换的应用 黑书原题P248 /** 题意: 给定序列, 将其按升序排列, 每次交换的代价是两个数之和, 问代价最小是多少 思路:1.对于同一个循环节之内的,肯定是最小的与别的交换代价最小 2 ...

  8. 如何实现win7和VirtualBox中Ubuntu系统共享文件夹

    设备: 1.win7 旗舰版    2.VirtualBox虚拟机    3.Ubuntu12.04 以前在VM虚拟机中可以直接进行复制就可以将win7系统的文件复制到虚拟机中,然后现在安装了Virt ...

  9. java中三种常见内存溢出错误的处理方法

    更多 10   相信有一定java开发经验的人或多或少都会遇到OutOfMemoryError的问题,这个问题曾困扰了我很长时间,随着解决各类问题经验的积累以及对问题根源的探索,终于有了一个比较深入的 ...

  10. 测试linux和window下 jdk最大能使用多大内存

    在命令行下用 java -XmxXXXXM -version 命令来进行测试,然后逐渐的增大XXXX的值,如果执行正常就表示指定的内存大小可用,否则会打印错误信息. 发现在linux先 最多用java ...