跳转至

VirboxProtector加壳工具概述#

1 概述#

深思数盾自动保护工具Virbox Protector,是深思数盾科技股份有限公司经过多年技术深耕开发的一款高强度自动保护(加密)工具。Virbox Protector与SS许可管理工具、深思云锁或精锐5或深思软锁配套使用,集自动代码移植、混淆、外壳加密、数据加密于一身,无需编程就能达到极高的保护强度,是业界领先的软件保护工具。

2 产品导航页#

通过三种途径开始您的软件保护之旅:

  • 将可需要保护的程序拖拽到窗口,进入加壳程序的主界面。

  • 点击【新建】目录下面的【打开文件】/【打开目录】按钮,打开需要保护的程序,进入加壳程序的主界面。

  • 如果您已经在最近使用VirboxProtector保护过您的程序并保留该历史记录,您可以在【最近打开的工程】目录中找到您的程序并且单击打开程序,进入加壳程序的主界面。

3 产品主界面#

3.1 菜单栏#

3.1.1 打开#

  • 点击【打开文件】按钮,选择打开文件或打开文件目录,用户可以选择 XXX.exe、XXX.dll或Unity3D目录。
    [注意:如果被加壳程序的相同目录下存在XXX.map文件,那么会自动加载map文件,将函数名称显示在界面当中,目前支持VS、VC、BCB、Delphi编译器生成的map文件]

3.1.2 最近打开的文件#

  • 点击【最近打开的文件】按钮 ,系统罗列出5个最近保护过的程序,单击选择需要打开的程序,进入加壳程序的主界面。

3.1.3 保存#

  • 点击【保存】按钮,保存当前工程信息到 [需要保护程序名称.ssp]文件中。

3.1.4 立即加壳#

  • 点击

    【立即加壳】即可绑定授权并生成保护后的应用程序。如果工程信息有所改动,那么点击【立即加壳】也会保存工程文件;

3.1.5 登录云锁#

  • 点击

    【登录云锁】用户登录开发者账户,使用云控制锁进行加壳。如果不登录云控制锁,那么系统默认使用本地控制锁进行加壳,系统目前支持本地控制锁加壳和云控制锁加壳两种模式。[特别注意:此处的云控制锁,登录的是开发者账户,而非普通的用户]

登录云控制锁

3.2 PIN功能#

3.2.1 什么是PIN功能#

PIN功能提升开发锁使用安全性,使用前必须输入正确PIN码才能正常使用开发锁完成许可签发、软件加壳等操作。在加壳工具中加密锁存在以下几种PIN状态的显示。

3.2.2 支持PIN#

开发锁支持PIN功能,3.1.20版本及后续版本的开发锁默认支持PIN功能。

3.2.3 不支持PIN#

开发锁不支持PIN功能,3.1.20之前版本的开发锁不支持PIN功能,加壳工具截止至2019-04-01前,允许不支持PIN的开发锁进行软件加壳。

3.2.4 已启用PIN#

开发锁已启用PIN,启用状态下,每次使用开发锁前必须进行PIN验证,验证通过后才能正常使用

3.2.5 未启用PIN#

开发锁支持PIN但未启用,未启用状态下,使用开发锁不需要进行PIN验证即可使用。不启用PIN降低了开发锁的安全性,不建议主动禁用PIN验证功能。

3.2.6 已验证PIN#

开发锁支持PIN,并通过PIN验证,只有此状态下的开发锁能进行许可签发、软件加壳操作。

3.2.7 未验证PIN#

开发锁支持PIN,但未通过PIN验证,在未输入正确PIN码通过验证前,开发锁将不允许进行许可签发、软件加壳操作。

3.3 导航栏#

3.3.1 许可信息#

许可形式,保护后的软件可以使用的许可所在的载体。包括本地加密锁中的许可,表示插在用户本机器上的硬件锁;网络加密锁,插在局域网内其他机器上的硬件锁中的许可;云锁,云端虚拟的加密锁中的许可;软锁中的许可,软锁是用纯软件实现的加密锁,不依赖任何硬件锁,跟PC机器硬件唯一指纹绑定。

许可ID

开发者用于管理用户软件版权控制与发放凭证的一个序列号,开发者能够在开发者中心分发给普通的云账户,同时开发者也可以通过开发者管理工具为用户锁分发许可。

开发者密码

与开发者ID相对应的32个字符表示的序列号,保证了开发者的云授权平台的安全, 每个开发者有一个唯一的开发者密码。开发者登录深思云获取。

锁序列号

一串32个字符表示的,能够唯一确定加密锁的序号,如果软件保护使用了指定的锁序列号,那么保护后的程序只能使用指定序列号的用户锁才能打开。

3.3.2 被保护的函数列表#

需要保护的具有重要价值的函数块,用户能够选择混淆、碎片化代码、虚拟化和代码加密的保护方式。

查看函数的详细信息

鼠标点击函数保护列表中的函数,在右侧的工作区窗口中展示函数的详细信息,包括函数的保护方式、函数名、函数的地址和汇编代码的展示。

函数的保护方式

.NET程序能够选择不保护、混淆、碎片化和代码加密四种保护方式。

PE、ELF和MACHO程序能够选项不保护、混淆、碎片化、虚拟化和代码加密五种保护方式。

序号 保护方式 说明 存在的问题
1 不保护 对选中的指令不进行保护
2 混淆 将代码指令翻译为机器和人都无法识别的一串伪代码字节流,在具体执行时在对这些伪代码进行翻译解释,逐步还原为原始代码并执行
3 碎片化 将指令翻译成arm指令,并置于加密锁内执行 对指令有一定的格式要求,有的函数可能不能被保护
4 虚拟化 将指令编译为虚拟代码,放在指定虚拟机中运行 对指令有一定的格式要求,有的函数可能不能被保护
5 加密 将代码块作为数据,用许可加密函数存 储, 程序执行到该函数时验证许可并解 密,内存 中不会暴露完整的代码块 对指令有一定的格式要求,有的函数可能不能被保护

添加保护函数的方法

1、使用SDK标签,编程方式添加需要保护的函数。

2、点击【添加】按钮,可视化选择添加保护函数。

删除保护函数的方法

1、右键单击【被保护函数列表】->【清空列表】,即可实现保护列表框的清空操作。

2、将鼠标滑动至需要删除的函数名称上,点击【X】。

3.3.3 加密选项#

输出文件

输出文件,可以修改程序保护后生成文件的路径和名称。

[注意:1、如果只有文件名称,那么路径为源程序的路径; 2、如果输出文件名和源文件同名,生成的程序会将源程序覆盖]

导入表保护

导入表保护,这个选项能够对PE文件中的导入表进行了加密处理,隐藏了API列表。基于安全强度的考虑,我们建议用户使用这个选项

[特别说明:导入表保护目前只适用于PE文件]

压缩

压缩,对加壳后的后的程序进行压缩处理,减小体积,同时可以防止静态反编译。

[特别说明:1、由于压缩模块需要一个固定大小的空间,如果被加壳的程序非常小压缩的效果并不明显还有可能出现体积更大的情况,对于体积较大的程序效果明显2、不支持DotNet动态库的压缩3、不支持arx类型程序的压缩]

名称混淆

名称混淆,对源程序中的函数名称进行混淆,静态反编译工具显示的函数名为乱码。[特别说明:名称混淆目前只能支持DotNet程序,并且不支持IIS类型程序的混淆]

加密资源段

加密资源段,对被保护程序的资源区段进行加密,运行的时候需要用户使用相应许可进行解密方可使用程序。[特别说明:加密资源段目前只能支持本地程序]

生成日志

生成VirboxProtector的工作日志,方便出错的时候排查问题。正常情况下您可不选,只有在加壳后的程序运行出现问题的时候,您需要选择并将生成的日志发给深思技术人员进行排查问题。

后台检测时间间隔(秒)

后台检测时间间隔(秒),表示每隔多少秒对运行程序进行检测是否存在对应许可,如果没有那么就会提示错误,或者退出。如果后台检测时间设为0s,那么后台就不会进行检测许可的操作。

检测用户锁拔出消息(秒)

当勾选此选项后,运行被保护后的程序,拔掉用户锁后直接弹出“找不到许可”的 提示消息。[注意:当勾选检测用户锁拔出消息时,后台检测时间间隔选项不生效]

3.3.4 消息选项#

提示语言

设置弹出消息框文字的语言,包括简体中文、英文,繁体。

许可失效提示形式

许可失效提示形式,主要是用于设置,加壳后的程序找不到指定的许可的时候,如何进行提示。 目前支持: 1、程序不提示消息,直接闪退;
2、程序不提示消息,直接闪退;
3、远程桌面服务会话消息框(支持vista和server2008以上版本)等五种不同的提示形式。
注意:如果是对AutoCAD的ARX程序进行加壳,建议选择第五种许可会话失效提示形式。

程序冻结

当勾选此选项后,当弹出提示框时,程序无法继续进行操作。

延迟退出时间(s)

当许可会话已经失效时,会弹出提示框,如果此时选择了“取消”那么您的程序会在设定的延迟退出时间到达的时候退出,这样做的目的是给客户提供了存档的时间。

提示标题

设置弹出消息框的标题信息。

自定义信息

对主要的许可状态信息进行显示,开发者按照一定的格式自定义编辑提醒消息,使保护后的程序更加的人性化的向用户展示许可状态信息。

云锁登陆错误信息

主要是针对加壳后程序找不到许可的时候,许可失效提示形式选择了第四种,那么会弹出云账号登陆框,如果此时登录出错那么本程序会显示对应的错误消息。

[特别说明:预设账号和预设密码,如果使用的云锁许可,存在单点登录的问题]

错误信息

定义了对应的错误码显示的提示信息,错误信息的格式为【8位16进制错误码-错误信息】,可以添加错误消息也可以删除错误消息,如果没有自定义错误消息,那么加壳后的程序出现错误的时候会弹出系统错误信息。【详细的错误码介绍请参见SDK中的 ss_error.h文件】

3.4 状态栏#

状态栏中从左到右分别显示了被保护程序的文件的全路径、程序的版本、程序的类型以及程序的硬件机器版本。

3.5 可视化添加函数模块#

函数搜索

在搜索框中输入关键字,程序会列出所有名称中包含关键字的函数块,并且彩色显示,支持模糊查询

性能分析

点击性能分析按钮,运行需要保护的程序,执行正常的业务操作,然后关闭程序后,程序中各个函数模块调用的次数即可显示在列表中,参见上图。

可保护函数列表

展示了需要保护程序的所有的函数模块,托管代码程序和非托管代码程序有细微的差别。

[注意:并不是所有的函数模块都能展示出来。1、指令大小小于15个字节的函数模块不会展示;2、有的非常规函数模块不会展示(名称中存在'.'、'\<'、'>'、'\@'、':'、'?'等)。]

托管代码程序

1、函数名称为“命名空间+类名称+函数名称”。

2、函数列表能够切换为列表的模式和树形模式,点击表头【已添加】右侧的按钮实现切换。

切换模式

  • 树形模式展示

切换模式

  • 列表模式展示,

登录云控制锁

列表模式中,点击列表头能够实现排序。

3、函数选择支持 【Control + A】、【Control + 鼠标】和【Shift + 鼠标】等。

4、函数的保护方式支持右键选择

5、选择了保护方式后【已添加】会表示为已选择。

非托管代码程序

1、函数名称为函数的va的值

2、展示列表只有列表一种模式

其余的功能和托管代码程序一致。

信息展示

可保护函数列表信息展示,显示了函数的总个数、已添加函数个数、混淆函数个数、碎片代码函数个数。

登录云控制锁

添加

点击【添加】按钮,退出窗口,并将函数添加到主页面的被保护函数列表当中

取消

点击取消,退出窗口,不做任何修改。

3.6如何使用SDK标签#

3.6.1添加需要保护的函数模块#

SDK工具包,包括头文件、静态库以及动态库,用户在编程的过程中将SDK标签静态载入到需要保护的函数当中,这样生成的可执行程序,在Virbox Protector加壳工具中就能够分析出SDK表示的函数,这样就能够找到用户的核心代码所在的位置。目前支持,VBProtectBegin(常规保护),VBVirtualizeBegin(虚拟化保护),VBMutateBegin(混淆化保护),VBProtectDecrypt(代码加解密)。[特别提醒:SDK标签能方便用户找到关键代码]

SDK标签使用需要注意以下几点:

SDK标签使用

1、sdk只能静态加载,不支持动态加载dll(即loadlibraryA的方式);

2、VBProtectBegin、VBVirtualizeBegin以及VBMutateBegin等接口,传入的字符串参数,不能与其他函数共用;

3、传入的字符串参数保证为ANSII码的形式,这样显示在界面上的函数名称才正确,否则就会显示为乱码;

4、每个Begin对应一个End,总是成对出现,并且一个函数里面不要出现多对Begin+End;

5、如果SDK表示的保护方式和工程文件中保存的保护方式冲突了,以工程文件中的保护方式为准;

6、Begin+End锁定代码最好大于3行代码。(因为锁定的代码正汇编生成的指令小于15个字节,那么不会显示在加壳工具界面上);

7、SDK动态库,分为32以及64位,在使用的时候要开发者根据要编译的程序位数进行加载对应的库;

8、目前明确不支持的语言:易语言、java程序、unity3d;

9、Begin/End不支持嵌套使用;

10、VBProtectDecrypt被加密的字符串或者是缓冲区的长度必须是16的倍数,例如 char g_test_string[16] = {“test_decrypt”};

11、VBProtectDecrypt传入缓冲区和传出缓冲区不能是同一个缓冲区;

12、VBProtectDecrypt传入的缓冲区只能放在函数外,即全局变量,具体的使用参照demo;

13、.Net程序暂时不支持VBProtectDecrypt。

3.6.2 SDK 中字符串加解密#

3.6.2.1 使用方法#

1、加密的字符串必须是常量。

2、也可以使用VBDecryptData直接到数据加密,但数据和长度也必须是常量。

3、字符串加密支持的写法有以下几种:

a. 直接字符串加密:

VBDecryptStringA("test_string");

b. 局部静态变量:

static const char g_string[] = "test_string";

c. 全局变量:

char g_test_string[] = "test_string";

const char g_test_string[] = "test_string";

static const char g_test_string[] = "test_string";

3.6.2.2 注意事项#

1、如果程序过于复杂可能会导致解析不出要加密的数据,而在加壳时报错,使用-fpic或-fpie加上-O2 编译的32位Linux程序此类情况比较明显。建议降低代码的复杂度。

2、编译器可能会将相同的常量字符串合并为同一个,如果只加密了其中一个,会导致出错,如以下代码:

const char* a = "test_string";

const char* b = VBDecryptStringA("test_string");

printf("a = %s, b = %s\n", a, b);

这种情况,打印字符串a,可能会是乱码。

3.7 如何使用自定义插件#

3.7.1 自定义插件#

我们以外壳工具目录下面的demo为例进行介绍:

1、首先编写插件的dll,格式请查看demo工程中的文件demo.cpp

2、编写插件配置文件“XXX.xml”,书写规则如图

插件配置文件

3.7.2 插件使用#

1、文件的格式

插件配置文件

2、插件文件存放在plugin目录下

注意

plugin目录下的插件文件夹不能使用中文名称,否则不能正常使用插件。

3.7.3 界面显示#

1、插件在加壳工具中显示

插件在加壳工具中显示

2、加壳后程序的插件显示

加壳后程序的插件显示

4 问题及解决方法#

4.1 什么是许可#

LM本质就是「加密与管理」。 深思许可管理(Sense LicenseManagement)是一套深思数盾根据中国国情、多年用户深度定制的经验与市场独特理解的许可管理解决方案,其本质是控制软件能否使用,尤其在领先的【移植算法】的理念保证下,解决软件无锁情况下试用、加密锁丢失甄别等棘手问题提供技术支持,达到超安全性与软件许可灵活性的平衡。同时针对企业内部挑战如加密开发难度高、加密方案泄露风险(加密人员离职)、私自烧狗等,提供强有力的工具与平台。

许可是软件版权的控制与发放(SoftwareLicense),本质就是允许让最终用户能否使用软件的技术控制。本文主要讲的是技术控制,其中分为许可技术和许可管理。

许可的技术控制:可以区分许可内容、 许可使用时间、 使用次数、软件并发限制、同时登录软件系统的在线人数限制等功能限制。 许可管理:对许可使用、许可生命周期(产品创建、许可的生成、许可的发放、许可的吊销)的管理和用户的管理,综合为许可管理。

4.2 许可获取以及许可的更新、删除操作#

4.2.1 使用开发商工具签发许可#

4.2.2 新建#

LicMgr

4.2.3 编辑#

LicMgr

其中,锁定的意思是:选择后,新建模板及授权后,该数据区不可修改。

4.2.4 删除#

选中要删除的产品,点击“删除”按钮。 注意:删除产品时,会同时删除通过该产品创建的所有许可模板。

4.3 授权管理#

授权管理包括模板的新建、编辑、删除功能,以及许可发布和已签发记录查看功能。

不同类型许可具有近似特征,重复操作一类许可不仅浪费时间,还会出现操作失误,不利于产品的管理和许可签发。深思使用模板的方式固化常用的许可类型,一次设定、反复使用,来减少开发者的工作量,提高效率。

4.3.1 新建模板#

  • 选择产品

LicMgr

  • 填写授权信息

LicMgr

4.3.2 编辑模板#

选择已有的许可模板,编辑模板信息。

4.3.3 删除模板#

选中要删除模板,点击“删除模板”按钮。

4.3.4 发布许可#

  • 选中要发布许可模板,点击“发布许可”。

LicMgr

  • 编辑授权信息

发布前可以对许可进行临时修改,适应于少量的改动的情况。

LicMgr

  • 选择硬件锁

选择要签发许可的硬件锁,支持批量给多把锁签发许可。

LicMgr

  • 许可签发 点击“发布”,发布成功。

4.3.5 查看已签发许可#

查看已经签发的许可信息,如下图:

LicMgr

4.3.6 以 WEB 方式签发云许可#

第一步 登录开发者网站的云账号

第二步 新建产品

新建产品

第三步 新建正式模板

发布模板

第四步 新建用户

输入用户

第五步 许可分发

发布许可

第五步 在许可管理工具中查看发布结果

查看结果

4.4 加壳后的程序在哪里#

问题描述:有一部分用户,找不到加过壳的程序,加壳工具加密选项输出文件则显 示加过壳后程序的路径。

4.5 加密后的软件360报毒#

问题描述:使用加壳工具对开发者软件进行加壳,然而加密后的程序360认为是病毒软件。

解决方法:提交360认证

第一步:软件中可执行文件(不包含驱动程序.sys)及打包后的可执行文件使用沃通(Wosign)签名(使用沃通代码签名工具并且购买代码签名证书进行签名,沃通签名相关问题请咨询沃通官方网站客服人员,沃通签名在360认证过程有很大帮助)。

第二步:注册并登录360开放平台:http://open.soft.360.cn/

第三步:在“我的软件”页面中选择提交我的软件,如下图:

360认证

第四步:选择“仅安全检测”,并填写软件名称,软件版本(主要为了后续记录查看),提交方式可以选择本地上传安装包,然后提交软件。

第五步:同时可以在“软件列表”中查看已经提交过的待检测软件和“通过检测”的软件。目前软件提交后通过检测的时间大约为1天。

4.6 加壳软件已知问题汇总#

  • 不支持二次加壳,无论是第三方还是本程序加壳后的文件,都不能再次进行加壳。

  • .NET加壳不支持第三方运行时库,只支持微软标准运行时库。

  • 使用命令行加壳时,其目标程序的配置文件必须存在。

  • 在.NET程序中使用类似GetField("name", bindingAttr)函数时,加壳后名称混淆可能出现异常,如果.NET 程序加壳后运行失败,尝试去掉名称混淆。

  • SDK标签不支持含有本地代码的托管程序。

  • 对函数块进行碎片化代码保护的时候,存在不能成功保护的情况,主要原因是,碎片代码对指令的长度过小,指令可能不可移植,存在跳转等情况。

  • 有的软件加壳后需要把名称改为原来的名称才能运行。(例如:程序Mine.exe,加壳后的程序为Mine.ssp.exe,假如程序Mine.ssp.exe不能成功启动,有可能需要将Mine.ssp.exe改为Mine.exe才能正常使用)。

  • AUTOCAD的arx插件程序只能选择“远程桌面服务会话消息框”,并且目前只支持win7和server2008以上的版本。

  • 如果是Spring框架的Java程序,请使用资源加密的方式保护。

  • 暂不支持程序加压缩后用于链接。

  • 如果用户的机子上装有杀毒软件AVAST,可能会出现加壳后的程序无法运行的情况。导致此问题的原因是,当加壳程序运行的时候AVAST会杀死加壳程序的进程。

  • 暂不支持带有程序集签名(强签名)的程序进行加壳。

4.7 加壳工具目前已经测试的可以支持的范围#

序号 文件类型 语言类型 备注
1 .Net VB、C#等 .net core2.0暂不支持
2 PE C、C++、Delphi、PB、BCB、arx等
3 Unity3D C#等
4 ELF C、C++等
5 MachO

4.8 如何使用VirboxProtector_con.exe命令行加壳工具#

1、新建一个文件夹,将待加壳的exe放入到该文件夹下。打开加壳工具,把待加壳的exe分别拖进去,配置好加密属性,点击保存按钮会在同目录下为待加壳程序生成同名.ssp配置文件

2、打开windows控制台命令窗口

3、输入 路径+VirboxProtector_con.exe /? 可以查看帮助信息(该程序默认目录在:“C:/Program Files (x86)/senseshield/sdk/Tool/VirboxProtect/(bin|bin64)”下)

命令行加壳帮助 命令行加壳工具help信息

virboxprotector_con <filename> [-c local|cloud] [-u username] [-p password] [-o output]
 -c local|cloud             // type of developer master lock.
 -u username                // username of developer account.
 -p password                // password of developer account or the pin of master lock.
 -o output                  // output file name.
 -?                         // show help information.

4、使用本地控制锁加壳

VirboxProtector_con.exe全路径 + 需要被保护的程序的全路径 -c local –p 密码 -o 输出文件的全路径。如图:

使用本地控制锁加壳

5、使用云控制锁加壳

VirboxProtector_con.exe全路径 + 需要被保护的程序的全路径 -c cloud -u 开发者名称 -p 开发者密码 -o 输出文件的全路径。 如图:
使用云托管控制锁加壳

注意

1、命令行工具会自动从被加壳工具下面查找XXX.exe.ssp工程配置文件(该配置文件是VirboxProtector界面工具生成得到的)

2、如果路径中存在空格需要将路径使用双引号("路径")括起来。

工程配置文件

4.9 如何生成map文件#

1、生成BCB程序map,工程设置如下图

生成BCB程序map

生成BCB程序map

2、生成VC程序map,工程设置如下图

生成VC程序map

生成VC程序map

3、生成VS程序map,工程设置如下图

生成VS程序map

生成VS程序map

4、生成Delphi程序的map,工程设置如下图

生成delphi程序map

生成delphi程序map

5、生成VB6.0程序的map

在系统环境变量中增加一个名为“LINK”,值为"/MAP"项目,重新启动电脑,这样编译生成exe程序,map文件就不会自动删除,而得以保留。

生成VB6程序map

4.10 如何对Unity3D程序进行加壳#

1、将Unity3D程序的整个目录拖入加壳工具中,加密选项处输出文件夹会自动写成【ssp.程序名】,点击【加壳保护】即可对unity3D目录加壳。[加壳工具默认对Unity3D目录下的mono.dll和Assembly-CSharp*.dll]文件进行加壳保护]

2、若想对其他的dll和资源进行保护,对Unity3D目录加壳时ds插件打开,将生成的配置文件拖入到DS工具中,然后使用DS工具对所需要保护的资源进行加密。

4.11 如何对Java程序进行加壳#

4.11.1 对jar包进行加密#

第一步:将jar包拖入加壳程序

首页

首页

第二步:设置加密选项

加密选项

加密选项

第三步:设置消息选项

消息选项可以选择默认,也可以根据自己需要重新设置

第四步:点击【加壳】,生成加壳后的程序

加壳后的文件

加壳后的文件

第五步:运行加壳后的程序

命令行中输入: javaw -agentpath:sjt64.dll -jar Java_Bounce.ssp.jar

运行

运行

4.11.2 对war包进行加密#

第一步到第四步:war包和jar包加壳的流程是一致的。

需要注意:对war包进行加壳的时候消息选项中许可失效提示形式只能选择“程序不提示消息,直接闪退”。

第五步:运行加壳后的程序

1、需要将sjt32.dll或者是sjt64.dll【具体根据装的java环境决定】拷贝到jdk\bin,jre\bin中。

2、将set JAVA_OPTS=-agentpath:sjt64.dll或者是set JAVA_OPTS=-agentpath:sjt32.dll设置到tomcat中bin目录下的catalina.bat文件中

3、运行tomcat

5、完成加壳。

注意:如果上述方法保护后的程序无法运行,可能是因为上述方法不适用于您的程序,那么请尝试使用“资源保护”的方式进行保护您的程序,请仔细阅读下面的章节。

5 Linux程序加壳保护#

1、解压sdk开发包,例如:senseshield-sdk-2.2.0.28909.tar.gz,解压该压缩包。

2、将解压后文件中的lib目录下面的libslm_runtime.so和libss_user_login.so两个文件拷贝到加壳工具文件目录的bin目录下,并把这两个文件名称修改为slm_runtime_linux32.so和ss_user_login_linux32.so

3、将解压后文件中的lib64目录下面的libslm_runtime.so和libss_user_login.so两个文件拷贝到加壳工具文件目录的bin目录下,并把这两个文件名称修改为slm_runtime_linux64.so和ss_user_login_linux64.so

文件结构如图所示

linux开发库

linux开发库

3、将linux上的被加壳程序,拷贝到windows中进行加壳,加壳方法同windows程序,然后将加壳后的程序拷贝到linux上运行

6 Mac程序加壳保护#

1、解压SDK开发包,例如:senseshield-sdk-2.2.0.28909-mac.tar.gz,解压该压缩包。

2、将解压后文件中的lib64目录下面的libslm_runtime.dylib和libss_user_login.dylib两个文件拷贝到加壳工具文件目录的bin目录下,并把这两个文件名称修改为slm_runtime_x64.dylib和ss_user_login_x64.dylib

文件结构如图所示

mac开发库

3、将Mac上的被加壳程序,拷贝到Windows中进行加壳,加壳方法同Windows程序,然后将加壳后的程序拷贝到Mac上运行

7 其它类型程序的加壳保护#

7.1 加密的原理#

  • 用加壳工具给执行的exe加壳,这个过程会将会将您设置的密码和解密插件注入到exe中。

  • 用DSProtector.exe 选择*.ssp(由加壳工具生成,里面存有秘钥),然后选择要加密的数据文件,点击"保护它"按钮就可以了。步骤如下.

  • 执行加壳 ,勾选 插件->ds ,设置密码,就会用这个密码给你的数据文件加密

image

  • 选择ssp文件

image

  • 选择之后

image

  • 添加资源文件

image

  • 选择要保护的资源

image

  • 点击 "保护它",自动将原文件替换为加密文件;原文件被改名为 {xxxx}.bak ,xxxx 是你选择的文件名字

image

7.2 如何使用DSProtector.exe程序进行资源保护#

加壳工具对绝大部分的软件的二进制代码能够提供非常优质的保护,而对于软件使用的资源,我们提供了 DSProtector.exe资源保护工具进行保护,目前资源保护工具(DSProtector.exe)支持的范围包括(已测试)

序号 软件名称 类型 支持or不支持 备注
1 Python 语言类 Y 对pyc支持,对.py程序源码不支持
2 Lua 语言类 Y
3 Perl 语言类 Y
4 Erlang 语言类 N
5 Ruby 语言类 Y 命令执行脚本支持,web端不支持
6 Go 语言类 N
7 PHP 语言类 Y
8 R 语言类 Y
9 Unity3D游戏 游戏类 Y 对dll、res、resources、unity3d文件支持
10 UE4 游戏类 部分支持
11 Potplayer 播放软件 Y Mp4、mkv
12 暴风影音(安装版) 播放软件 Y Mp4、mkv
13 暴风影音(绿色版) 播放软件 Y
14 jar、war web or 客户端 开发环境 Y
15 2345看图王(安装版) 图片类 Y jpg、jpeg、png、bmp、gif支持
16 foxitreader_cnlv(绿色版) pdf文档阅读器 Y

更详细的使用方法,请参考ds.pdf