飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 13174|回复: 30

[原创] 揭开加密狗模拟的神秘面纱之rockey2

[复制链接]

该用户从未签到

发表于 2009-6-24 22:00:44 | 显示全部楼层 |阅读模式
本人上一篇发布的 揭开加密狗模拟的神秘面纱之rockey6 首发在PYG
然后在看雪发

发帖没有别的目的,其一是想赚点虚荣心,其二是这种技术很少很少有人拿出来交流

原因不说大伙都明白吧,结果虚荣心一点没赚到,PYG的反应还算可以的
在看雪发的就惨不忍睹了,1000人浏览不足10人回帖
算了,至少在这里多赚点回帖,混个脸熟,嘿嘿

本文 揭开加密狗模拟的神秘面纱之rockey2
欢迎转载,但请保留作者信息
言归正传

Rockey2加密狗算是飞天系列最简单的一种,简单到什么程度呢
简单到你看完本文就会硬复制Rockey2啦

废话少说

本文这种介绍关于Rokey2的两种应对处理
1,硬复制,所谓硬复制既是在不改动程序的前提下做出和原版加密狗一模一样的狗出来,原则上只要程序不换狗,复制狗永远支持升级
2,软模拟,所谓软模拟既是在不改动程序的前提下模拟出软件对狗操作时狗对软件做出的反应

===================================Begin================================
本文内容有所借鉴,如有雷同实属正常
本文表达或描述有误之处欢迎拍砖  拍砖方式  860132006@QQ.Com

在罗嗦一句,本文适合有编程基础的朋友研究,哪怕是只会个易语言也成
不会编程的就当是看热闹了
先说说程序操作加密狗的一半流程

首先软件要先找到狗->然后打开狗->验证狗->读数据

不管目的是硬复制还是软模拟,最起码你要知道软件对狗做了什么坏事,才好做到有的放矢

找狗函数RY2_Find
看看定义,TRY2_Find=function():integer;stdcall;
简单吧
太简单了,不说了
抄点飞天的解释就成了
//return value
// <0        Error code
// =0        No ROCKEY2 dongle is attached
// >0        The number of attached ROCKEY2 dongle(s)

好了,现在狗找到了,下一步就是打开狗
RY2_Open

看定义
TRY2_Open=function(mode:integer; uid :cardinal; var hid :cardinal):integer;stdcall;
好像也挺简单的吧,通俗的解释下吧
就是打开自己定义好UID和HID的狗
比如说你拿A软件的狗运行B软件是不行滴
这里面比较重要的信息就是mode如果值为0拿恭喜你,可以完美的模拟狗了
否则只能模拟
// input:
// mode----This parameter indicates the way to open the dongle
// mode = 0, open the first found ROCKEY2 dongle
// mode > 0, open the dongle according to the UID. The mode value is the dongle number,
//           for example: uid=12345678, mode=2, this means it will open the second dongle with UID 12345678
// mode = -1, open the dongle according to the HID, and *hid can not be 0

现在狗打开了,怎么也得验验正身吧
用这个
function RY2_GenUID(handle:integer; var uid : cardinal; seed: pchar; isProtect:integer):integer;stdcall;
// input:
// handle---Dongle handle. It is the handle returned from RY2_Open.
// uid---Output parameter. The generated UID.
// seed---Seed to generate UID. It is a character string with the maximum length of 64 bytes
// isProtect---Sets write protection. 0=dongle not write protected, 1=dongle write protected.
// ROCKEY2_DISABLE_WRITE_PROTECT     =        0
// ROCKEY2_ENSABLE_WRITE_PROTECT        =1
// Return:
// Error code. Please refer to the later
如果软件用到了这个函数那么被硬件复制的可能性很大
最重要的是seed数据
{有些很罗嗦的文字就不打了,自己到官方看}

验明正身之后就该读取狗内的数据了
function RY2_Read(handle:integer;block_index : integer; buffer512:pchar):integer;stdcall;
// input:
// handle---Dongle handle. It is the handle returned from RY2_Open.
// block_index---Block index. Specify the block to read. The value range is 0-4.
// buffer512---Read buffer. The buffer must be at least 512 bytes to accommodate the 512 byte block size.
// Return:
// Error code. Please refer to the later
Rockey2定义了4个读模块1.2.3.4为序号就是Index的值 4个模块占据了狗512字节的存储空间
软件执行读命令之后,狗会把相应模块的数据写进内存缓冲区buffer

至于写操作就不说了,就是读的反操作
后面的关闭加密狗也不说了
下面说说软模拟的问题

总结下来软件会调用到加密狗的如下函数
RY2_Find,
RY2_Open,
RY2_GenUID,
RY2_Read;
RY2_Close
根据上面的思路和函数定义我们就可以开始写模拟狗的DLL
注意本文所讲的模拟狗必须是软件动态调用加密狗接口方式才有效
静态编译无效,需要另辟奇径,不在本文探讨范围之内
在写模拟狗之前需要说明的是,前提你得有和软件配套的狗才行
不然一切都是白说,有了狗还有监视软件对狗做了哪些坏事
这位说了:"怎么监视?"
问得好,如果你能通读一遍Rockey2的SDK那么自己写个监视器不成问题
如果没有能力写,那只有用我附件提供的监视器来监视软件对狗的操作了

开始写了,会Delphi的操起家伙,不会Delphi的,嘿嘿,慢慢啃吧
俺只用Delphi,C++不感冒

function RY2_Find(): integer; stdcall;
begin
Result:=1;
{这样软件就找到狗了,如果是个傻作者,只需这一句代码就模拟了,真晕,上哪找这么傻的作者哦}
end;

function RY2_Open(mode:integer; uid :cardinal; var hid :cardinal):integer;stdcall;
begin
Result:=0;
{这样就把狗打开了,mode不等于0的情况大伙自己研究处理方法吧}
end;

使用RY2_GenUID功能软件我还没有遇到过,我写的程序无法测试,怕写错了误人子弟,就不发了

function RY2_Read(handle:integer;block_index : integer; buffer512:pchar):integer;stdcall;
begin
{这里先把得到的狗内数据按照请求Index的值写到内存,写内存不用我再说了吧,编程的基本功}
Result:=0;
{返回0代表执行成功}
end;
写操作和关闭操作就不写了,思想是一样的

复制狗的思路和模拟差不多,只不过是把得到的数据写进真实狗罢了,参考飞天资料即可
这里不罗嗦了

好了,到这里本文完  老刘 作于 2009.06.23 0:55分
本文内容有所借鉴,如有雷同实属正常
========================The End===============================

评分

参与人数 1威望 +100 飘云币 +100 收起 理由
Nisy + 100 + 100 您的贴子很精彩,希望能再次分享!

查看全部评分

PYG19周年生日快乐!
  • TA的每日心情
    奋斗
    3 天前
  • 签到天数: 62 天

    [LV.6]常住居民II

    发表于 2009-6-25 07:24:04 | 显示全部楼层
    好精彩文章,如果有实例把代码补全就更多爽了
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2015-12-31 09:44
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2009-6-25 14:09:53 | 显示全部楼层
    学习学习  谢谢
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2009-6-25 22:59:28 | 显示全部楼层
    好文章,学习了。
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2009-6-29 12:35:44 | 显示全部楼层
    提示: 作者被禁止或删除 内容自动屏蔽
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2009-6-30 06:21:06 | 显示全部楼层
    上篇R6 楼主写的就非常好 /:good  继续学习一下

    加狗的程序多为商业软件 所以想针对文章讲解并且去实战的朋友 就得私下去收集一下需用加密狗的软件了
    PYG19周年生日快乐!
  • TA的每日心情
    无聊
    昨天 14:28
  • 签到天数: 522 天

    [LV.9]以坛为家II

    发表于 2009-7-3 06:51:42 | 显示全部楼层
    如果只是这样的话,那楼主基本是照抄飞天的开发手册,太没意思了,那个手册谁都看的懂
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2009-7-4 10:49:43 | 显示全部楼层
    回复一个 草草的看了一下
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2009-7-12 09:03:01 | 显示全部楼层
    要是再详细些就好了,对于刚刚接触狗的朋友真的是看的好迷糊啊。
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2020-12-31 08:08
  • 签到天数: 7 天

    [LV.3]偶尔看看II

    发表于 2009-7-14 08:18:58 | 显示全部楼层
    非常感谢,按照你的贴子,经过多天的研究终于写出了Rockey2狗的模拟程序,谢谢了!
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表