目录(?)[+]

 
    首先,抱怨一下。学校个破网,似乎把我端口封了,死活分不上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. .NET平台和C#语言

    .NET平台的作用C#语言通过.NET平台来编写 部署 运行.NET应用程序. 为什么学习.NET语言1. C#语言是为.NET平台而生的.2. C#语言是完全面向对象的语言,所以一般情况下我们用C# ...

  2. java调试工具

    jps当前用户已启动的java进程信息,信息包括进程号和简短的进程command. jstat输出指定 jvm 实例的特定统计量:统计量:-class-compiler-gc-gccapacity-g ...

  3. T4模板之基础篇

    一.回顾 上一篇文章 ——T4模板之菜菜鸟篇,我们囫囵吞枣的创建了与“T4模板”有关的文件.在创建各个文件的这一个过程中,我们对于T4模板有了那么丁点的认识.现在就带着之前的那些问题,正式的迈入对“T ...

  4. oracle基础代码使用

    create or replace procedure pr_test1 is v_case ) :;--定义变量 begin -- /*判断语句 then dbms_output.put_line( ...

  5. 记录hyperic-hq搭建开发环境遇到的坑

    这个星期接到一个新的任务:解决HQ(一个用JAVA开发的开源的运维监控平台)现在遇到的snmp升级到3.0后bug.公司用的HQ是4.6版本.于是,我把项目从gitlab上clone下来后,就开始了我 ...

  6. c++ primer plus 习题答案(1)

    c++ primer plus 习题答案用的是第五版,IDE仍然是vs2013.我只标注了题号,具体的题目找下书上对应内容吧. p110.8 #include<iostream> #inc ...

  7. Servlet基础知识(三)—— 会话机制Session,Session和Cookie的异同

    Servlet会话机制: Http是一种无状态协议,它是无记忆的.也就是说,服务器不会保存用户的任何信息,当同一用户再次去访问时,服务器是不认识你的,它还是会建立新的连接. 但有时候我们需要服务器保留 ...

  8. 斗地主算法的设计与实现--项目介绍&如何定义和构造一张牌

    本篇主要讲解斗地主中如何比较两手牌的大小. 友情提示:本篇是接着以下两篇文章就讲解的,建议先看看下面这2篇. 斗地主算法的设计与实现--如何判断一手牌的类型(单,对子,三不带,三带一,四代二等) 斗地 ...

  9. 生成输出url

    继续使用前面的例子11-3URLTestDemo,修改Global.asax中的RegisterRoutes方法如下: public static void RegisterRoutes(RouteC ...

  10. Acegi

    https://blogs.oracle.com/darcy/entry/properties_via_annotation_processing http://www.oschina.net/que ...