跳到主要内容

如何在Linux环境使用VBP LM加壳

概述

本文档介绍在如何Linux环境使用 Virbox Protector LM 对 Linux应用程序加壳;

适用场景

开发环境为Linux, 需要在 Linux系统下使用VirboxProtector进行加密;

前提条件

1、您已经注册转正成为正式开发商;可以参考注册转正;

2、您已经使用Windows上的开发者工具盒获取SDK;可以参考获取SDK;

3、您已经对 Virbox LM 集成流程有一定认识。 如果想了解,可以参考Virbox LM 集成流程

需要准备的东西

1、Linux SDK;

​ 我们为每家开发商定制了 SDK ,使用VBP LM加密时,会自动集成Virbox LM授权,在加密时, VBP LM会按照自己的默认路径寻找对应的库;在Windows下的开发者工具盒下载的SDK,里面有Linux x86平台的SDK; 在加密时,如果只勾选硬件锁,就会集成lm_runtime 库, 如果勾选了软锁或者云锁,除了需要集成lm_runtime 库,还会集成ss_user_login库用于处理账号登录; 加密不同平台的程序,需要集成对应平台的库;比如加密x86_64 Linux ELF程序,就会寻找 x86_64的runtime库libslm_runtime.so; 如果加密时勾选了软锁或者云锁,还需要依赖对应平台的 libss_user_login.so库。

2、安装VBP LM Linux版本;

​ 我们的开发者工具盒,只能安装在Windows 环境下, 工具盒中带的VBP LM也是Windows版本,我们提供 Linux版本的 VBP LM,目前我们提供的Linux 版本的 VBP LM目前只能运行在x86_64平台下。

Deb格式下载链接

RPM格式下载链接

温馨提示

VBP LM 本身只能在x86平台上运行,但可以支持对不同平台的程序进行加密,只需要部署对应平台的SDK即可。

部署步骤

1、拷贝SDK

  • 将 Windows 平台上 Virbox 开发者工具盒下载的SDK中的C:\Program Files(x86)\senseshield\sdk\API\linux 文件夹拷贝到 Linux 系统上;
  • 在Linux系统上,到已经拷贝过来的文件夹目录下,给copy_lib_share.sh 执行权限;可以使用命令 sudo chmod 755 copy_lib_share.sh 设置权限,然后用执行sudo ./copy_lib_share.sh; 脚本会把sdkinfo.xml 放到/usr/local/share/senseshield/sdk/ 目录, 并把SDK放到配置文件指定的目录。
温馨提示

VBP LM Linux版本,在加密时,寻找依赖库有2种方式:

1、会到 /usr/local/share/senseshield/sdk/ 目录寻找 sdkinfo.xml 文件,根据这个文件里设置的路径,寻找对应需要的库;

2、如果第一种找不到依赖的库,就会到VBP LM安装目录的\bin目录里寻找对应的库; 因为不同平台的库的名字是一样的,所以如果使用这种方式,需要将库名修改一下,加上平台后缀。 如何命名参考附录。

注意

注意,上述拷贝SDK步骤,仅拷贝了Linux的运行环境到Linux加壳环境下,因此按照此步骤操作后,只能加在Linux下运行的程序,如果需要加壳在其他环境下运行的程序,需要根据附录表格对应内容,将对应平台下的SDK里的需要的库,改名后拷贝到加壳工具安装路径的bin目录下。

2、安装VBP LM Linux版本

不同的Linux需要不同的安装包;

在 CentOS 和 RedHat 系统下,使用 RPM 安装包, 安装命令如下:

sudo rpm -ivh virboxprotector_lm_xxxx.rpm

在Debian 和 Unbuntu 等系统下,使用 DEB安装包,安装命令如下:

sudo dpkg -i virboxprotector_lm_xxxx.deb

3、加密

加壳工具界面是QT实现的, 在 Linux环境下,如果有图形界面,就可以打开界面,和 Windows 同样的操作; 如果没有界面,只能使用命令行进行加密,但使用命令行需要提前设置到加密选项,保存ssp文件才能加密。

3.1 界面加密

启动界面后,功能完全与Windows的加壳方式一致,具体详细请参考: 软件加密流程

这里只讲主要流程步骤介绍一下。

  • 启动

​ 加壳工具VBP LM 安装路径是/usr/share/virboxprotector-lm , 可以到 bin 目录下,通过 ./virboxprotector 来启动界面;

注意:

VBP LM 加壳时需要开发锁参与,在联网的情况下,可以登录有加壳权限的开发者账号进行加壳(默认超级管理员都有权限); 如果要使用本地开发锁进行加密,需要插入控制锁, 在启动加壳工具时用 root 权限启动才行,因为在linux下,默认只有root权限才能与USB设备进行通讯。

1682215144400

  • 设置许可选项

    要点是至少选择一种许可类型; 输入许可 ID; 根据需求设置其他可选选项;

    1682215286059

  • 设置加密选项

    根据需求设置文件的加密选项;

    1682215325277

    根据性能和加密强度平衡需求,添加加密函数;

    1682215342801

  • 设置消息选项

    设置许可失效后,如何处理;

    1682215356518

  • 加壳保护

    加壳保护后,启动程序会检测授权,加壳后集成完成;

    1682215368194

3.2 命令行加密

加壳工具命令行加壳的入口是 virboxprotector_con ; 这个工具给开发商提供一种命令行快速加密的方式;

注意

命令行加密是调用virboxprotector 进行加壳, 没法通过命令设置加密选项; 所以,必须通过界面配置好加密选项,并生成加壳配置文件 ssp文件;

这里的截图的仅是标准版加壳工具的命令行; 如果是用的专业版,命令行加密jar或者war时, 将jar或者war作为普通程序,不需要加 -java参数。

通过命令行加密时,可以使用 ./virboxprotector_con -?

1682231424044

Virbox Protector 命令参数解析

命令说明备注
filename指准备保护的原文件
-u3d指对 Unit3D 程序保护
-o output指保护后输出文件路径
-c local|cloud使用控制锁或者开发者账号选择一个即可
-p password输入PIN码或者开发者账号密码
-u username使用开发者账号时,输入的开发者账号
-x [ssp路径]可指定ssp文件
  • 命令行使用开发锁加密基本格式是: ./virboxprotector_con [filename] -c local -p [开发锁PIN] -o [加密后文件输出]

  • 命令行使用云控加密基本格式是: ./virboxprotector_con [filename] -c cloud -u [开发者账号] -p [开发者账号登录密码] -o [加密后文件输出]

  • 命令行加密 JAVA程序基本格式是: ./virboxprotector_con -java [jar/class所在程序目录] --password [设置密码] -c local -p [开发锁PIN] -o [加密后文件输出]

  • 命令行加密 Unity3D程序基本格式是: ./virboxprotector_con -java [jar/class所在程序目录] --password [设置密码] -c local -p [开发锁PIN] -o [加密后文件输出]

注意

命令行加密时, 如果没有指定ssp文件,加密时会自动在被加密程序当前路径寻找 .ssp , 加 -x 可以指定 ssp文件; 如果没有ssp文件,会报错。

附录

VBP LM在bin目录找依赖库时对应命名

在所有平台上,当VBP LM找不到带加密程序依赖的对应的SDK库时,会到bin 目录找,但由于库名可能重复,所以可以添加后缀放入bin目录; 下表就是VBP LM找对应平台库时找的名字。如果拷贝库到bin目录时,须按表中的名字命名。

平台原始库名修改后名适用程序
Windows 32位slm_runtime.dllslm_runtime_windows_x86.dllwindows x86应用程序,运行在windows上32位jre上的java程序
Windows 32位ss_user_login.dllss_user_login_windows_x86.dll加密时勾选云软,windows x86应用程序,运行在windows上32位jre上的java程序
Windows 64位slm_runtime.dllslm_runtime_windows_x64.dllwindows x64应用程序,运行在windows上64位jre上的java程序
Windows 64位ss_user_login.dllss_user_login_windows_x64.dll加密时勾选云软,windows x64应用程序,运行在windows上64位jre上的java程序
Linux i386libslm_runtime.soslm_runtime_linux_x86.soLinux i386应用程序,运行在linux下32位jre上的java程序
Linux i386libss_user_login.soss_user_login_linux_x86.so加密时勾选云软,Linux i386应用程序,运行在linux下32位jre上的java程序
Linux x86_64libslm_runtime.soslm_runtime_linux_x64.soLinux x86_64应用程序,运行在linux下64位jre上的java程序
Linux x86_64libss_user_login.soss_user_login_linux_x64.so加密时勾选云软,Linux x86_64应用程序,运行在linux下64位jre上的java程序
Mac OS 64位libslm_runtime.dylibslm_runtime_macos_x64.dylib64位Mach-O应用程序
Mac OS 64位libss_user_login.dylibss_user_login_macos_x64.dylib加密时勾选云软,64位Mach-O应用程序
ARM V7 HF Linuxlibslm_runtime.soslm_runtime_linux_a32.soARM V7 硬浮点应用程序
ARMV7 SF Linuxlibslm_runtime.soslm_runtime_linux_a32.soARM V7 软浮点应用程序
ARM V8 Linuxlibslm_runtime.soslm_runtime_linux_a64.soARM V8 Linux 应用程序,运行在ARM V8 Linux 上 64位 jre上的java程序
ARM V8 Linuxlibss_user_login.soss_user_login_linux_a64.so加密时勾选云软,ARM V8 Linux 应用程序,运行在ARM V8 Linux 上 64位 jre上的java程序
Android ARM 32libslm_runtime.soslm_runtime_android_a32.soARM V7 Android So库加壳
Android ARM 64libslm_runtime.soslm_runtime_android_a64.soARM V8 Android So库加壳