#
方案简介Virbox Protector Android 应用加固提供专业安全的防护,可防止 APK 被逆向分析、反编译、二次打包,防止嵌入各种病毒、广告的恶意代码,从源头上保护数据安全和开发者的利益。Virbox Protector 2 可以帮助应用开发者实现一键加固+自动签名等多种操作。
#
操作流程- 将需要保护的 APK 文件导入Virbox Protector 2 Trial 中;
- 设置函数选项;
- 设置加密选项;
- 设置资源加密;
- 设置 SO 加密
- 执行加固;
#
登录双击 Virbox Protector 2 Trial 快捷方式,启动应用,如果您尚未安装,请先下载:下载
输入正确的账号&密码进行登录,如无账号,请先访问 https://shell.virbox.com/apply.html 进行注册。
#
导入文件将 APK 导入至 Virbox Protector 2 Trial 中。
可通过以下两种方式将待加密的文件添加到 Virbox Protector。
1)直接拖入到 Virbox Protector2)点击工具栏的【打开文件】,选择要加密的文件。
#
设置函数选项Virbox Protector 可对 DEX 函数进行虚拟化保护。DEX虚拟化技术:对 DEX 中的 Dalvik 字节码进行虚拟化,转换为自定义的虚拟机指令,然后由 Native 层虚拟机解释执行。
添加函数可以多选,可参考:添加函数的常用操作
#
加密选项设置#
输出信息可设置保护后生成的文件命名及存储位置。
#
设置选项- DEX 加密是对 DEX 文件整体压缩加密(若在Google Play上架,不建议勾选dex加密,建议选择虚拟化方式保护dex文件里的函数)
- 字符串加密:加密代码中的敏感字符串,防止反编译工具直接搜索到相关的函数。
- 勾选反调试按钮,则使用IDA等调试工具调试时,程序会直接退出。
- 勾选签名校验按钮,且进行签名设置,输入自己的 keystore 文件和密码(密钥别名和密钥密码选填)。
- 勾选文件校验:检查APK内所有文件的完整性。
- 勾选反注入,可以防止其它进程对 apk 或 aab 进程附加调试或注入。
- 勾选防截屏:可防止应用被截屏。
- 勾选模拟器检测,可以防止程序在“夜神”、“雷电”、"AVD"等模拟器中运行。
- 勾选 root 检测,可以防止程序在 root 过后的手机上运行。
- 勾选多开检测,可以防止程序多开分身。
#
签名设置启用签名:
勾选启用签名,需要设置keystore路径和keystore密码,设置密钥别名和密钥密码,加密后会自动签名。
如果不勾选启用签名,加密后的 apk/aab 需要手动重新做签名。
注意
使用“签名校验”功能,必须勾选“启用签名”,才能保护成功。
#
资源加密加密APK 中的assets下的文件,支持图片、配置、脚本等文件类型。
#
so库保护点击 so 保护 选项,点击选择文件,添加待保护的so库。【注】此方式选择的so库只有压缩功能,若有函数保护等需求,需要单独对so库进行保护。
注意
勾选“隐藏符号表”,so库需要全选,反之,so库若选择部分,“隐藏符号表”不建议勾选,否则运行可能会出问题。
#
点击保护选中项目设置完成后,点击【保护选中项目】,安装保护生成后的apk即可运行。点击【保护选中项目】后,在 protected文件夹中的是加密后的apk文件。
#
命令行加密流程Virbox Protector
的命令行工具 virboxprotector_con
的默认路径位于:
Windows:C:\Program Files\senseshield\Virbox Protector 3\binLinux:/usr/share/virboxprotector/binmacOS:/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 系统,也可以设置软链接:
sudoln-s /usr/share/virboxprotector/bin/virboxprotector_con /usr/local/bin/virboxprotector_con
然后即可直接输入virboxprotector_con
命令进行保护。
#
命令行主功能对于一般的程序类型,可以直接传入路径进行保护,程序类型可以自动识别,如:
virboxprotector_con<file_path><options...>-o<output_path>
长命令行风格
对于绝大部分开关
类型的命令行选项,使用 --{opt}=value
的风格,1
代表开启,0
代表关闭:
举例
--mem-check=1
, --jit-enc=0
命令行帮助
更细节的参数,可以使用 --help={type}
查看帮助:
例如:
virboxprotector_con --help=apk
#
加密选项选项 | 命令行 | 默认选项 |
---|---|---|
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/*"
举例
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
#
函数选项APK/AAB 的函数级保护仅支持代码虚拟化
。
默认虚拟化入口Application类 和 Main Activity类中的方法,支持指定函数名称或规则保护,使用 ;
号隔开, 支持通配符 *
。
选项 | 命令行 | 通配符 |
---|---|---|
忽略不支持的函数 | --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 格式的程序默认开启。
#
签名选项#
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>
#
其它选项#
多渠道打包保护并使用渠道模板
virboxprotector_con<apk_path><other_options...>--mulpkg-template=<template_path>--mulpkg-outdir=<multi_package_outdir>[-o<output_main_apk_file>]
仅渠道打包不做保护
virboxprotector_con -mulpkg<apk_path>--mulpkg-template=<template_path>-o<output_directory>
指定签名(可选)
以上命令,均可指定签名选项,见签名选项