Skip to main content

本地程序如何实现加密部分的自动化集成

命令行工具保护#

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