命令行选项

命令行工具

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 命令进行保护。

命令行主功能#arrow-up-right

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

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

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

保护方式
参数

Java-BCE 保护方式

-java

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

-u3dres

Html5应用(.js)

-h5

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

-strip

多渠道打包

-mulpkg

程序集合并

-ilmerge

举例:

长命令行风格

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

举例

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

命令行帮助

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

例如:

支持的类型如下:

其中 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>

默认所有资源

举例:

SO 保护

选项
命令行
默认选项

隐藏符号表

--hide-symtab=

0

资源列表

-lib <nativelib_list>

N/A

举例:

函数选项

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

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

多渠道打包

多渠道打包见 多渠道打包

签名

签名选项见 签名选项

举例

选项
命令行
默认选项

压缩

--pack=

1

内存校验

--mem-check=

1

导入表保护

--imp-protect=

1

资源节加密

--res-sect-enc=

1

附加数据加密

--overlay-enc=

1

调试器检测

--detect-dbg=

0

虚拟机检测

--detect-vm=

0

选项
命令行
默认选项

压缩

--pack=

1

内存校验

--mem-check=

1

调试器检测

--detect-dbg=

0

剥离符号表

--strip-dbginfo=

1

选项
命令行
默认选项

内存校验

--mem-check=

1

调试器检测

--detect-dbg=

0

签名命令见 签名选项

选项
命令行
默认选项

内存校验

--mem-check=

1

调试器检测

--detect-dbg=

0

Objective-C名称混淆

--objc-rename=

0

输出路径

-o

protected/<file_name>

IPA 路径(需启用签名)

--ipa=<ipa_path>

签名选项

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

选项
命令行
默认选项

压缩

--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 保留自定义名称。

名称保留规则

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

举例

函数选项

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

选项
命令行
默认选项

内存校验(仅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,一般无需指定。

举例:

Copy

资源加密

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

选项
命令行
默认选项

启用

--res-enc=

1

大小优先(仅安卓、iOS)

--res-favor-size=

0

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

--res-pass=

N/A

资源列表

-res <resource_list>

默认所有资源

举例:

Copy

Java-BCE#arrow-up-right

Copy

选项
命令行
默认选项

设置密码

--java-pass=

随机

加密内嵌jar包

--include-embedded=

0

输出路径

-o <path>

xxxx_protected

举例:

Copy

Java-VME#arrow-up-right

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

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

Copy

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

Copy

AAR#arrow-up-right

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

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

Copy

Copy

签名选项#arrow-up-right

APK/AAB 签名#arrow-up-right

选项
命令行
默认选项

启用签名

--sign=

0

Key Store 路径

--ks=

全局配置

Key Store 密码

--ks-pass=

全局配置

密钥别名

--ks-key-alias=

全局配置

密钥密码

--key-pass=

全局配置

举例

Copy

iOS/macOS 签名#arrow-up-right

选项
命令行
默认选项

启用签名

--sign=

0

证书

--identity=

N/A

函数选项#arrow-up-right

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

选项
命令行
通配符

忽略不支持的函数

--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 格式的程序默认开启。

其它选项#arrow-up-right

多渠道打包#arrow-up-right

保护并使用渠道模板

Copy

仅渠道打包不做保护

Copy

指定签名(可选)

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

程序集合并#arrow-up-right

使用 -ilmerge 选项进行合并:

Copy

举例

Copy

移除符号表#arrow-up-right

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

Copy

举例

最后更新于