Skip to main content

自动集成加密如何实现

本文档适用VirboxProtector版本:3.0.1.17240及以上版本。

命令行工具#

1.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

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

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

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

若非Windows系统,也可以设置软链接,命令参考如下:

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

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

使用map/pdb文件#

加壳工具解析PE程序时函数是以地址的方式显示,若有map/pdb文件则加壳工具解析PE程序时函数是以函数名的方式进行显示;

目前支持pdb和map文件,若两种文件同时存在,默认识别pdb文件。

如何生成map或pdb文件,参考文档显示程序的函数名

命令行工具保护#

PE\ELF\machO格式的程序都属于Native程序,使用virboxprotector_con --help=native可查看具体的帮助信息。

设置选项#

1. PE格式

选项命令行默认选项
压缩--pack=1
内存校验--mem-check=0
导入表保护--imp-protect=0
资源节加密--res-sect-enc=0
附加数据加密--overlay-enc=0
调试器检测--detect-dbg=0
虚拟机检测--detect-vm=0

长命令行风格

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

举例

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

命令行帮助

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

virboxprotector_con --help=native

2. ELF格式

选项命令行默认选项
压缩--pack=1
内存校验--mem-check=0
内存保护--mem-protect=0
导入表保护--imp-protect=0
移除调试信息--strip-dbginfo=0
调试器检测--detect-dbg=0

3. MachO格式

选项命令行默认选项
内存校验--mem-check=0
移除调试信息--strip-dbginfo=0
调试器检测--detect-dbg=0

函数选项#

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

选项命令行
忽略不支持的函数--ignore-unsupported=<value>(默认关闭:0)
代码加密-e
代码混淆-m
代码虚拟化-v
入口函数--oep=<0,v,m,e>

举例

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

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

保护示例#

注意

1)针对默认选项,若无ssp配置文件情况下,命令行中指定该参数值为0,则表示不会生效,若不指定该参数,则默认该功能生效;

2)若存在ssp配置文件情况,命令行中不指定参数,则以配置文件里的设置为准;

3)若存在ssp配置文件情况,命令行中指定参数值,则以命令行中指定的值为准。

1.对主程序保护(关闭压缩,开启内存校验/导入表保护/资源节加密):

以下两种写法均可:1.virboxprotector_con.exe test.exe --pack=0 --mem-check=1 --imp-protect=1 --res-sect-enc=1 -o protected/test.exe2.virboxprotector_con.exe test.exe --pack=0 -o protected/test.exe

2.对程序保护(对指定的函数进行保护):

1)主程序/dll旁含有pdb或map文件,若pdb文件是database 2.00或BSJB格式,则将会不支持;

virboxprotector_con test.dll --pack=1 -o protected/test.dllError (A0009004): This type of PDB file not supported

2)主程序/dll旁含有pdb或map文件,若pdb文件是Microsoft C/C++格式,则支持;

1.若对指定函数进行虚拟化保护virboxprotector_con.exe GroupApp.exe -v "_get_exp;_get_fpsr;WriteEventLog;wmemmove;" -o protected/GroupApp.exesome functions were set the unsupported protection way, please reset these protection way2.提示以上错误说明个别函数不支持,需要忽略不支持的函数virboxprotector_con.exe GroupApp.exe -v "_get_exp;_get_fpsr;WriteEventLog;wmemmove;" --ignore-unsupported=1 -o protected/GroupApp.exe

3)主程序/dll旁不含有pdb或map文件,若函数指定了,也不会进行保护;

若对指定函数进行代码加密保护,则-e后指定的函数不会进行保护,默认只对入口函数进行代码加密virboxprotector_con.exe GroupApp.exe -e "_get_exp;WriteEventLog;wmemmove;" --ignore-unsupported=1 -o protected/GroupApp.exe

3.对程序保护(若关闭压缩/内存校验,开启调试器检测/虚拟机检测)

virboxprotector_con.exe GroupApp.exe --pack=0 --mem-check=0 --detect-dbg=1 --detect-vm=1 -o protected/GroupApp.exe

以上保护示例为命令参考,建议以自己的需求功能进行保护。