本地程序如何实现加密部分的自动化集成
#
命令行工具保护PE\ELF\machO格式的程序都属于Native程序,使用virboxprotector_con --help=native
可查看具体的帮助信息。
#
5.3.4.1 PE格式1.保护选项:
选项 | 命令行 | 默认选项 |
---|---|---|
压缩 | --pack= | 1 |
内存校验 | --mem-check= | 1 |
导入表保护 | --imp-protect= | 1 |
资源节加密 | --res-sect-enc= | 1 |
附加数据加密 | --overlay-enc= | 1 |
调试器检测 | --detect-dbg= | 0 |
虚拟机检测 | --detect-vm= | 0 |
2.函数选项
默认对入口函数代码加密。
选项 | 命令行 |
---|---|
忽略不支持的函数 | --ignore-unsupported=<value> (默认关闭:0) |
代码加密 | -e |
代码混淆 | -m |
代码虚拟化 | -v |
3.命令行保护举例
注意:
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)对程序保护(对指定的函数进行保护):
主程序/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
主程序/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
主程序/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
#
5.3.4.2 ELF格式1.保护选项:
选项 | 命令行 | 默认选项 |
---|---|---|
压缩 | --pack= | 1 |
内存校验 | --mem-check= | 1 |
调试器检测 | --detect-dbg= | 0 |
剥离符号表 | --strip-dbginfo= | 1 |
2.函数选项
默认对入口函数代码加密。
选项 | 命令行 |
---|---|
忽略不支持的函数 | --ignore-unsupported=<value> (默认关闭:0) |
代码加密 | -e |
代码混淆 | -m |
代码虚拟化 | -v |
3.命令行保护举例
注:保护后的程序可能没有执行权限,需要chmod赋予程序执行权限
1)对程序进行保护(关闭压缩/内存校验/剥离符号表,开启调试器检测)
virboxprotector_con GroupApp --pack=0 --mem-check=0 --detect-dbg=1 --strip-dbginfo=0 -o protected/GroupApp
2)对程序进行保护(开启压缩/内存校验/调试器检测)
若命令行里不指定压缩和内存校验参数时,程序无ssp配置文件情况下,压缩和内存校验默认开启;
若命令行里不指定压缩和内存校验参数时,若有ssp配置文件,以配置文件设置为准;
virboxprotector_con GroupApp --detect-dbg=1 --strip-dbginfo=0 -o protected/GroupApp
#
5.3.4.3 MachO格式1.保护选项:
选项 | 命令行 | 默认选项 |
---|---|---|
内存校验 | --mem-check= | 1 |
调试器检测 | --detect-dbg= | 0 |
2.函数选项
默认对入口函数代码加密。
选项 | 命令行 |
---|---|
忽略不支持的函数 | --ignore-unsupported=<value> (默认关闭:0) |
代码加密 | -e |
代码混淆 | -m |
代码虚拟化 | -v |
3.命令行保护举例
注:保护后的程序可能没有执行权限,需要chmod赋予程序执行权限
1)对程序进行保护(关闭内存校验,开启调试器检测)
virboxprotector_con GroupApp --mem-check=0 --detect-dbg=1 -o protected/GroupApp
2)若程序为x64架构,保护后的程序可直接执行。
3)若程序为arm64架构,需要对保护后的程序进行签名
#
签名选项#
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>
#
iOS/maOS 签名1.签名选项
选项 | 命令行 | 默认选项 |
---|---|---|
启用签名 | --sign= | 0 |
证书 | --identity= | N/A |
2.命令行保护并签名举例:
1)查看mac系统上证书信息:security find-identity -v -p codesigning
2)若开启内存校验,开启调试器检测,开启签名
virboxprotector_con GroupApp.app --mem-check=1 --detect-dbg=1 --sign=1 --identity=<证书名称> -o protected/GroupApp.app