命令行选项

命令行工具

Virbox Protector 的命令行工具 virboxprotector_con 的默认路径位于:

Windows:C:\Program Files\senseshield\Virbox Protector 3\bin
Linux:/usr/share/virboxprotector/bin
macOS:/Applications/Virbox Protector 3.app/Contents/MacOS/bin

调用命令行可以指定完整全路径,例如:

"C:\Program Files\senseshield\Virbox Protector 3\bin\virboxprotector_con.exe" <file_path>      <options ..> -o <output_path>

如果在 Windows系统,也可以加入环境变量,然后直接输入 virboxprotector_con,无需输入全路径。

非 Windows 系统,也可以设置软链接:

sudo ln -s /usr/share/virboxprotector/bin/virboxprotector_con /usr/local/bin/virboxprotector_con

然后即可直接输入virboxprotector_con 命令进行保护。

命令行主功能#

对于一般的程序类型,可以直接传入路径进行保护,程序类型可以自动识别,如:

virboxprotector_con <file_path> <options ...> -o <output_path>

对于几类特殊的保护方式,需要指定类型:

保护方式参数

Java-BCE 保护方式

-java

Unity3D资源加密(Windows/Linux热更新)

-u3dres

Html5应用(.js)

-h5

移除调试信息(ELF格式 strip)

-strip

多渠道打包

-mulpkg

程序集合并

-ilmerge

举例:

virboxprotector_con -java <java_dir> <other_options ...>

长命令行风格

对于绝大部分开关类型的命令行选项,使用 --{opt}=value 的风格,1代表开启,0 代表关闭:

举例

--mem-check=1, --jit-enc=0

命令行帮助

更细节的参数,可以使用 --help={type}查看帮助:

例如:

virboxprotector_con --help=apk

支持的类型如下:

--help={native|dotnet|apk|aab|aar|app|u3d|java-bce|java-vme|h5|strip|u3dres|mulpkg|ilmerge}

其中 native 程序是指操作系统原生的程序类型,运行时不依赖于虚拟机或解释器的程序,一般由C/C++/Delphi/VB6 等语言编译生成,包括 Windows 下 PE 格式的程序(.exe/.dll/.sys等后缀),Linux/Android 下 ELF 格式的程序(.so后缀或主程序),macOS/iOS 下的 MachO 格式的程序(.dylib或主程序)。

程序类型和选项

Android APK/AAB

选项命令行默认选项

Dex 加密

--dex-enc=

APK:1, AAB:0

文件校验

--file-check=

1

签名校验

--sign-check=

0

反注入

--anti-inject=

1

调试器检测

--detect-dbg=

0

模拟器检测

--detect-emu=

0

Root检测

--detect-root=

0

多开检测

--detect-multi=

0

输出 apks (AAB启用签名时生效)

--apks=<apks_path>

N/A

资源加密

使用 --res-enc=1 开启资源加密,资源列表使用 ; 隔开,支持通配符 *

选项命令行默认选项

启用

--res-enc=

0

资源列表

-res <resource_list>

默认所有资源

举例:

--res-enc=1 -res "file1;file2;assets/file1;assets2/*"

SO 保护

选项命令行默认选项

隐藏符号表

--hide-symtab=

0

资源列表

-lib <nativelib_list>

N/A

举例:

--hide-symtab=0 -lib "lib/armeabi-v7a/libhello.so;/lib/arm64-v8a/*"

函数选项

APK/AAB 的函数级保护仅支持代码虚拟化

默认虚拟化入口Application类 和 Main Activity类中的方法,指定具体函数见 函数选项

多渠道打包

多渠道打包见 多渠道打包

签名

签名选项见 签名选项

举例

virboxprotector_con app-release.apk     --dex-enc=1 --file-check=1 --detect-dbg=0 --sign-check=1    --res-enc=1 -res "assets/*;res/*"    --hide-symtab=0 -lib "lib/armeabi-v7a/libhello.so;/lib/arm64-v8a/*"    --sign=1 --ks="test/android.ks" --ks-pass=mypass --ks-key-alias=CERT --key-pass=mykeypass    -o app-release-protected.apk

PE#

选项命令行默认选项

压缩

--pack=

1

内存校验

--mem-check=

1

导入表保护

--imp-protect=

1

资源节加密

--res-sect-enc=

1

附加数据加密

--overlay-enc=

1

调试器检测

--detect-dbg=

0

虚拟机检测

--detect-vm=

0

ELF#

选项命令行默认选项

压缩

--pack=

1

内存校验

--mem-check=

1

调试器检测

--detect-dbg=

0

剥离符号表

--strip-dbginfo=

1

MachO#

选项命令行默认选项

内存校验

--mem-check=

1

调试器检测

--detect-dbg=

0

签名命令见 签名选项

App#

选项命令行默认选项

内存校验

--mem-check=

1

调试器检测

--detect-dbg=

0

Objective-C名称混淆

--objc-rename=

0

输出路径

-o

protected/<file_name>

IPA 路径(需启用签名)

--ipa=<ipa_path>

签名选项

签名选项 中的 iOS/macOS 签名。

.NET#

选项命令行默认选项

压缩

--pack=

0

JIT 加密

--jit-enc=

1

字符串加密

--str-enc=

1

附加数据加密

--overlay-enc=

1

调试器检测

--detect-dbg=

0

名称混淆

--rename=

0

名称混淆保留规则

--keep-rules=

""

如果没有附加数据,则忽略 --overlay-enc 选项。

名称混淆选项

--rename=0 关闭。

--rename=1 混淆私有成员。

--rename=2 保留自定义名称。

名称保留规则

使用封号; 隔开,支持通配符*

举例

virboxprotector_con test.dll --pack=0 --jit-enc=1 --str-enc=1 --rename=2 --keep-rules="MyNamespace.MyInterface.*;MyNamespace.ExportForInvoke.*"

函数选项

函数选项,默认对入口函数代码加密。

Unity3D#

选项命令行默认选项

内存校验(仅il2cpp)

--mem-check=

1

文件校验(仅安卓)

--file-check=

1

签名校验(仅安卓)

--sign-check=

0

反注入(仅安卓)

--anti-inject=

1

Unity引擎保护(仅安卓il2cpp)

--unity-engine-protect=

1

MetaData名称混淆(仅il2cpp)

--metadata-rename=

0

调试器检测

--detect-dbg=

1

模拟器检测(仅安卓)

--detect-emu=

0

Root检测(仅安卓)

--detect-root=

0

多开检测(仅安卓)

--detect-multi=

0

程序集加密

使用 -asm 指定程序集列表,使用封号 ; 隔开,支持通配符 *,默认会加密 Assembly-CSharpAssembly-UnityStrcip 开头的 Dll,一般无需指定。

举例:

-asm "Data/Managed/Assembly-CSharp.dll;Data/Managed/Assembly-CSharp-first.dll"

Copy

资源加密

使用 --res-enc=1 开启资源加密,资源列表使用封号; 隔开,支持通配符 *

选项命令行默认选项

启用

--res-enc=

1

大小优先(仅安卓、iOS)

--res-favor-size=

0

资源加密密码(仅Windows/Linux)

--res-pass=

N/A

资源列表

-res <resource_list>

默认所有资源

举例:

--res-enc=1 -res "file1;file2;assets/file1;assets2/*"

Copy

Java#

Java-BCE#

virboxprotector_con -java <project_directory> [--java-pass=<password>] [-o <output_directory>]

Copy

选项命令行默认选项

设置密码

--java-pass=

随机

加密内嵌jar包

--include-embedded=

0

输出路径

-o <path>

xxxx_protected

举例:

virboxprotector_con -java my_java_dir --java-pass=12345 --include-embedded=1 -o my_java_dir_protected

Copy

Java-VME#

Java-VME 仅支持代码虚拟化保护。

举例(保护test1和test2的所有方法):

virboxprotector_con my_jar.jar -v "com.example.test1.*;com.example.test2.*" -o protected/my_jar.jar

Copy

举例(保护jar包中的所有方法):

virboxprotector_con my_jar.jar -v "*" -o protected/my_jar.jar

Copy

AAR#

Android AAR 支持代码虚拟化,和其中的SO库的保护:

举例(保护com.example 包下所有类方法,保护所有so库):

virboxprotector_con test.aar -v "com.example.*" -lib "jni/*" -o protected/test.aar

Copy

H5#

virboxprotector_con -h5 <dir_or_file> -o <output_path>

Copy

签名选项#

APK/AAB 签名#

选项命令行默认选项

启用签名

--sign=

0

Key Store 路径

--ks=

全局配置

Key Store 密码

--ks-pass=

全局配置

密钥别名

--ks-key-alias=

全局配置

密钥密码

--key-pass=

全局配置

举例

virboxprotector_con <file_path> <other_options ...>     --sign=1 --ks="test/android.ks" --ks-pass=mypass --ks-key-alias=CERT --key-pass=mykeypass     -o <output_path>

Copy

iOS/macOS 签名#

选项命令行默认选项

启用签名

--sign=

0

证书

--identity=

N/A

函数选项#

支持指定函数名称或规则保护,使用 ;号隔开, 支持通配符 *

选项命令行通配符

忽略不支持的函数

--ignore-unsupported=<value>

N/A

代码加密

-e

支持 *

代码混淆

-m

支持 *

代码虚拟化

-v

支持 *

举例

-m "function1;function2" -v "function3;function4" -e "test*" --ignore-unsupported=1

--ignore-unsupported= 选项用于忽略不支持的函数,不支持则跳过,对 Jar/aar/war/apk/aab 格式的程序默认开启。

其它选项#

多渠道打包#

保护并使用渠道模板

virboxprotector_con <apk_path> <other_options ...>     --mulpkg-template=<template_path> --mulpkg-outdir=<multi_package_outdir>     [-o <output_main_apk_file>]

Copy

仅渠道打包不做保护

virboxprotector_con -mulpkg <apk_path> --mulpkg-template=<template_path> -o <output_directory>

Copy

指定签名(可选)

以上命令,均可指定签名选项,见 签名选项

程序集合并#

使用 -ilmerge 选项进行合并:

virboxprotector_con -ilmerge <main_assembly> <other_assemblies ...> -o <output_path>

Copy

举例

virboxprotector_con -ilmerge Project.exe MyLibrary1.dll MyLibrary2.dll -o Merged/Project.exe

Copy

移除符号表#

使用 -strip 选项移除 ELF 程序中的调试信息(静态符号表和静态字符串表):

virboxprotector_con -strip <file_path> -o <output_path>

Copy

举例

virboxprotector_con -strip libhello.so -o striped/libhello.so

最后更新于