Sentinel SuperPro 6.0 加密锁快速入门
  Sentinel SuperPro 6.0 加密锁快速入门

使用Sentinel SurperPro软件保护锁完成软件保护


目 录

使用Sentinel SurperPro软件保护锁完成软件保护 1
第一章 关于SentinelSuperPro软件保护锁 1
1. SentinelSuperPro如何保护软件开发商的软件 1
2. SentinelSuperPro软件保护方式 2
3. SentinelSuperPro软件保护锁内部结构 3
第二章 Sentinel SuperPro开发组件的安装 5
1. Sentinel SuperPro开发组件的组成 5
2. 系统要求 5
3. SentinelSuperpro 6.0安装程序光盘的构成 2
4. 准备 2
5. 安装SentinelSuperPro 6.0 SDK开发工具包 2
6. 安装SentinelSuperPro 6.0 API接口程序 4
7. 安装演示版软件远程激活工具——Client Activator 5
8. 安装Acrobat Reader 5
9. Sentinel SuperPro6.0开发组件系统菜单构成 5
第三章 外壳软件保护方式保护开发商的软件 7
第四章 嵌入API软件保护方式保护开发商的软件 23
第五章 封装、发行开发商的软件 48
1)手工安装 48
2)使用Installshield打包制作安装程序 48
第六章 SentinelSuperPro批量保护开发商的软件 50
1. 打开工程文件 50
2. 批量编程SuperPro 51
3. 模块销售软件 51
第七章 SentinelSuperPro故障诊断工具—SentinelMedic 53
第八章 SuperPro6.0的远程升级功能 55
第九章 客户技术支持 55




第一章 关于SentinelSuperPro软件保护锁
1. SentinelSuperPro如何保护软件开发商的软件
使用SentinelSuperpro软件保护锁完成软件保护,就是将软件开发商的未被保护的应用程序与SentinelSuperpro软件保护锁加密算法相绑定过程。 终实现绑定后的应用程序没有软件保护锁不能单独运行,只有插入软件开发商自己定义算法的软件保护锁,应用程序才能正常运行。当软件开发商的软件销售给 终用户后,软件即使被非法复制,而没有软件开发商提供的软件保护锁软件不能被使用。这样一来,从技术上防止盗版起到软件保护的作用。
应用程序和SentinelSuperpro软件保护锁加密算法的绑定,是通过API函数调用来校验软件保护锁是否存在来实现的。API函数验证分由三部分组成:
1)询问部分:开发商的应用程序通过API调用向软件保护锁的驱动程序发出的“查询串”, 驱动程序自动将“查询串”传给并口或USB口上的SuperPro软件保护锁上的算法单元。如图:1-1,步骤1,2。
2)运算部分:加密锁通过内部的算法芯片计算“查询串”,并将运算结果“响应串”返回给驱动程序。如图:1-1,步骤3。
3)程序鉴定、行动部分:驱动程序将“响应串”返回给应用程序中的API函数调用。应用程序对返回值—“响应串”进行比较判断,判断与预知运算结果是否相等,根据判断的结果进行相应的行动。如图:1-1,步骤4。
如果返回值—“响应串”与预知运算结果相等,则说明保护应用程序的软件保护锁存在,使用程序的用户为合法用户。不相等则说明保护应用程序的软件保护锁不存在,用户为非法用户,应用程序将终止被使用。





2. SentinelSuperPro软件保护方式
SentinelSuperPro提供给软件开发商两种方式完成软件保护:嵌入API软件保护方式;外壳软件保护方式(又称为自动软件保护方式)。
1)嵌入API软件保护方式:开发商直接在源程序代码中嵌入校验加密算法的SuperPro API函数调用,程序经过编译、连接后,生成与SuperPro绑定的应用程序。开发商可以通过这种软件保护方式来设计加密策略,控制加密的频度和位置。如何实现API软件保护方式请参阅第四章。
2)外壳软件保护方式:开发商使用SentinelSuperpro外壳软件保护工具,直接对已经生成的可执行文件(EXE或 DLL文件)进行处理。外壳软件保护工具会自动的嵌入校验加密算法的SuperPro API函数调用,完成应用程序与SuperPro的绑定,生成被保护后的应用程序。开发商无需修改源程序,整个加密过程只需几分钟。如何实现外壳软件保护方式请参阅第三章。
3. SentinelSuperPro软件保护锁内部结构
SentinelSuperPro软件保护锁内部结构,如图1-2所示:





1)SentinelSuperPro软件保护锁内部有64个字单元0~3F(十六进制),其中前8个单元(0#~07#)软件保护锁内部保留,软件开发商可使用后56个单元,08~3F#(十六进制)。
2)软件保护锁内部单元中,以偶字节开头(图中箭头所示)的两个连续的单元可以定义一个算法单元,保护一个应用程序。如:08/09单元,2A/2B单元,3E/3F单元都是算法单元,它们每个都可以保护一个应用程序。
3)56个单元 多可以定义28个算法单元。因此,一个SuperPro软件保护锁可以分别保护28个应用程序。
4)被保护的应用程序实际上是对SuperPro内部的算法单元发“查询串”,算法单元运算“查询串”返回给应用程序运算结果“响应串”。如图:1-3

5)软件开发商使用“外壳软件保护方式”保护软件,只需要就是定义“算法单元”的加密算法,SuperPro开发工具就可自动完成软件保护过程。
6)软件开发商使用“嵌入API软件保护方式” 保护软件,首先需要定义“算法单元”的加密算法,然后,生成一定数量的“查询串” “响应串”对, 后,在源程序代码中嵌入向SuperPro发“查询串”的查询函数,并比较返回的“响应串”与预先知道的“响应串”是否相等,然后,进行相应的操作。


第二章 Sentinel SuperPro开发组件的安装
1. Sentinel SuperPro开发组件的组成
 一只SentinelSuperPro软件保护锁。
 一张SentinelSuperPro 6.0 开发组件安装程序光盘。
 一封带有开发商ID和加密锁密码的信封。
 一本SentinelSuperPro用户快速入门(本文)。
 英文Quick Start Guide (快速入门手册)。
 英文Sentinel SuperPro 6.0 Developer’s Guide (SentinelSuperPro开发者手册)。
2. 系统要求
1) 低硬件要求
 CPU 奔腾90以上的IBM兼容机。
 32MB以上内存。
 30M以上的剩余硬盘空间。
 VGA显示器(800x600 256色以上显示分辨率)。
 光盘驱动器。
2) 低软件要求
 Windows9x,WindowsNT4(Service Pack4以上),Windows2000操作系统。
 IE4.0以上的网络浏览器。
3. SentinelSuperpro 6.0安装程序光盘的构成
1)SentinelSuperpro 6.0开发组件(光盘根目录\SentinelSuperPro6.0.exe)。
2)Sentinel加密锁的驱动程序(光盘中\Sentinel System Driver目录)。
3)Sentinel加密锁加密数据文件的驱动程序(光盘中\Data Protection Driver目录)。
4)SentinelSuperpro加密锁API语言接口程序(光盘中\interfaces目录)。
5)Adobe Acrobat Reader SentinelSuperpro说明书阅读取器(光盘中\Acrobat目录)。
4. 准备
1)安装开发组件光盘时,建议关闭系统中已运行的其他应用程序。
2)打开开发组件中的信封,将印有开发商ID号和密码的信纸取出并准备在手边。
3)将SentinelSuperPro软件保护锁插在计算机并口或USB口上。
4)将SentinelSuperPro用户快速入门(本文)准备手边。
5)将SentinelSuperPro 6.0开发组件安装程序光盘取出准备手边。
5. 安装SentinelSuperPro 6.0 SDK开发工具包(SentinelSuperPro 6.0 Developer's Toolkit)
1)将Sentinel SuperPro 6.0安装程序光盘放入光驱中。
2)开发组件光盘“AUTORUN”自动启动安装程序进入安装程序界面。(如果您的计算机关闭了AUTORUN功能,请双击光盘根目录的Index.html程序)。
3)IE4(Internet Explorer 4)将自动启动并出现如下窗口:如图:图2-1。

图2-1
4)选择安装SentinelSuperPro 6.0 Developer's Toolkit(SentinelSuperPro 6.0 SDK开发工具包)。请用鼠标左键点击连接SentinelSuperPro 6.0 Developer's Toolkit,如图2-1,标识1处。
5)IE系统会提示如何处理该文件:是在“当前位置运行该程序”,还是“将该程序保存到磁盘”,请选择“当前位置运行该程序”,然后点击“确定”按钮。 IE系统这是会提示安全警告,询问是否信任Rainbow Technologies 的内容,请选择点击“是”。就进入SentinelSuperPro 6.0 Developer's Toolkit(SentinelSuperPro 6.0 SDK开发工具包)安装界面了。
注意:安装SentinelSuperPro 6.0 Developer's Toolkit(SentinelSuperPro 6.0 SDK开发工具包)。开发商也可以使用Windows的“资源管理器” 直接运行光盘根目录的SentinelSuperPro6.0.exe文件,这种安装方法简单明了推荐使用。
6)进入SentinelSuperPro 6.0 Developer's Toolkit(SentinelSuperPro 6.0 SDK开发工具包)安装界面后。根据提示安装所需要开发工具(建议使用缺省安装)。具体安装SentinelSuperPro6.0步骤如下:
a) 安装程序开始运行,点击Next;
b) 安装程序显示版权协议说明,如果您同意请点击YES;
c) 安装程序提示安装SentinelSuperPro开发组件,您可以选择安装路径,点击NEXT;(也可先修改路径,建议使用缺省路径);
d) 安装程序提示您选择开发工具、手册和驱动程序,拉动滚动条(由上至下),选择与所使用部件(建议全部选定);
e) 开发工具、手册和驱动程序选择完毕后,点击NEXT;
f) 安装程序提示输入SentinelSuperPro开发组件在系统菜单上的显示名,您可以使用缺省的名称“Rainbow Technologies”,然后点击NEXT;
g) 安装程序提示驱动程序安装完毕,需要重新启动系统。点击确定;
h) 系统会询问“立即启动操作系统”还是“一会再启动操作系统”。请选择“立即启动操作系统”然后点击FINISH;
6. 安装SentinelSuperPro 6.0 API接口程序(注:使用“嵌入API软件保护方式”保护软件时需要安装,外壳软件保护方式不需要安装此模块)
1)将SentinelSuperPro 6.0安装程序光盘放入光驱中。IE4(Internet Explorer 4)将自动启动并出现图2-1界面。(注:如果您的计算机关闭了AUTORUN功能,请双击光盘根目录的Index.html程序)
2)开发商使用“嵌入API软件保护方式”保护软件,需要从光盘中下载被保护软件的API接口示例程序。鼠标点击连接Interface List,如图2-1,标识4处,进入API列表窗口。开发商可以根据使用的计算机语言选择从光盘上下载所需要的API例子程序到硬盘。下载API接口示例程序的需要使用WinZip展开使用。
7. 安装演示版软件远程激活工具——Client Activator(注:如果开发商需要制作演示版软件需要安装此软件模块)
1)将Sentinel SuperPro 6.0安装程序光盘放入光驱中。IE4(Internet Explorer 4)将自动启动并出现图2-1界面。(注:如果您的计算机关闭了AUTORUN功能,请双击光盘根目录的Index.html程序)
2)开发商需要制作演示版软件,需要安装Sentinel Client Activator,鼠标点击Client Activator,如图2-1,标识3处,Client Activator安装程序启动并进入安装程序界面,请您根据安装程序提示完成安装。
8. 安装Acrobat Reader
1)将Sentinel SuperPro 6.0安装程序光盘放入光驱中。IE4(Internet Explorer 4)将自动启动并出现图2-1界面。(注:如果您的计算机关闭了AUTORUN功能,请双击光盘根目录的Index.html程序)
2)阅读Sentinel SuperPro的英文原版说明书Acrobat PDF电子文档,需要安装Acrobat Reader。鼠标点击Adobe Acrobat reader (4.05) 如图2-1,标识6处, Acrobat Reader安装程序启动并进入安装程序界面。请您根据安装程序提示完成Acrobat Reader的安装。
9. Sentinel SuperPro6.0开发组件系统菜单构成
SentinelSuperPro 6.0 SDK开发工具包(SentinelSuperPro 6.0 Developer's Toolkit)安装完成后,系统中出现如下菜单构成。



图2-2



第三章 外壳软件保护方式保护开发商的软件
SentinelSuperpro外壳加密工具可以直接保护应用程序,开发商的应用程序不需要源程序。只需要提供可执行文件(EXE文件)或动态连接库(DLL文件)就可以了。
外壳软件保护方式的工作机制:
1)将您的程序分为几块,打乱代码。防止DEBUG等反汇编程序。
2)采用美国彩虹公司专门设计的软件保护策略,将查询校验加密算法的指令插入应用程序之中。
3)应用程序增加实用的功能。如:执行时间控制,执行次数控制,到期时间控制等。
下面我们就举例说明用SentinelSuperpro外壳加密工具,用一只SuperPro保护Windows的Notepad .exe (记事本),Calc.exe(计算器),Pbrush.exe(画笔)三个软件。
1.输入开发商ID和操作密码
1)鼠标点击“开始-〉程序-〉Rainbow Technologies-〉SuperPro-〉6.0-〉SentinelSuperPro 6.0 Toolkit”菜单项,如图2-2,标识12处,就进入如下界面,如图3-1。

图3-1

2)执行图3-1,步骤1,步骤2,步骤3。输入开发商ID号和操作SentinelSuperpro软件保护锁的密码,确认输入后,开发工具进入主界面,如图3-2。注意:开发商ID号和密码只需要输入一次开发工具就会记住,以后再进入时ID号和密码不必重新输入。此窗口只有第一次进入开发工具时才会出现。

图3-2
2.选择外壳软件保护方式
1)主窗口中,标识14是主窗口按钮,点击此按钮就会回到图3-2主窗口。标识15是SentinelSuperpro的产品概述,开发商可以点击此按钮阅读。标识16是对工程文件的处理操作窗口,每次开发商定义加密算法都保存在工程文件之中,此窗口可以“打开”,“保存”,“另存”操作这些工程文件,因为,我们这是第一次使用开发工具,还不涉及到操作工程文件。
2)执行图3-2,步骤4。进入设计算法窗口如图3-3。

图3-3
3)执行图3-3,步骤5。进入设计算法窗口如图3-4。

图3-4
4)执行图3-4,步骤6,步骤7。进入选择软件保护方式窗口,如图
3-5。

图3-5
3.定义被保护软件的项目名
1)执行图3-5,步骤8步骤9。选择外壳软件保护方式,进入下一窗口,如图3-6。

图3-6
2)执行图3-6,步骤10,步骤11。输入项目标识名,进入下一窗口,如图3-7。
4.选择SuperPro保护软件的算法单元和定义算法因子


图3-7
1)执行图3-7,步骤12,步骤13,步骤14.1,步骤14.2,步骤15。选择保护软件的算法单元,输入算法因子,进入下一窗口,如图3-8。
5.输入被保护的软件和保护后生成的软件的路径名和文件名

图3-8
1)执行图3-8,步骤16,步骤17,步骤18。输入被保护的软件Notepad.exe(记事本)路径名和文件名,以及保护后生成的Notepad.exe路径名和文件名。进入下一窗口,如图3-9。
6.输入被保护软件的查询SuperPro软件保护锁算法单元的周期


图3-9
1)执行图3-9,步骤19,步骤20,步骤21。输入查询SuperPro的周期,每50秒查询一次(注意:查询周期的设定会增加软件保护的强度,防止用户一锁多用。我们强烈建议软件开发商进行此项设置,建议查询的频率为每30~60秒查询一次)。进入下一窗口,如图3-10。注意:关于制作演示版本软件,我们将在后面的章节介绍。
7.定义被保护软件为正式版本软件


图3-10
1)执行图3-10步骤22,步骤23。选择永久活动算法单元项,保护软件。进入下一个窗体,如图:3-11。注意:关于标识20,标识21的有关制作演示版本软件的功能,我们将在后面的章节介绍。
8.定义错误信息表

图3-11
1)使用SentinelSuperPro外壳保护软件时,开发商可以将原来的与SuperPro有关的英文错误信息,修改为对应的中文错误信息。注意:这些错误信息只是找不到锁或锁算法查询不对时才出现,开发商可以保存原来的英文信息不变。执行图3-11步骤24,步骤25。进入下一个窗体,如图:3-12。
9.编辑被保护软件的项目


图3-12
1)至此,我们完成了定义保护软件Notepad项目过程。窗口中增加了一个Notepad项目名如图3-12,标识24。执行步骤26分别定义保护软件计算器和画笔,整个步骤与保护Notepad过程相同,我们再此就不一一描述了。 终图3-12窗口中将出现:标识24,Notepad(记事本);标识25,Calc(计算器);标识26,pbrush(画笔)三个软件保护项目。软件开发商可以编辑、删除已有的项目,如图3-12:标识27,标识28。
2)执行图3-12,步骤27,进入写入加密算法窗体,如图3-13。
10.将加密算法因子写入SuperPro软件保护锁

图3-13
1)执行图3-13,步骤28,步骤29,将加密算法写入SuperPro,进入实施保护软件窗体,如图3-14。
11.保护应用程序

图3-14
1)执行图3-14,步骤30,保护Notepad(记事本), Calc(计算器),pbrush(画笔)三个软件。至此,就完成了整个软件保护过程。
12.保存工程文件
1)开发商需要保存定义加密算法的工程文件,以便发布软件时,批量写入其他的SuperPro加密算法。

图3-15
2)执行如图3-15,步骤31,步骤32,选择菜单 File->Save保存工程文件,输入我们指定的工程文件的文件名myfirst,并保存到指定的硬盘中的妥善位置。
13.检验被保护软件的保护效果
插入写入算法的SuperPro到计算机并口后,被保护的Notepad(记事本), Calc(计算器),pbrush(画笔)三个软件可以正常使用,并且被保护的软件与保护前软件功能完全相同。将这只SuperPro从并口拔下被保护的软件将不能使用,出现软件拒绝使用窗口,如图3-16。注意:此窗口信息为外壳保护工具定义的缺省英文信息,如果在本章第8节中修改了错误信息表,显示的内容将是修改后的信息。

图3-16


第四章 嵌入API软件保护方式保护开发商的软件
开发商直接在源程序代码中嵌入校验加密算法的SuperPro API函数调用,程序经过编译、连接后,生成与SuperPro绑定的应用程序。开发商可以通过API软件保护方式来设计自己的加密方案,控制加密点在程序中嵌入的频度和位置。
嵌入API软件保护方式软件保护过程分为三部分:定义SuperPro中的加密算法部分;生成校验数据对——“查询串”“响应串”部分;嵌入源程序SentinelSuperPro API校验函数部分。
下面我们就举例API软件保护方式,使用SuperPro算法单元保护一个Microsoft Visual C++的程序,我们假设需要保护的软件名是Windows3000。注意:Sentinel SuperPro可以保护绝大多数计算机语言开发的软件,关于如何获得您所需的计算机语言的API接口程序,请参阅第二章第六节“安装SentinelSuperPro 6.0 API接口程序”。
1.输入开发商ID和操作密码
1)鼠标点击“开始-〉程序-〉Rainbow Technologies-〉SuperPro-〉6.0-〉SentinelSuperPro 6.0 Toolkit”菜单项,如图2-2,标识12处,就进入如下界面,如图4-1。

图4-1
2)执行图4-1,步骤1,步骤2,步骤3。输入开发商ID号和操作SentinelSuperpro软件保护锁的密码,确认输入后,开发工具进入主界面,如图4-2。注意:开发商ID号和密码只需要输入一次开发工具就会记住,以后再进入时ID号和密码不必重新输入。此窗口只有第一次进入开发工具时才会出现。

图4-2
2.选择嵌入API软件保护方式
1)主窗口中,标识14是主窗口按钮,点击此按钮就会回到图4-2主窗口。标识15是SentinelSuperpro的产品概述,开发商可以点击此按钮阅读。标识16是对工程文件的处理操作窗口,每次开发商定义加密算法都保存在工程文件之中,此窗口可以“打开”,“保存”,“另存”操作这些工程文件,因为,我们这是第一次使用开发工具,还不涉及到操作工程文件。
2)执行图4-2,步骤4。进入设计算法窗口如图4-3。

图4-3
3)执行图4-3,步骤5。进入设计算法窗口如图4-4。

图4-4
4)执行图4-4,步骤6,步骤7。进入选择软件保护方式窗口,如图4-5。

图4-5
5)执行图4-5,步骤8,步骤9。进入定义项目名窗口,如图4-6。
3.定义被保护软件的项目名

图4-6
1)执行图4-6,步骤10,步骤11。假设需要保护的软件名叫Windows2000,我们输入项目标识名Windows2000,进入下一窗口,如图4-7。
4.选择SuperPro保护软件的算法单元和定义算法因子


图4-7
1)执行图4-7,步骤12,步骤13,步骤14.1,步骤14.2,步骤15。选择08#单元作为保护软件的算法单元,输入算法因子,进入下一窗口,如图4-8。注意:使用者一定要记住选择的算法单元号,以便生成校验数据对时定位算法单元的位置。
5.定义被保护软件为正式版本软件

图4-8
1)执行图4-8步骤16,步骤17。选择活动(Active)算法单元项,保护软件。进入下一个窗体,如图:4-9。注意:关于标识17,标识18的有关制作演示版本软件的功能,我们将在后面的章节介绍。
6.编辑软件保护项目

图4-9
1)至此,我们已经完成了定义保护软件Windows2000项目过程,如图4-9,标识19。注意:一只SuperPro可以保护多达28个应用程序,如果开发商需要保护其他的应用程序可以使用图4-9,标识20增加新的项目,增加项目的步骤与项目Windows2000完全相同。
2)执行图4-9步骤18, 进入将算法因子写入SuperPro窗口。
7.将加密算法因子写入SuperPro软件保护锁

图4-10
1)执行图4-10步骤19,步骤20,将算法因子写入SuperPro算法单元,进入生成校验数据窗口,如图4-11。

图4-11


8.生成校验数据
1)进入图4-11后,执行步骤21,进入API软件保护窗口。然后,执行步骤22进入生成校验数据窗口。此时,屏幕上出现的是生成“查询串”和“响应串”的参数选项,我们需要进一步的设置这些参数,以便为生成算法校验数据做准备。以下,我们将介绍这些参数的意义和设置方法。
2)加密算法的单元号:我们在第四章第四节步骤12中,设定保护软件Windows3000的SuperPro算法单元为08#单元。因此,需要在生成校验数据前指定我们已定义算法的单元号。执行如图4-11步骤23选择08#算法单元。
3)查询串、响应串的长度:SuperPro算法单元可以运算的“查询串”和生成的“响应串”长度 小为1字节, 多为20字节。 “查询串”长度越长,算法单元运算生成的“响应串”越长,软件保护的强度越强。注意:如果“查询串”长度小于4字节,加密算法容易被穷尽,软件保护的强度将很弱。如果“查询串”长度在4字节以上,加密算法很难被破解,软件才安全。执行步骤24,设置“查询、响应串”的长度为4字节。
4)查询响应对的数量:开发商在源程序中,插入SuperPro的API查询函数,并编译生成被保护的程序。被保护的程序在运行过程中,不断的向SuperPro的算法单元发查询串,并比较SuperPro返回的响应串,如果响应串与预知的不一样程序将终止运行。 程序中查询校验加密算法的数据越多则软件保护的强度越强。在此举例说明的程序因为篇幅的有限,只使用了10对查询响应对,执行步骤25,指定生成“查询、响应串”的数量为10对。注意:我们建议开发商保护程序时使用100对以上的查询响应对。
5)查询响应串的数据结构表示:一个字节十进制表示范围是0~255,十六进制表示的范围0~FF。查询SuperPro单元的查询串是以字节为单位的。如果我们4字节的查询串是:1B,D2,EC,21(十六进制),计算生成响应串是:BC,27,81,AA(十六进制)。那么C语言表示的十六进制数据结构是无符号数组型,查询串:unsigned char Query[4]={0x1B,0xD2,0xEC,0x21};响应串:unsigned char Response [4]={0xBC,0x27,0x81,0xAA}。SuperPro查询响应生成工具能够自动转换生成了三种语言的数据结构,Basic, C,Delphi 。其它的计算机语言的数据结构开发商可以手工进行转换。执行步骤26,选择生成“查询、响应串”的数据类型为C语言三位数组(3 Dimensional array declaration - (C code))。注意:开发商保护自己的程序时,可以选择相应语言的数据结构,如图:4-12所示三种语言数据结构列表。

图4-12
6)执行图4-11步骤27,生成“查询、响应串”。显示查询响应串窗口,如图:4-13。


9.校验数据——“查询、响应串”

图4-13
如图4-13,标识23所示生成的C语言“查询、响应串”三位数组。放大后的数据如图4-14所示。
unsigned char QueryResponses[ ][2][4] = {
{ { 0x22, 0x05, 0x64, 0xA5 }, { 0xE1, 0x50, 0xF9, 0x5F } },
{ { 0x78, 0x2A, 0xC2, 0x5F }, { 0xBE, 0x09, 0x36, 0x85 } },
{ { 0x0C, 0x64, 0x71, 0x7F }, { 0xE5, 0xA7, 0x60, 0x93 } },
{ { 0x64, 0x75, 0x36, 0x87 }, { 0xC7, 0xB2, 0x34, 0x55 } },
{ { 0x89, 0x8F, 0x8D, 0xD1 }, { 0x98, 0x13, 0x9B, 0x8D } },
{ { 0x74, 0x40, 0xCF, 0xFB }, { 0x54, 0x14, 0xDC, 0x96 } },
{ { 0xDC, 0x39, 0x96, 0xD1 }, { 0xEE, 0x5E, 0xA9, 0x6D } },
{ { 0x17, 0x94, 0x9E, 0xAC }, { 0xBE, 0x49, 0x14, 0x15 } },
{ { 0xF3, 0xF9, 0xC3, 0x81 }, { 0xAA, 0xD1, 0x50, 0x9B } },
{ { 0xE0, 0x29, 0x90, 0x46 }, { 0xEB, 0x49, 0xDB, 0xCC } }
};
图4-14
1)数组QueryResponses[ ][2][4],第一维QueryResponses[x]是查询响应串的数量,我们生成的是10组查询响应对。第二维中QueryResponses[x][0]代表“查询串”图4-14下滑线部分,QueryResponses[x][1] 代表“响应串”图4-14虚线部分。第三维中QueryResponses[x][y][4]是“查询串” “响应串”的长度4字节。
2)执行图4-13步骤28,将“查询、响应串”保存到文件中。如图:4-15。

图4-15

3)执行图4-15,步骤29,步骤30。将“查询、响应串”三位数组保存到一个文本文件data1.txt之中。
10.保存工程文件
1)开发商需要保存定义加密算法的工程文件,以便发布软件时,批量写入其他的SuperPro加密算法。

图4-16
2)执行如图4-16,步骤31,步骤32,选择菜单 File->Save保存工程文件,输入我们指定的工程文件的文件名mysecond,并保存到指定的硬盘中的妥善位置。
11.API软件保护的流程
以下我们使用已生成的第一组数据,举例说明SuperPro保护软件的流程。
查询串:QueryResponses[0][0]={ 0x22, 0x05, 0x64, 0xA5};
响应串:QueryResponses [0][1]={ 0xE1, 0x50, 0xF9, 0x5F}。


12.嵌入SuperPro API函数到源程序
SuperPro API函数保护软件过程分为三部分:
1)初始化部分:
RNBOsproFormatPacket( ApiPacket, sizeof(ApiPacket) );
//初始化数据结构
RNBOsproInitialize( ApiPacket );// 初始化系统环境
注:初始化部分不能省略,只有执行初始化部分SuperPro的其他API函数才能使用。
2)找SuperPro部分:
SuperPro找锁函数—RNBOsproFindFirstUnit():查找指定开发商ID号的SuperPro。RNBOsproFindFirstUnit将返回查锁结果。如果返回值为0代表找到SuperPro锁,其它的值代表没有找到SuperPro锁,应用程序将终止运行。
spStatus = RNBOsproFindFirstUnit( ApiPacket , 0x2EB9 );
//找开发商ID 为2EB9的锁
if ( spStatus != 0 ) //返回值为0,代表找到锁,其他代表未找到锁。
return( FALSE ); //未发现锁,非法用户,程序退出
注:开发商在软件保护过程中,需要将“找SuperPro部分”插到“初始化部分”之后。程序中只有先执行这两部分,“校验软件保护锁部分”的API函数才能使用。
3)校验软件保护锁部分:
SuperPro查询函数—RNBOsproQuery():将“查询串”发给SuperPro 的算法单元,并比较SuperPro返回结果,以确定用户的身份。详情请参阅下面第13节的示例程序。
13.一个简单的Visual C示例程序
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include "stdafx.h"
#include "spromeps.h" //SuperPro API函数的头文件
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
Int nCmdShow)
{
SP_STATUS spStatus;
RB_SPRO_APIPACKET ApiPacket;
//将图4-13步骤28保存到data1.txt文件之中的文本粘贴到此处。
unsigned char QueryResponses[ ][2][4] = {
{ { 0x22, 0x05, 0x64, 0xA5 }, { 0xE1, 0x50, 0xF9, 0x5F } },
{ { 0x78, 0x2A, 0xC2, 0x5F }, { 0xBE, 0x09, 0x36, 0x85 } },
{ { 0x0C, 0x64, 0x71, 0x7F }, { 0xE5, 0xA7, 0x60, 0x93 } },
{ { 0x64, 0x75, 0x36, 0x87 }, { 0xC7, 0xB2, 0x34, 0x55 } },
{ { 0x89, 0x8F, 0x8D, 0xD1 }, { 0x98, 0x13, 0x9B, 0x8D } },
{ { 0x74, 0x40, 0xCF, 0xFB }, { 0x54, 0x14, 0xDC, 0x96 } },
{ { 0xDC, 0x39, 0x96, 0xD1 }, { 0xEE, 0x5E, 0xA9, 0x6D } },
{ { 0x17, 0x94, 0x9E, 0xAC }, { 0xBE, 0x49, 0x14, 0x15 } },
{ { 0xF3, 0xF9, 0xC3, 0x81 }, { 0xAA, 0xD1, 0x50, 0x9B } },
{ { 0xE0, 0x29, 0x90, 0x46 }, { 0xEB, 0x49, 0xDB, 0xCC } }
}; //开发工具生成的C语言的“查询串”“响应串”
//////////第一部分////////////////////初始化部分//////////////////////////////////
spStatus = RNBOsproFormatPacket( ApiPacket, sizeof(ApiPacket) );
spStatus = RNBOsproInitialize( ApiPacket );
//////////////第二部分///////////////////找SuperPro部分////////////////////////
RB_WORD developerID=0x2EB9; // SuperPro琐的开发商ID号
spStatus = RNBOsproFindFirstUnit( ApiPacket,developerID );
// ▲▲▲开发商ID号
if ( spStatus != 0 )
{
MessageBox( NULL,"找不道加密锁,请确定是否插入加密锁",
"失败",
MB_ICONINFORMATION | MB_TASKMODAL );
return( FALSE ); //非法用户,退出应用程序
}
//////////////////////////////生成10以内的随即数///////////////////////////
RB_WORD Randomdata;
srand((unsigned)time(NULL));
Randomdata=rand();// generator the random number
int locatequery = Randomdata%10;
//生成10以内的随即数并赋值给变量locatequery
//以便从10对“查询串”和“响应串”中任意选出一对,校验软件保护锁
///////////////////第三部分//////////////////校验软件保护锁部分/////////////////////
int cellAddress = 0x08; // 指定08# 算法单元
int queryLength = 4; //“查询串”长度为4字节
unsigned char response[ ]={0,0,0,0}; //定义算法返回“响应串”数组
spStatus = RNBOsproQuery( ApiPacket,
cellAddress, // 算法单元号
QueryResponses[locatequery][0],
//输入SuperPro“查询串”
&response, // SuperPro返回的“响应串”
NULL ,
QueryLength ); // “查询串”的长度
//算法单元将返回“响应串”赋值给数组response

spStatus = memcmp ( response , QueryResponses[locatequery][1] , 4 );
// ▲▲▲ ▲▲▲
//比较在程序中返回的 “响应串”和SuperPro开发工具中生成的“响应串”是否相同,
//如果比较结果相同则说明软件的使用者为合法用户,不同则使用者为非法用户,程序退出
if ( spStatus != 0)
{
MessageBox( NULL,"查询SupePro不成功,非法用户",
"失败",
MB_ICONINFORMATION | MB_TASKMODAL );
return( FALSE ); //非法用户,退出应用程序
}
}
注意:SentinelSuperPro API软件保护方式可以保护绝大多数计算机语言开发的应用程序。其它语言的简化示例程序,请在光盘中的API目录中查找。
14.SentinelSuperPro全部API函数
1)在Visual C示例程序中,使用了SuperPro三部分API函数。开发商可以使用这些函数保护自己的应用程序,被保护的应用程序可以达到 强的保护效果。SuperPro还有其它的API函数,开发商需要实现某些特殊功能,如:读、写SuperPro单元中的数据;制作演示版软件;制作远程升级软件等。
2)SuperPro全部函数以下:
RNBOsproFormatPacket 初始化数据结构(仅Win32程序使用)
RNBOsproInitialize 初始化函数
RNBOsprofindfirstUnit找指定开发商 ID号的SuperPro软件保护锁
RNBOsproRead 从软件保护锁中的单元读数据
RNBOsproWrite 向软件保护锁中的单元写数据
RNBOsproOverwrite 向软件保护锁中的单元覆盖写数据
RNBOsproDecrement 算法单元计数器减一(制作演示版本软件使用)
RNBOsproActivate 激活指定算法单元(制作演示版本软件使用)
RNBOsproQuery 向软件保护锁中的算法单元发查询串,并得到返回的响应串
注:不同语言函数名可能不同,但完成的功能相同。
15.SentinelSuperPro的 软件保护策略
开发商使用“嵌入API软件保护方式”保护软件,软件的加密强度取决于开发商对SuperPro的软件保护策略的运用。软件保护策略的运用越全面,软件的加密强度越强。本节将详细介绍SentinelSuperPro的软件保护策略,开发商可以根据这些策略设计自己的加密方案。
解密有什么方法呢?
a)硬件复制:直接复制硬件,即解密者复制软件保护锁。由于彩虹公司采用了专用的ASIC 芯片技术,因此复制该加密锁非常困难,且代价太大。
b)监听纪录、仿真软件保护锁:解密者编制“并口仿真纪录、监听”程序,解密被保护的软件。“监听纪录、仿真”程序分为两部分,一部分是“监听纪录”部分,另一部分是“仿真软件保护锁”部分。解密过程是:解密者首先购买一套带有软件保护锁的正版软件,在软件的运行过程中,解密者使用解密软件“监听纪录”部分,监听并口数据传递,记录被加密的软件对并口发的“查询串”和软件保护锁返回的“响应串”,纪录一段时间后,“监听纪录部分”保存纪录的数据。解密者就可以移去软件保护锁,使用解密软件“仿真部分”模拟软件保护锁。当软件对并口发“查询串”时,监听程序就返回所记录对应的“响应串”。 软件以为软件保护锁仍然在并口上,程序就继续运行。没有软件保护锁,被加密的软件仍然能够使用,软件也就被解密了。
c)打印共享器:将软件保护锁插在打印共享器上,多台计算机共同使用打印共享器上的一只锁。这种方式虽然不能彻底解密软件,但是非法多占有了软件开发商的知识产权。
d)DEBUG:解密者使用DEBUG 等反编译工具,修改被保护软件的代码,跳过校验软件保护锁部分。 终,修改后的软件没有软件保护锁仍可运行。软件也就被解密了。
SentinelSupePro的软件保护策略
针对上述三种解密方法,美国彩虹公司设计出反解密的软件保护策略。
1)反“监听仿真”软件保护锁
a)随机查询法:开发商使用SuperPro开发工具生成大量查询、响应对,如:1000 对,并在程序中使用这些校验数据。在程序运行过程中,从1000 对查询、响应对之中,随机的抽出其中一对验证SuperPro加密算法。因为,校验数据很多,每次验证加密算法使用的“查询响应对”可能不同,“监听仿真”软件即使纪录了一部分“查询响应对”,但无法纪录全部“查询响应对”。软件每次运行时,都可能使用新的查询响应校验数据,“监听仿真”软件无法响应这些新的查询。因此,“监听仿真”也就失去了模拟、仿真SuperPro软件保护锁的作用。
b)延时法:开发商可以事先使用开发工具生成大量的校验数据,即:“查询、响应”对,比如:200000 组“查询、响应”对,开发程序过程中,开发商设计定时查询、校验加密锁的机制。在程序运行过程中,每10分钟查询并校验加密锁一次,使用过的校验数据,4年内不再重复使用。即使监听软件24小时记录数据,也需要4年才能纪录完毕。4年后,软件早已过了“热卖期”了,使用监听软件的解密者也就失去了行动意义。
c)分组、分时法:开发商可以在程序中把查询响应对分组,比如:1200 对校验数据可分为12组,每100对一组。程序在一年中的第一月使用第一组校验数据,第二月使用第二组校验数据,以此类推。监听软件就算记录了第一月的校验数据,第二个三个月以后校验数据没有纪录,在以后的时间段软件仍然无法正常使用,从而“监听仿真”失去意义。
d)随机写、读法:从加密锁中,开发商选择一个单元作为数据交换单元,如:3F# 单元。开发程序过程中,开发商设计随机写、读此单元的机制。在程序运行过程中,在程序开始部分生成一个随机数,并将这个数写入3F#单元中。在程序中的其它部分,不断读取这个单元的内容,比较单元存储的数与程序开始部分写入的随即数是否相等。如果相等程序继续运行,不相等则程序终止。因为,每次写入3F# 单元的数是随机生成的,监听软件即使记录了此次写入的随机数据,在模拟过程中,也无法仿真另一个次软件运行产生的随机数,加密软件也就无法破解。
2)反打印共享器
在程序开始部分生成一个随机数,并将这个数写入SuperPro的单元中。在程序中的其它部分,读取这个单元的内容,比较单元存储的数与程序开始部分写入的随即数是否相等。如果相等程序继续运行,不相等则说明有其它的计算机使用打印共享器,共享使用这只SuperPro,程序终止运行。因为,每次写入SuperPro单元的数是随机生成的,在程序运行过程中,写入随机数后。存储单元的内容发生变化,则说明同时有其它的计算机使用打印共享器共享软件保护锁。如图:4-17所示的反共享器的流程。

 
Sentinel SuperPro 6.0 加密锁快速入门
金雅拓 (Gemalto)通过收购赛孚耐SafeNet成为软件货币化市场的 者,我公司所售赛孚耐SafeNet加密狗产品的序列号均为 序列号,SafeNet加密狗加密锁产品关键部件是采用非通用芯片可以防止克隆复制的,可提供30天免费测试。
公司有多名专业加密技术工程师,可随时为您售前售后服务,客户二次开发及特殊技术要求我们可以和SafeNet高级工程师为您现场服务。产品三包:7天包退换,非物理损坏1年免费更换,1年免费服务
          加密狗-加密锁-软件保护产品
·加密狗报价-软件保护-加密锁购买价格
·圣天狗SHK-软件保护加密标准-简单又安全
·圣天诺HASP HL-世界上 安全可靠的加密锁
·宏狗-自定义算法的加密狗
·微狗-高性价比 多使用的硬件加密狗
·软件狗-单机版软件硬件加密的低价格
·圣天诺超强锁SuperPro+
·圣天诺奥强锁UltraPro
·圣天诺RMS-完整的许可证管理解决方案
·sentinel LDK 6.x软加密许可证授权管理
·HASP-MaxMicro 小的的硬件加密锁-工控机
·HASP SL基于软件的产品激活授权解决方案
·超级狗SuperDog易用无驱专用芯片-本地化
·视频加密狗产品介绍
·视频加密狗技术参数
·视频加密狗操作演示
·加密狗 新驱动程下载赛孚耐SafeNet官方
          iKey 身份认证令牌 USB Key
·iKey1000 个人双因素身份认证 USB Key
·iKey2032基于PKI双因素身份验证Win和MAC
·iKey4000 先进的身份认证USB令牌
·eToken 5100(Pro72K)电子身份认证
·eToken PASS 一次性密码令牌
·DataSecure 给数据库加密的软件
·SafeNet数据加密工具解决方案
·硬盘加密工具 ProtectDrive
·文件和文件夹加密-ProtectFile
·U盘加密ProtectPack压缩存档加密软件
·SafeNet信息安全绝对 者-成功案例
技术咨询 电话:027-87153162
技术咨询 QQ  258299995,258300138
售后服务 QQ  258298351 阳小姐

给我发消息

杨先生:15586906122

给我发消息 阳小姐:13396065129
     Email邮箱  89010286@qq.com  
    [查看公司详细地址-乘车路线-地理图片]
 


版权所有:湖北省武汉金雅特(原武汉凡高软件公司) 地址:武汉市武珞路丁字桥南方帝园A座2105
Copy Right (c)1996-2015 flagsoft.com.cn All right reserver 电话:027-87153162 Email:89010286@qq.com