首页
社区
课程
招聘
Rockey4锁的分析之一 基础知识
发表于: 2006-4-9 17:02 29202

Rockey4锁的分析之一 基础知识

nig 活跃值
4
2006-4-9 17:02
29202

首先感谢您能看这篇文章,写的不好,请您见谅!
目的:普及一下Rockey4锁的基本知识及分析的一些方法。
      有机会分析一下Rockey4的锁壳。
练习内容:系统所带的文件
说明:Rockey4 下文中简称R4 R4分并口和USB锁,外壳颜色有区分
      硬件ID也常是下文中说的流水号

一、调用锁的指令

1. 查找锁(RY_FIND)
目的: 查找指定密码的加密锁是否存在
输入参数:
function = RY_FIND  功能码 1
*p1 = 密码1    //必须
*p2 = 密码2    //必须
*p3 = 密码3 (可选)
*p4 = 密码4 (可选)
返回:
retcode = 0 表示成功,其它为错误码。无锁错误码为3
当成功时,*lp1 中为加密锁的硬件ID

//说明:1)密码1及密码2的是必须的,也是查找锁的基础,也称为一级口令。
        密码3和密码4是高级密码,只有有了这一组密码才可以写锁的用
        户ID区,模块区,自定义算法区,这三块的内容中除用户ID区
        外,其它二个正是锁的复制难点之处。
        2)返回的lp1中数据类型为无符号整数,这一个也正是识别不同的R4
        锁的重要之处。同时也是一些软件加密要用的内容。因为厂商号称
        硬件ID全世界唯一。

2.查找下一锁(RY_FIND_NEXT)
目的: 查找是否还有指定密码的加密锁
输入参数:
function = RY_FIND_NEXT
*p1 = 密码1
*p2 = 密码2
*p3 = 密码3 (可选)
*p4 = 密码4 (可选)
*lp1 = RY_FIND或RY_FIND_NEXT所找到的上一把加密锁的硬件ID
返回:
retcode = 0 表示成功,其它为错误码。
当成功时,*lp1 中为加密锁的硬件ID

3. 打开锁(RY_OPEN)
目的: 打开指定密码及硬件ID 的加密锁
输入参数:
function = RY_OPEN
*p1 = 密码1   //和1功能中应该相同,且不可改变Lp1中的硬件ID
*p2 = 密码2   //和1功能中应该相同
*p3 = 密码3 (可选)
*p4 = 密码4 (可选)
*lp1 = 硬件ID
返回:
retcode = 0 表示成功,其它为错误码。
当成功时,*handle 为加密锁的句柄
lp2 为加密锁的类型
TYPE_ROCKEY4      1 // ROCKEY4 标准并口类型
TYPE_ROCKEY4P     2 // ROCKEY4+增强并口类型
TYPE_ROCKEYUSB    3 // ROCKEY4 标准USB 类型
TYPE_ROCKEYUSBP   4 // ROCKEY4+增强USB 类型
TYPE_ROCKEYNET    5 // ROCKEY4 网络并口类型
TYPE_ROCKEYUSBNET 6 // ROCKEY4 网络USB 类型

//说明: 在lp2中的类型比较重要,一些锁用的比较好的。会判断当
         前的锁的类型,如果类型不对,就是其它的参数相同,也会
         不认当前的锁。
         在这里请注意锁的类型不同,相应的数据量也不同,标版内
         存区为24个字节,自定义算法区 32条指令,增强版及网络版
         内存区为120个字节,自定义算法区为80条指令。

4. 关闭锁(RY_CLOSE)
目的: 关闭相应handle 的加密锁
输入参数:
function = RY_CLOSE
*handle = 锁的句柄
返回:
retcode = 0 表示成功,其它为错误码。

5. 读锁(RY_READ)
目的: 读出加密锁用户读写区的内容
输入参数:
function = RY_READ
*handle = 锁的句柄
*p1 = 位置
*p2 = 长度(以字节为单位)
buf = 缓冲区的指针
返回:
retcode = 0 表示成功,其它为错误码。
当成功时,buf 中为读入的内容。

//buf是直接的内存区,在读数据时要根据功能3中返回的类型判断长度,不
  要超长,标版24 增强及网络版是120。

6. 写锁(RY_WRITE)
目的: 向用户读写区内写入内容
输入参数:
function = RY_WRITE
*handle = 锁的句柄
*p1 = 位置
*p2 = 长度(以字节为单位)
buffer = 缓冲区的指针
返回:
retcode = 0 表示成功,其它为错误码。

//说明同上

7. 随机数(RY_RANDOM)
目的: 从加密锁得到一个随机数
输入参数:
function = RY_RANDOM
*handle = 锁的句柄
返回:
retcode = 0 表示成功,其它为错误码。
当成功时,*p1 中为加密锁返回的随机数

//这个在实际加密的过程中没有多大的意义,在自定义的算法中有意
  义,但不是我们调用得到的。这个功能对用户开放无多大的意义。

8. 种子码(RY_SEED)
目的: 得到种子码的返回码
输入参数:
function = RY_SEED
*handle = 锁的句柄
*lp2 = 种子码    //重要之处,在分析时一定要注意这个入口值是多少
返回:
retcode = 0 表示成功,其它为错误码。
当成功时,
*p1 = 返回码1
*p2 = 返回码2
*p3 = 返回码3
*p4 = 返回码4

//说明:4个返回值用处很大,也是加密者经常使用的功能,这个种子码和锁的密
        码相关,同号锁(指密码相同)生成的种子返回值都是相同的。
        这个功能在锁壳的分析中也是难度最大的,如果没有锁,那是没有办法
        知道返回值的,但可以采用变通的方式来完成,从而取得种子码的返回
        值,也就是常说的无锁脱锁壳的方法。

9. 写用户ID

  • (RY_WRITE_USERID)

  • [培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

    收藏
    免费 7
    支持
    分享
    最新回复 (36)
    雪    币: 2506
    活跃值: (1030)
    能力值: (RANK:990 )
    在线值:
    发帖
    回帖
    粉丝
    2
    看样子还有续集,等着看
    2006-4-9 17:05
    0
    雪    币: 389
    活跃值: (912)
    能力值: ( LV9,RANK:770 )
    在线值:
    发帖
    回帖
    粉丝
    3
    支持一下.
    2006-4-9 17:06
    0
    雪    币: 260
    活跃值: (81)
    能力值: ( LV4,RANK:50 )
    在线值:
    发帖
    回帖
    粉丝
    4
    呵呵,找个r4学习一下
    2006-4-9 17:31
    0
    雪    币: 86
    活跃值: (1253)
    能力值: ( LV2,RANK:10 )
    在线值:
    发帖
    回帖
    粉丝
    5
    最初由 CCDebuger 发布
    看样子还有续集,等着看
    2006-4-9 18:14
    0
    雪    币: 250
    活跃值: (103)
    能力值: ( LV6,RANK:90 )
    在线值:
    发帖
    回帖
    粉丝
    6
    支持!等待续集。。。。
    2006-4-9 19:55
    0
    雪    币: 175
    活跃值: (2601)
    能力值: ( LV2,RANK:10 )
    在线值:
    发帖
    回帖
    粉丝
    7
    希望能有续集。
    2006-4-9 20:32
    0
    雪    币: 234
    活跃值: (370)
    能力值: ( LV9,RANK:530 )
    在线值:
    发帖
    回帖
    粉丝
    8
    强!学习+支持
    2006-4-9 20:41
    0
    雪    币: 235
    活跃值: (191)
    能力值: ( LV9,RANK:170 )
    在线值:
    发帖
    回帖
    粉丝
    9
    支持nig
    学习学习
    2006-4-9 21:53
    0
    雪    币: 244
    活跃值: (105)
    能力值: ( LV5,RANK:60 )
    在线值:
    发帖
    回帖
    粉丝
    10
    晕,LZ都是直接把R4的说明书打下来了?
    来点有价值的吧?
    2006-4-9 22:11
    0
    雪    币: 32
    活跃值: (1920)
    能力值: ( LV2,RANK:10 )
    在线值:
    发帖
    回帖
    粉丝
    11
    等着看
    2006-4-9 23:04
    0
    雪    币: 413
    活跃值: (752)
    能力值: ( LV9,RANK:170 )
    在线值:
    发帖
    回帖
    粉丝
    12
    文章不是针对各位熟悉 R4的大侠的,我说了,第一部分是基础知识,续集有的.但做为一个系列讲,总得讲点基础吧!呵呵.

    手册不是每个人都会花心思细看,也不是看了马上就明白,与其光看不动手,不如做点实际应用的内容,再加练手了.

    续集准备2个部分,一个是程序的调用的分析,二是狗壳。

    原此处的话删除,理解错误,希望10楼的兄弟不要介意!
    2006-4-10 00:13
    0
    雪    币: 260
    活跃值: (81)
    能力值: ( LV4,RANK:50 )
    在线值:
    发帖
    回帖
    粉丝
    13
    最初由 nig 发布
    文章不是针对各位熟悉 R4的大侠的,我说了,第一部分是基础知识,续集有的.但做为一个系列讲,总得讲点基础吧!呵呵.

    手册不是每个人都会花心思细看,也不是看了马上就明白,与其光看不动手,不如做点实际应用的内容,再加练手了.

    10楼的兄弟的 LZ是老子的意思,这样称呼显得你有些年长啊!

    不用理会10楼的兄弟哦,我还等着续集呢!
    2006-4-10 00:21
    0
    雪    币: 2506
    活跃值: (1030)
    能力值: (RANK:990 )
    在线值:
    发帖
    回帖
    粉丝
    14
    nig 可能有点误会了,我猜10楼说的 LZ 应该是楼主的意思,我想应该不会是老子的意思。
    2006-4-10 00:26
    0
    雪    币: 201
    活跃值: (10)
    能力值: ( LV2,RANK:10 )
    在线值:
    发帖
    回帖
    粉丝
    15
    支持nig
    学习学习等着续集呢!
    2006-4-10 00:31
    0
    雪    币: 224
    活跃值: (14)
    能力值: ( LV2,RANK:10 )
    在线值:
    发帖
    回帖
    粉丝
    16
    最初由 CCDebuger 发布
    nig 可能有点误会了,我猜10楼说的 LZ 应该是楼主的意思,我想应该不会是老子的意思。


    同意.俺也习惯LZ=楼主
    真称老子,语句强调大多会不愿缩写的.不过这种人可能不多?!
    等楼主的续篇
    2006-4-10 00:41
    0
    雪    币: 260
    活跃值: (81)
    能力值: ( LV4,RANK:50 )
    在线值:
    发帖
    回帖
    粉丝
    17
    从语法的角度上看,感觉用楼主的话不通顺哦!
    2006-4-10 00:44
    0
    雪    币: 212
    活跃值: (10)
    能力值: ( LV2,RANK:10 )
    在线值:
    发帖
    回帖
    粉丝
    18
    顶顶!!!
    2006-4-10 14:47
    0
    雪    币: 261
    活跃值: (162)
    能力值: ( LV13,RANK:320 )
    在线值:
    发帖
    回帖
    粉丝
    19
    用户手册里的API使用说明里要更详细。
    2006-4-10 14:56
    0
    雪    币: 671
    活跃值: (3070)
    能力值: ( LV2,RANK:10 )
    在线值:
    发帖
    回帖
    粉丝
    20
    支持,期待续篇
    2006-4-12 09:57
    0
    雪    币: 223
    活跃值: (25)
    能力值: ( LV4,RANK:50 )
    在线值:
    发帖
    回帖
    粉丝
    21
    最初由 脱壳请教 发布
    晕,LZ都是直接把R4的说明书打下来了?
    来点有价值的吧?


    2006-4-12 11:53
    0
    雪    币: 159
    活跃值: (99)
    能力值: ( LV4,RANK:50 )
    在线值:
    发帖
    回帖
    粉丝
    22
    NIG大牛哥,,支持。。。。
    2006-4-12 16:40
    0
    雪    币: 236
    活跃值: (48)
    能力值: ( LV2,RANK:10 )
    在线值:
    发帖
    回帖
    粉丝
    23
    先顶一下吧,继续期待,老兄
    2006-4-12 16:49
    0
    雪    币: 279
    活跃值: (145)
    能力值: ( LV9,RANK:290 )
    在线值:
    发帖
    回帖
    粉丝
    24
    学习+支持!
    2006-4-12 17:22
    0
    雪    币: 244
    活跃值: (105)
    能力值: ( LV5,RANK:60 )
    在线值:
    发帖
    回帖
    粉丝
    25
    最初由 nig 发布
    文章不是针对各位熟悉 R4的大侠的,我说了,第一部分是基础知识,续集有的.但做为一个系列讲,总得讲点基础吧!呵呵.

    手册不是每个人都会花心思细看,也不是看了马上就明白,与其光看不动手,不如做点实际应用的内容,再加练手了.

    续集准备2个部分,一个是程序的调用的分析,二是狗壳。
    ........


    呵呵,我平时都是用LZ替代楼主的,想不到茶点被大家误会呀~
    R4我平时基本都是硬件复制,因为API已经背的太熟了,所以急了点,呵呵~
    2006-4-12 22:36
    0
    游客
    登录 | 注册 方可回帖
    返回
    //