您当前的位置:   首页 > 新闻中心
超级狗2.2 开发商指南——第3章 超级狗API保护
发布时间:2018-09-28 22:54:15   阅读次数:

超级狗2.2 开发商指南——第3章 超级狗API保护(图1)

本章讲解超级狗(SuperDog)Licensing API 保护方法,包括该API 概述、实施前提、如何实施、以及函数说明。本章包含如下内容:

·超级狗(SuperDog)Licensing API 概述

·实施Licensing API 的必备条件

·学习超级狗(SuperDog)Licensing API 示例

·超级狗(SuperDog)Licensing API 的函数

·实施超级狗(SuperDog)Licensing API 保护

·使用超级狗(SuperDog)API 保护安卓平台应用程序

·使用超级狗(SuperDog)加密助手


 

超级狗(SuperDog)Licensing API 概述

软件工程师在实施超级狗(SuperDog)的Licensing API 保护时,可以在被保护软件源代码中插入对超级狗(SuperDog)的调用。当被保护程序运行时,就可以检查程序是否有超级狗(SuperDog)的保护。软件工程师可以对这些检查指定响应,例如,如果被保护程序未找到特定的超级狗(SuperDog),被保护程序就被指定自行挂起或终止。

在源代码中实施超级狗(SuperDog)Licensing API 保护是一个强健软件保护方法,然而要最大程度发挥其保护能力,取决于实施过程。调用该函数库的程度决定了被保护软件的整体安全水平。

软件工程师在实施超级狗(SuperDog)Licensing API 软件保护工程之前,最重要的是熟知Licensing API 的函数。关于超级狗(SuperDog)Licensing API 的各函数的详细描述,请参阅第92 页的附录B 超级狗(SuperDog)Licensing API 参考或帮助文档。

要了解超级狗(SuperDog)Licensing API 保护的工作方式和能力范围,软件工程师还应学习超级狗(SuperDog)Licensing API 示例。有关更多的信息,请参阅本章第31 页的学习超级狗(SuperDog)Licensing API 示例。

 

实施Licensing API 的必备条件

实施超级狗(SuperDog)Licensing API 的必备条件是: 首先把开发商代码从开发狗导入Windows 的开发商代码文件夹,其次是从SafeNet下载Licensing API 函数库。有关开发商代码的信息,请参阅第20 页的开发商代码和开发号。

 

导入开发商代码

使用开发商向导可以把开发狗中的开发商代码导入Windows 与Android 的开发商代码文件夹。以下是开发商向导的使用说明。

使用开发商向导

1. 将开发狗连接至计算机。

2. 运行开发商向导(开始 > 程序 > 超级狗(SuperDog)开发套件V( 版本) > 超级狗(SuperDog)工具包, 选择:其他工具 > 开发商向导)。 开发商向导随即启动,检测并列出连接的开发狗。


注意:

如果首次将开发狗连接到计算机,并且已启动超级狗(SuperDog)应用程序,例如外壳加密工具,开发商向导会自动启动。


3. 开发商向导将提示导入Licensing API 函数库。您有两个选项,可以选择“ 下载” 或“ 解压缩”,默认的设置是“ 下载”。如果下载的速度慢,您可以选择解压缩的方式,那么您需要联系SafeNet 技术支持部门,取得一份以开发号为文件名,扩展名为mwp 的压缩文件,然后对其解压缩。

4. 在开发商向导的“ 开发狗信息” 窗口中,选择路径并保存开发商代码。开发商代码应被保存在开发商代码文件夹(VendorCodes)中。

默认的开发商代码文件名为[ 开发号名称].hvc。开发商代码文件夹(VendorCodes) 位于以下目录:...\Documents and Settings\[user_name]\My Documents\SafeNet\SuperDog [version]\VendorCodes

建议您使用开发商代码文件夹(VendorCodes),因为在默认情况下,超级狗(SuperDog)软件工具将搜索该文件夹以获取开发商代码。

5. 在开发商向导的“ 指定 API 设置” 窗口中,选择下载您指定的Licensing API 库。 关于不同语言的函数库,请参见本章超级狗(SuperDog)Licensing API 下载目录。

6. 如果出现升级API 库的提示,请进行升级。

 

超级狗(SuperDog)Licensing API 下载目录

下表列出Licensing API 的下载目录:

目录下载目录
C...\Documents and Settings\[user_name]\My Documents\SafeNet\SuperDog [version]\API\Licensing\C
.NET...\Documents and Settings\[user_name]\My Documents\SafeNet\SuperDog [version]\API\Licensing\DotNet
COM...\Documents and Settings\[user_name]\My Documents\SafeNet\SuperDog [version]\API\Licensing\COM
Java...\Documents and Settings\[user_name]\My Documents\SafeNet\SuperDog [version]\API\Licensing\Java
C...\Documents and Settings\[user_name]\My Documents\SafeNet\SuperDog [version]\Samples\Licensing\C
Java...\Documents and Settings\[user_name]\My Documents\SafeNet\SuperDog [version]\Samples\Licensing\Java
C#...\Documents and Settings\[user_name]\My Documents\SafeNet\SuperDog [version]\Samples\Licensing\csharp
VB.NET...\Documents and Settings\[user_name]\My Documents\SafeNet\SuperDog [version]\Samples\Licensing\vb.net
ASP.NET...\Documents and Settings\[user_name]\My Documents\SafeNet\SuperDog [version]\Samples\Licensing\asp.net
Delphi...\Documents and Settings\[user_name]\My Documents\SafeNet\SuperDog [version]\Samples\Licensing\Delphi
Javascript...\Documents and Settings\[user_name]\My Documents\SafeNet\SuperDog [version]\Samples\Licensing\Javascript
VB...\Documents and Settings\[user_name]\My Documents\SafeNet\SuperDog [version]\Samples\Licensing\vb
Authentication...\Documents and Settings\[user_name]\My Documents\SafeNet\SuperDog [version]\Samples\Licensing\Authentication
Android...\Documents and Settings\[user_name]\My Documents\SafeNet\SuperDog [version]\Android\API\Licensing\C\armeabi

超级狗(SuperDog)Licensing API 库文件命名

以下是超级狗(SuperDog)Licensing API 库的名称格式:

dog_windows_[ 开发号].[ 库扩展名]

例如,dog_windows_demo.dll 是一个与超级狗(SuperDog)试用件关联的动态链接库,dog_windows_37517.dll 是一个与开发号为37517 的超级狗(SuperDog)关联的动态链接库。

 

学习超级狗(SuperDog)Licensing API 示例

通过学习超级狗(SuperDog)Licensing API 示例,软件工程师可以了解Licensing API 软件保护的工作方式及其能力范围。

Licensing API 示例

超级狗(SuperDog)提供针对主流编程语言的Licensing API 示例。示例应用程序用于演示在源代码中实施超级狗(SuperDog)Licensing API 的软件保护。

超级狗(SuperDog)安装目录下的Samples 文件夹包含Licensing API 和Encryption 示例应用程序。Encryption 目录中包含了使用超级狗(SuperDog)API进行数据保护的示例。

在演示这些示例应用程序时,必须将标有DEMOMA 的超级狗(SuperDog)试用件连接至计算机。


注意:

请参阅SafeNet/SuperDog 网站和超级狗(SuperDog)安装光盘,获取有关特定编程语言的示例的相关信息。


 

超级狗(SuperDog)Licensing API 的函数

以下介绍超级狗(SuperDog)Licensing API 的几组函数,更详细的说明,请阅附录B 超级狗(SuperDog)Licensing API 参考。

如何优化实施超级狗(SuperDog)Licensing API 保护,请参阅第64 页的通用的保护策略。 有关超级狗(SuperDog)Licensing API 的示例应用程序,请参见Licensing API 示例。

 

函数组

以下分别介绍基于常见功能的五组超级狗(SuperDog)Licensing API 的函数。

  ·会话函数

  ·加密函数和解密函数

  ·存储区函数

  ·时间函数

  ·管理函数

·会话函数

调用dog_login() 或dog_login_scope() 对超级狗(SuperDog)中特定一个特征进行一次成功的登录后,一个会话就创建了。 在结束会话时,调用注销函数dog_logout(),关闭该会话。

有关会话函数的更多信息,请参阅本章第35 页的登录选项。

·加密函数和解密函数

超级狗(SuperDog)含有基于AES 的加密引擎,可对数据进行加密或解密。

有关加密函数和解密函数的更多信息,请参阅:

  ·dog_encrypt()

  ·dog_decrypt()

·读写函数

对重要信息的访问控制是保护计划中的一部分,利用超级狗(SuperDog)存储区可以存储软件在运行时所需数据。

超级狗(SuperDog)Licensing API 提供以下读写函数。

  ·使用dog_read() 可以读取超级狗(SuperDog)存储区中的数据文件。

  ·使用dog_write() 可以将数据写入超级狗(SuperDog)存储区中的读写类型或写一次类型数据文件。

·时间函数

时间函数组包括读取超级狗(SuperDog)V-Clock 时间、以及两个时间转换函数。

更多信息,请参阅:

  ·使用dog_get_time() 可以读取超级狗(SuperDog)V-Clock 时间

  ·使用dog_datetime_to_dogtime() 将日期时间值转换为超级狗(SuperDog)时间

  ·使用dog_dogtime_to_datetime() 将超级狗(SuperDog)时间值转换为日期时间值(UTC)

·管理函数

使用管理函数可以获取超级狗(SuperDog)信息、获取会话信息、对超级狗(SuperDog)进行升级。

更多信息,请参阅:

  ·使用dog_get_info() 获取超级狗(SuperDog)信息

  ·使用dog_get_sessioninfo() 获取会话信息

  ·使用dog_update() 对超级狗(SuperDog)进行升级

 

实施超级狗(SuperDog)Licensing API 保护

以下说明实施超级狗(SuperDog)Licensing API 保护前应该考虑的问题,讲解实施Licensing API 的工作流程。

需求规划

在考虑实施超级狗(SuperDog)Licensing API 时,软件工程师应当考虑以下几个初步问题。

·要保护什么?

这看似显而易见,在确定在源代码的哪些点调用LicensingAPI 函数时,它却是关键。通常,在启动被保护软件时,您将要验证超级狗(SuperDog)是否存在。您还可以使用不同的特征来保护软件的多个功能组件,这需要先确定要保护哪些功能组件。


注意:

通过特征ID 参数可以实现对不同特征( 功能组件) 的登录。关于更多信息,请参阅dog_login()、dog_login_scope()。


 

·实施计划中能否含有加密数据?

实施计划中可以含有加密数据。如果您打算在软件运行的时候使用加密数据,那么您可以先使用超级狗(SuperDog)Licensing API 的加密函数对数据进行加密,然后在软件中调用解密函数的地方插入已加密的数据。 在软件运行时,加密的数据将由超级狗(SuperDog)解密。

您可以使用超级狗(SuperDog)加密助手快捷地完成数据加密的操作,然后参考该工具的示例工程来使用加密数据。(工程默认路径为:...\ProgramFiles\SafeNet\SuperDog\[version]\Samples\Encryption\[language type])。

·数据能否被存储在超级狗(SuperDog)的存储区中?

超级狗(SuperDog)数据存储区中的只读类型,读写类型和写一次类型数据文件都可以存储数据。您可以将应用程序的重要数据存储于只读类型的数据文件。在软件运行时,调用超级狗(SuperDog)Licensing API 提供的dog_read() 函数读出存储的数据。

·如何使用写一次类型数据文件?

您可以将某些只需要修改一次的信息存储于写一次类型数据文件中。例如:软件注册的用户名,与硬件绑定的相关信息等。在软件运行时,调用超级狗(SuperDog)Licensing API 提供的dog_read() 函数读出存储的数据。


工作流程

以下是推荐的实施超级狗(SuperDog)Licensing API 保护的工作流程:

1. 学习与您开发环境相应的示例应用程序的代码。

2. 在您的应用程序源代码中,插入登录函数dog_login() 或dog_login_scope(),登录成功即建立会话。登录会话拥有其唯一的句柄标识符。


注意:

会话的句柄标识符是自动生成的,应用于单个登录会话。如需更多信息,请参阅dog_login()、dog_login_scope()。


3. 成功建立一个登录会话后,您可以调用超级狗(SuperDog)Licensing API 提供的其他函数,例如,使用解密函数dog_decrypt() 对重要数据进行解密,也可以使用函数dog_read() 读取储存在超级狗(SuperDog)存储区中的数据等。

4. 使用第3 步中生成的输出结果,检查潜在的不匹配, 针对不匹配对最终用户做出相应通知。

5. 对不同的功能组件重复第2 至4 步,完成对不同软件组件的保护。

6. 编译源代码。


注意:

完成源代码的编译后,使用超级狗(SuperDog)的外壳加密工具为软件再添加一层保护,可以防止破解者对被保护的代码执行逆向工程。


 

登录函数

调用登录函数dog_login() 和dog_login_scope() 是通往实施超级狗(SuperDog)Licensing API 保护的大门。要搜索超级狗(SuperDog)并与超级狗(SuperDog)通讯, 就必须先建立登录会话。建立登录会话时,需要特征ID 和有效的开发商代码。 如登录未搜索到超级狗(SuperDog),系统就会显示错误消息,如发现声明的开发商代码与被搜索到的超级狗(SuperDog)不匹配,也会显示错误信息。


登录操作

登录选项

特征ID 用于标识“ 特征”。为声明要登录到超级狗(SuperDog)中的特定特征,调用登录函数时必须指定特征ID 参数。

·特征ID

“ 特征” 是本产品的重要概念,关于特征的详细信息,请参阅第45 页的特征。

当登录到特定特征时,被保护软件不仅检查超级狗(SuperDog)是否存在,还会检查超级狗(SuperDog)中对该特征的许可,如果许可有效,才能使用该软件。当登录默认( 特征ID 为0) 时,API 仅搜索超级狗(SuperDog)而忽略检查许可。


注意:

每个登录会话都必须调用相应的注销函数来终止。 更多信息,请参阅dog_login()、dog_login_scope()、以及dog_logout()。


 

使用超级狗(SuperDog)API 保护安卓平台应用程序

使用超级狗(SuperDog)Java API,可以保护安卓平台(ARM 架构) 开发的应用程序。想要知道如何保护安卓平台应用程序的更多信息,请参阅《超级狗(SuperDog)【版本】安卓开发商指南》。

测试版本

已测试过安卓系统版本:

  ·Android 4.1.1

  ·Android 4.2.2

  ·Android 4.3

  ·Android 4.4.2

使用需求

使用本软件包之前需要安装:

1.Android 开发环境 ADT bundle

2.Android NDK (如果您需要重新编译Java JNI 库)

如何编译/ 使用示例程序

请按照如下步骤使用示例目录:

1. 打开Android 开发环境 ADT 里的EcliPSE

2. 导入工程SuperDogDemo ;

3. 编译工程;

4. 将生成的apk 上传到安卓设备并安装应用。

如果您使用超级狗(SuperDog)硬件:

1. 请使用OTG 连接线将超级狗(SuperDog)连接至安卓设备;

2. 打开应用程序SuperDogDemo ;

3. 安卓设备显示提示信息,“ 允许应用SuperDogDemo 访问该USB设备吗? ”,点击“ 确定” 按钮;

4. 点击“Demo” 按钮运行调用API 的示例,将显示调用API 的信息。

如果您使用超级狗(SuperDog)软许可:

1. 打开应用程序SuperDogDemo,点击GetFP 按钮将获取安卓设备指纹并存储到SD 卡根目录:fingerprint.c2v ;

2. 复制fingerprint.c2v 到Windows 系统;

3. 运行许可设计工具,添加产品和特征,请不要添加数据文件。点击生成SL 按钮;

  a. 指定指纹文件fingerprint.c2v

  b. 指定SL 存放目录

  c. 按确定将生成超级狗(SuperDog)SL:update.v2c

4. 将update.v2c,拷贝到安卓设备SD 卡根目录;

5. 在安卓设备上再次运行SuperDogDemo 应用,点击update 按钮将从SD 卡根目录读取update.v2c 并安装SL ;

6. 安装SL 成功后,点击Demo 将说明对超级狗(SuperDog)SL 的操作。


注意:

1. 超级狗(SuperDog)Java API 的包名称为 com.SuperDog。

2. 当登录默认特征( 特征ID 为0) 时,API 仅搜索超级狗(SuperDog)而忽略检查许可。


 

在安卓平台的工程中使用SuperDog API

请将下列文件加入到您的工程:

1. SuperDogDemo\src\com\SuperDog\Dog.java

2. SuperDogDemo\src\com\SuperDog\DogApiVersion.java

3. SuperDogDemo\src\com\SuperDog\DogTime.java

4. SuperDogDemo\src\com\SuperDog\DogStatus.java

5. SuperDogDemo\src\com\SuperDog\DogUsbHandler.java

6. SuperDogDemo\libs\armeabi\libDogJava.so

7. SuperDogDemo\libs\armeabi\libdog_android_[ 开发号].so


注意:

·使用前需要先用开发商向导下载您的Android API,从目录...\Documents and Settings\[user_name]\MyDocuments\SafeNet\SuperDog[version]\Android\API\Licensing\C\armeabi 中将libdog_android_[ 开发号].so 拷贝至目录SuperDogDemo/libs/armeabi 中。

·关于如何调用超级狗(SuperDog) Java API,请参考文件SuperDogDemo\src\com\SuperDogDemo\SuperDogDemo.java。

·请在您的应用中添加下列语句加载超级狗(SuperDog)Java JNI 库:
System.loadLibrary("DogJava")。

·如果您使用超级狗(SuperDog)硬件,请在您的应用中添加下列语句加载您的Android API:System.loadLibrary("dog_android_[ 开发号]")。

·如果您使用超级狗(SuperDog)硬件,在您的应用的运行过程中想要获取操作当前连接的超级狗(SuperDog)的权限,可以调用DogUsbHandler 中的getPermission 方法。

·在您的应用的AndroidManifest.xml 文件中添加下列语句:

·如果您使用超级狗(SuperDog)硬件, 在您的应用的AndroidManifest.xml 文件中添加下列语句:


 

如何编译Java JNI 库

编译Java JNI 库之前需要安装并配置 Android NDK。

使用开发商向导下载您的Android 的API 库,从目录...\Documentsand Settings\[user_name]\My Documents\SafeNet\SuperDog[version]\Android\API\Licensing\C\armeabi 中将libdog_android_[ 开发号].so 拷贝至目录SuperDogDemo/jni 中。

修改文件:SuperDogDemo/jni/Android.mk 其中API 库名称指向您的安卓API 库。

返回上级目录SuperDogDemo,运行 NDK 的命令ndk-build。

编译好的Java JNI 库在目录SuperDogDemo\libs\armeabi 中。

 

使用超级狗(SuperDog)加密助手

超级狗(SuperDog)加密助手用于简化超级狗(SuperDog)Licensing API 保护的步骤。开发商仅需将工具生成的源文件包含到自己的代码工程中,添加简单的调用代码就可实现超级狗(SuperDog)Licensing API 保护。

以下说明使用超级狗(SuperDog)加密助手的步骤。如需更多的信息,请参阅超级狗(SuperDog)加密助手的帮助文档。

 

准备步骤

1. 将开发狗和超级狗(SuperDog)连接至计算机。

2. 运行超级狗(SuperDog)加密助手,在菜单栏中选择工具 > 设置,然后选择使用正式开发号。


注意:

如果首次使用超级狗(SuperDog)加密助手,需要先运行开发商向导以下载最新的API 库。


 

加密关键数据

1. 在超级狗(SuperDog)加密助手主界面选择:数据加密选项卡。

2. 选择编程语言,特征ID,以及加密的数据类型。

3. 如选择加密字符串或原始数据,请在主界面上边空白编辑框中输入字符,也可点击右边 Hex 输入按钮切换到 Hex 输入模式。

4. 指定数据长度,并输入数据。

5. 要使用一个已存在的数据文件,单击装载按钮可以将其导入。

6. 文本输入模式下的文本将以 UTF-8 编码的形式进行加密,解密后的字符串需要从 UTF-8 编码格式转换为需要的编码格式,可参考示例目录(默认路径为:...\ProgramFiles\SafeNet\SuperDog\[version]\Samples\Encryption)下的示例工程。

7. 点击加密数据按钮,生成包含加密数据的源代码。

8. 点击保存按钮,可保存生成的源代码为指定文件。

9. 将生成的源文件包含到自己的工程中,在源代码中使用超级狗(SuperDog)Licensing API 解密,然后使用解密后的数据进行各种运算。可点击打开示例文件夹链接参考示例工程(默认路径为:...\ProgramFiles\SafeNet\SuperDog\[version]\Samples\Encryption\[language type])。

10. 要加密数字类型数据,请选择加密类型为:常量。选择编程语言,特征 ID,数据类型,输入常量数据。然后重复步骤 7—9。

 

验证程序是否已授权

1. 在超级狗(SuperDog)加密助手主界面选择:生成加密数组选项卡。

2. 选择编程语言,特征ID,数据长度和数组长度。

3. 点击生成加密数组按钮,随机生成包含明文与密文的数组。

4. 点击保存按钮,可保存生成的源代码为指定文件。

5. 将生成的源文件包含到自己的工程中,可在程序中定时(例如 2分钟)随机的访问数组中一行数据的明文,然后使用超级狗(SuperDog)Licensing API 进行加密。将加密后的数据与数组中对应的密文数据进行比较,如果不相等,则判断用户使用了未授权的软件。可点击打开示例文件夹链接参考示例工程 (默认路径为:...\ProgramFiles\SafeNet\SuperDog\[version]\Samples\Encryption\[language type])。


注意:

超级狗(SuperDog)出厂时内置默认的特征(ID 为 0)。如果您选择了其他特征,需要确保该特征在超级狗(SuperDog)中存在。请使用许可设计工具进行许可设计,并使用超级狗(SuperDog)编程工具对超级狗(SuperDog)编程。



揽阁信息可提供的部分安全产品和解决方案信息

联系揽阁信息,您可以获取到更多满足全球合规性要求的信息安全产品资料,以及相关的整体解决方案的相关资料。如:


您还可以得到揽阁信息所提供的优质服务。

揽阁信息 · 值得您信赖的信息安全顾问!


相关阅读

购买咨询电话
021-54410609