ROCKEY2 说明Word格式.docx
- 文档编号:20770946
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:45
- 大小:347.98KB
ROCKEY2 说明Word格式.docx
《ROCKEY2 说明Word格式.docx》由会员分享,可在线阅读,更多相关《ROCKEY2 说明Word格式.docx(45页珍藏版)》请在冰豆网上搜索。
ROCKEY2加密锁的初始化工具………………
12
简介
第六章
ROCKEY2加密锁的外壳加密……………
16
外壳加密步骤
初始ROCKEY2加密锁,生成UID
外壳加密
其他功能说明
17
第七章
ROCKEY2加密锁的函数调用(API)…….
19
ROCKEY2API接口
错误码
基本应用示例
综合应用示例
常见问题
21
22
28
第八章
34
一些问题的通常处理手段
常见问题
第一章简介
ROCKEY2加密锁是一套先进的软件保护产品,它是插在计算机的USB端口上的硬件设备。
对于受保护的软件,通过它,可以保护该软件不被非法复制和非授权访问或使用。
当使用加密锁加密保护您的软件后,启动所加密保护的程序时,此时若加密锁不在或对某个应用模块的访问已超过预先设定的次数,程序会发出错误信息,从而终止,这就达到了加密保护软件的目的。
同时ROCKEY2加密锁也可以支持许多其它的加密保护限制。
与其它一些同类产品不同,ROCKEY2加密锁实际上是个小型计算机,它配有CPU、存储器和特制的中间件,可以与应用程序交互运行。
ROCKEY2加密锁提供外壳加密功能。
外壳加密程序(Ry2Env32.exe)可以加密WindowsPE文件(如.dll,.exe及.arx等文件),使用极为简便,只需几秒钟就可完成。
如果您没有程序的源代码,或不熟悉API,外壳加密就是一个理想的加密手段。
如果可能,同时使用调用API函数与外壳加密可以大大增强加密性能。
ROCKEY2为单机锁,用于单机版的软件保护,提供源代码和外壳两种加密方式。
内含CPU和存储器。
本手册会逐一论述加密锁软件的一些组件,下面是一些简要介绍,并注明详细阐述的具体位置。
*加密锁外壳加密程序(Ry2Env32.exe)是一种快速方便的加密.dll、.exe和.arx等PE格式文件的工具。
适用于没有源程序,不熟悉加密锁的API的软件商。
(详细参见第六章ROCKEY2加密锁的外壳加密)
*加密锁的API可以用来灵活的创建高强度的加密保护方法。
本手册以VC++为示例程序程序进行了详细介绍,另外在光盘的Samples目录下提供了其它语言的例子程序。
(详细参见第七章ROCKEY2加密锁的函数调用(API))
ROCKEY2加密锁实现软件保护的原理:
通过在程序执行过程中对加密锁的访问,使程序带有对加密锁的硬件依赖性,利用加密锁硬件专用芯片的不可复制性,使软件也具有不可复制性,从而实现软件保护的目的。
ROCKEY2加密锁为USB接口方式,该加密锁的优点为即插即用,设备独立性好,缺点在于不是所有的计算机都带有USB端口。
ROCKEY2加密锁采用的是传统EPROM结构,但可供用户读写的空间有2560个字节,远远大于一般EPROM类型的加密锁,能够满足大量数据存储的需要。
1.兼容性好
ROCKEY2加密锁不仅对打印机、扫描仪等设备具有高度的透明性,特别是相同的ROCKEY2加密锁也可以使用USBHUB并联在一起使用,相互之间不会干扰。
2.速度快
对于已使用ROCKEY2加密锁加密后的软件,其运行速度同加密前区别不大,ROCKEY2加密锁也能够在很短的时间内处理完毕,保证用户程序的顺畅运行。
3.使用简便
ROCKEY2加密锁在API函数调用加密和外壳加密上都是从用户角度出发,最大限度地简化使用接口。
用户能够在很短的时间内掌握ROCKEY2加密锁的使用方法,节约在软件加密上所投入的时间。
4.高加密度
ROCKEY2加密锁是全新设计的高强度加密锁,有完整的用户管理,在用户生成UID的时候需要给出1个长度不超过64个字节的字符串作为种子,加密锁会根据这个种子生成UID,这个生成算法是在加密锁内部完成的,而且是不可逆的,也就是说,只有生成者才知道什么样的种子能生成什么样的UID,别的人即使知道UID,也能够调用这个计算过程,但因为不知道种子是什么,是无法生成您的UID的。
5.系统支持
ROCKEY2加密锁支持多种操作系统,加密的应用程序可以支持的系统平台:
Windows98、Windows2000/XP、Linux、MAC、FreeBSD。
6.软件接口丰富
ROCKEY2加密锁对于绝大多数开发工具都有相应的软件接口,DELPHI、VFP、VB、VC、C++BUILDER等等。
软件的保护强度并不仅仅依赖加密锁本身,其中很大程度取决于开发者如何使用加密锁,即使有优秀的加密锁产品,但是开发者不能把它的功能完全发挥出来也跟最差的加密锁
没有区别。
ROCKEY2加密锁提供了两种方式的加密手段,第一种是外壳加密,另外一种是API调用加密。
外壳加密是通过我们光盘Utilities\Enveloper目录下的Ry2Env32.exe外壳加密工具来实现的,顾名思义,外壳加密是通过给用户的某些文件加上一层运行时访问调用ROCKEY2加密锁的机制来实现对软件的保护。
在开发者执行加过壳的程序的时候,外壳部分的程序会自动访问ROCKEY2加密锁,并根据访问结果来决定是否允许程序继续执行下去。
外壳加密是直接对开发者编译后的文件进行的加密处理,它的优点是不需要开发者学习很多的加密知识,也不需要开发者对源程序做任何的改动,当开发者没有多余的时间学习如何加密软件,或者源程序遗失的情况下,这种加密方式无疑是很便利的,但这种方法的加密强度不算很高,因为是由程序自动完成的加密处理,所以有一定的规律可循,而且对VBA等无法编译的脚本性语言无法加密,这些都是外壳加密的固有缺陷。
API调用加密是开发者根据自己的开发语言选择ROCKEY2加密锁提供的合适的语言接口进行加密锁的访问处理,API调用加密使用灵活,可以发挥ROCKEY2加密锁提供的所有功能,而且加密点和加密方式由开发者自己掌握。
但API调用方式必须结合开发者的源程序来进行,要求开发者学习并掌握ROCKEY2加密锁的API调用方法,对开发者要求的起点比较高。
第二章
ROCKEY2加密锁的硬件特性
ROCKEY2加密锁的核心是带USB接口的专用CPU。
另外加密锁CPU内部还有一片存储器芯片,存储的数据掉电后不会丢失。
我们把它划分成五个存储单元。
开发者则可以将软件的一些重要信息(如序列号等)保存在加密锁中,需要注意的是,每个存储单元可写10万次,读的次数不受限制。
10万次是个很大的数,一般完全可以满足绝大多数开发者的要求,只要不当成内存单元来使用就好。
ROCKEY2加密锁支持USB1.1标准,通过USBHUB进行扩展,并且在每个USB加密锁上面有附加的信号灯,开发者可以通过信号灯来判定一些常见的问题(正常状态在插入USB加密锁以后信号灯常亮,如果信号一闪一闪表示系统加载错误等)。
原则上说,USB口加密锁是即插即用的,可随时插拔。
实际上,因为现在的计算机主板都有很好的保护措施,大多数情况带电插拔也没有什么问题。
要注意的是在比较干燥的环境下,主机和人体间可能存在很高的电压差(几百到几千伏),若带电插拔,也可能会造成锁中芯片的过压损坏。
USB加密锁虽然是即插即用,但如果在程序正在访问的过程中拔出加密锁,可能会导致系统的不稳定。
第三章
ROCKEY2加密锁的开发包
在我们的开发套件(大盒子)内有一张光盘,这个就是ROCKEY2加密锁的开发包,开发者可以通过里面提供的工具和接口完成软件的加密工作。
浏览光盘目录。
光盘上的内容是未经压缩的,对于熟练的开发者,完全可以不安装整个开发包,只从光盘上找到需要的内容拷贝到硬盘上即可。
安装硬件
ROCKEY2加密锁是USB接口的HID设备,在Win32、Linux等多种平台下都有系统自带的驱动支持,不需要安装额外的驱动程序。
如图,插入Windows系统时在设备管理器中显示为“人体学输入设备”,如图3-1:
光盘目录及相关软件运行图如下:
第四章
ROCKEY2加密锁的基本概念
为了更好发挥使用ROCKEY2加密锁来实现软件保护,建议开发者详细阅读本章内容,本章介绍了ROCKEY2加密锁相关的基本概念。
在用户生成UID的时候需要给出1个长度不超过64个字节的字符串作为种子,加密锁会根据这个种子生成UID,这个生成算法是在加密锁内部完成的,而且是不可逆的,也就是说,只有生成者才知道什么样的种子能生成什么样的UID,别的人即使知道UID,也能够调用这个计算过程,但因为不知道种子是什么,是无法生成您的UID的,从而该ID就成为用户ID,即用户密码。
开发商刚从我公司拿到ROCKEY2加密锁的时候,缺省的UID为0,这时候虽然能够使用这个等于0的UID来打开加密锁并进行读写操作,但无法获得正确的硬件ID(HID),因为我们的设定是当UID等于0的时候,表示的是出厂状态,这时候HID也会返回0。
只有当用户设定了自己的UID以后,才能够获得正确的硬件ID(HID)。
每个ROCKEY2加密锁内部都有一个唯一的硬件ID,这个硬件ID是在加密锁出厂时烧入的,即使是厂家也不能修改这个硬件ID,而且这个硬件ID具有唯一性,即世界上不可能有两个相同硬件ID的ROCKEY2加密锁,当开发者需要给特定用户加密时,可以通过检查这个ID来确认加密的唯一有效性。
每个ROCKEY2加密锁内部有五个存储区,开发者可以读/写这一区域,例如在此区域写入一些软件运行所需得重要信息或相关的内容来检验软件的合法性,促使软件在只有加密锁的情况下才能正常工作。
ROCKEY2加密锁的每个区域大小为512字节。
ROCKEY2加密锁内置不公开算法,可以利用此算法进行加密处理相关数据等,以便提高您软件的加密强度。
第五章
ROCKEY2加密锁的初始化工具
ROCKEY2加密锁初始化(Utilities\Init\InitROCKEY2.exe)工具可以对ROCKEY2加密锁进行UID(即用户密码)的生成,用户内存区的写入/读取操作(如图5-1所示)。
下面分别介绍这几部分的功能:
图5-1
(1)点击“GenerateUID”如图5-2所示,您可以发现已经找到一只ROCKEY2加密锁,弹出的对话框需要您输入原始密码,如图中的“12345”,当以该串为原始密码点击“OK”,则如图5-3,生成UID为715400947的用户加密锁。
图5-2
图5-3
<
注意>
:
该原始密码长度不超过64个字节,而且请您牢记,否则您无法再次重新生成同样UID的ROCKEY2加密锁,同时提醒您初始化加密时会清空锁中已有的数据信息。
(2)待初始化ROCKEY2加密锁后,点击“Write”按钮,则可以根据生成的UID来写入读取加密锁5个存储单元的内容,如图5-4,5-5,5-6,对ROCKEY2加密锁0存储单元写入数据:
图5-4
图5-5
图5-6
(3)点击“Read”按钮,如图5-7所示,显示写入0区的内容:
图5-7
第六章
ROCKEY2加密锁的外壳加密
ROCKEY2加密锁的外壳加密是保护您的软件最快捷的方法,使用外壳加密工具这种加密方案非常简单,对于没有源代码或没有很多时间编写代码加密的开发者是极为方便的。
考虑到软件的发展趋势,我们的外壳加密工具目前仅对32位应用程序有效。
目前支持的文件格式有Win32PE格式的文件EXE、DLL,ARX等。
在光盘或安装目录\Utilities\Enveloper\Ry2Env32.exe是ROCKEY2加密锁的外壳加密工具,如下图6-1所示:
图6-1
在采用外壳加密(Ry2Env32.exe)工具加密保护您的软件之前,请您注意备份要保护的文件。
您可以仅利用一把ROCKEY2加密锁使用外壳加密(Ry2Env32.exe)工具来多次和采用不
同方法处理保护您的软件。
如果您采用外壳加密(Ry2Env32.exe)工具和函数调用(API)共同保护软件时,请您先用(API)加密处理您的源程序后((API)加密处理,请您参见第七章ROCKEY2加密所的函数调用),再用外壳加密(Ry2Env32.exe)工具。
外壳加密步骤:
1.初始ROCKEY2加密锁,生成UID:
该步骤详细操作,参见第五章。
2.外壳加密:
执行加密,这时进度条会显示工作进度,最后提示“文件加密成功,如图6-2所示:
图6-2
3.其它功能说明:
进行定时检测:
该功能表现为当软件加密启动后,以此间隔时间查找加密锁,一旦发现加密锁不存在,则立刻终止程序正常运行。
高级:
为您提供多线程方式,最大化的提供外壳加密处理机制,如图6-3。
图6-3
特别推荐>
:
开发者可以同时使用API(参见第七章ROCKEY2加密锁的函数调用(API))和外壳加密来实现最大限度的保护。
第七章
ROCKEY2加密锁的函数调用(API)
ROCKEY2加密锁应用程序开发界面(API)是ROCKEY2加密锁最基本也是最灵活的加密方式。
使用我们提供的API来加密的程序,能够最大限度的发挥加密锁的功能,加密效果的好坏依赖于您如何使用它。
我们最大限度地简化了API的接口。
使用API通过应用程序在ROCKEY2中插入调用来提高安全性。
您可以在应用程序的任何地方来检测ROCKEY2加密锁的存在,并决定如何响应检测结果。
您也可以检测您存储在ROCKEY2加密锁各个内存区中的数据。
下面以C的接口来举例说明一下接口参数的含义,其它语言基本是大同小异的。
Rockey2API接口
1.RY2_Find:
查找计算机上连接的Rockey2加密锁设备
EXTERN_CintWINAPIRY2_Find();
返回
小于0
表示返回的是一个错误码。
为0
表示没有任何Rockey2设备存在
大于0
返回的是找到的Rockey2加密锁的个数
2.RY2_Open:
打开指定的加密锁
EXTERN_CintWINAPIRY2_Open(intmode,DWORDuid,DWORD*hid);
输入
mode
此参数表示打开加密锁的方式
mode=0表示的是打开第1个找到的Rockey2,不理会UID和HID
mode>
0表示的是按UID方式打开,这时候mode的值表示的是要打开锁的序号譬如:
uid=12345678,mode=2表示的是希望打开uid等于12345678的第2把加密锁。
mode=-1表示的是按HID方式打开,要求*hid不能为0
为了使用方便.定义了两个宏:
AUTO_MODE=0
HID_MODE=-1
uid(UserID)
当按UID方式打开的时候,在这给出要打开加密锁的UID,此UID就是用户调用RY2_GenUID功能获得的用户ID。
hid
这个是加密锁的硬件ID,这是1个输入/输出值,如果按HID方式打开加密锁的时候,表示希望打开硬件ID=*hid的加密锁。
不论以哪种方式打开加密锁,在成功打开加密锁以后会在这返回加密锁的硬件ID
>
=0
表示成功,返回的就是打开的加密锁的句柄
0
返回的是一个错误码。
3.RY2_Close:
关闭指定的加密锁
EXTERN_CvoidWINAPIRY2_Close(inthandle);
handle设备的句柄,跟RY2_Open命令返回的handle一致。
返回的是一个错误编码,具体含义请看下面的错误编码部分。
4.RY2_GenUID:
生成用户ID
EXTERN_CintWINAPIRY2_GenUID(inthandle,DWORD*uid,char*seed,intisProtect)
handle
设备的句柄,跟RY2_Open命令返回的handle一致。
uid
输出参数,生成的用户ID从此参数返回
seed
用户给出的用于生成用户ID的种子,这是一个最大长度可以是64个字节的字符串
isProtect
保留>
一个错误编码,具体含义请看下面的错误编码部分
5.RY2_Read;
读取加密锁内容
EXTERN_CintWINAPIRY2_Read(inthandle,intblock_index,char*buffer512);
block_index
块索引,指明要读取的是哪1个块,取值为(0-4)
buffer512
读出块的缓冲区,因为每个块的长度固定为512个字节,所以这个buffer的大小至少是512个字节
6.RY2_Write:
写入加密锁内容
EXTERN_CintWINAPIRY2_Write(inthandle,intblock_index,char*buffer512);
7.RY2_Transform:
进行数据变换(内部算法实现)
EXTERN_CintWINAPIRY2_Transform(inthandle,intlen,BYTE*data);
len
输入数据data的长度,最大不超过32个字节
data
用户输入数据
Data变换后的数据
8.RY2_GetVersion:
取硬件版本号
EXTERN_CintWINAPIRY2_GetVersion(inthandle);
硬件版本号
错误编码
宏
值
含义
RY2ERR_SUCCESS
0
成功,没有错误
RY2ERR_NO_SUCH_DEVICE
0xA0100001
没有找到给定要求的设备(参数错误)
RY2ERR_NOT_OPENED_DEVICE
0xA0100002
在调用此功能前需要先调用RY2_Open打开设备(操作错误)
RY2ERR_WRONG_UID
0xA0100003
给出的UID错误(参数错误)
RY2ERR_WRONG_INDEX
0xA0100004
读写操作给出的块索引错误(参数错误)
RY2ERR_TOO_LONG_SEED
0xA0100005
调用GenUID功能的时候,给出的seed字符串长度超过了64个字节(参数错误)
RY2ERR_WRITE_PROTECT
0xA0100006
试图改写已经写保护
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ROCKEY2 说明
![提示](https://static.bdocx.com/images/bang_tan.gif)