自动集成加密如何实现
本文档适用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
以上保护示例为命令参考,建议以自己的需求功能进行保护。