本地程序保护时界面操作流程
#
方案说明本流程适用于C、C++、golang等开发语言开发的exe、dll 、so、dylib文件加密。
#
操作流程- 将需要保护的可执行文件或库文件导入Virbox Protector中
- 配置函数选项,设计个性化的保护方案
- 配置加密选项
- 执行保护
- 备份原始文件,将受保护的文件更名后替换原文件,保存好配置文件
#
1.导入文件直接拖入文件或者选择打开文件的形式,选择需要加密exe可执行程序或者dll动态链接库。
特别提醒
如果被加壳程序的相同目录下存在 xxx.map 文件,那么会自动加载 map 文件,将函数名称显示在界面当中,目前支持VS、VC、BCD、Delphi编译器生成的map文件
#
2.配置函数选项在函数选项,点击【添加函数】,鼠标左键选择需要保护的函数,鼠标右键设定保护方式。
- 针对C、C++、Delphi XE7及以上、PB、BCB等开发的PE程序及动态库,保护方式的安全性:代码虚拟化>代码混淆>代码加密。
#
3.加密选项配置我们为高级用户,提供了加密选项的功能。PE 和.Net 程序,由于技术不同,所以在加密选项上,略有差异,您可以根据自己的需求,调整加密的具体方式。
输出文件:可以修改程序保护后生成文件的路径和名称。
【特别提醒: 1 、如果只有文件名称,那么路径为源程序的路径; 2 、如果输出文件名和源文件同名,生成的程序会将源程序覆盖,非常不建议。】
导入表保护:这个选项能够对文件中的导入表进行了加密处理,隐藏了 API 列表。基于安全强度的考虑,我们建议用户使用这个选项。
内存校验:运行时对程序内存进行完整性校验,并提供 SDK 标签的方式,可对内存进行动态校验,防止程序被篡改。。
压缩:对加壳后的后的程序进行压缩处理,减小体积,同时可以防止静态反编译。
【特别提醒: 1 、由于压缩模块需要一个固定大小的空间,如果被加壳的程序非常小压缩的效果并不明显还有可能出现体积更大的情况,对于体积较大的程序效果明显。 2 、不支持 DotNet动态库的压缩。 3 、不支持 arx 类型程序的压缩。】
资源节保护:加密资源段,对被保护程序的资源区段进行加密,运行的时候需要用户使用相应许可进行解密方可使用程序。
【特别说明:资源保护目前只能支持本地程序。】
ds插件:DS Protector是数据保护工具,可以对程序的数据资源文件进行加密保护。
调试器检测:勾选此选项后,程序检测到进程被调试时退出进程。
虚拟机检测:加密后程序在运行时检测到VMware/Virtual Box 等虚拟时阻止程序运行
#
4.执行保护所有选项配置完成,点击【保护选中项目】的按钮,完成加壳。提示保护成功。
#
5.替换文件温馨提示:加壳后的程序会在同一目录下生成新文件(Mine.exe.ssp)和 protected文件夹:
Mine.exe.ssp为加壳时设置的配置选项,将此文件与待加密的程序放在一起,加壳工具会自动加载配置,可以保存到其他地方,在下次更新需要重新加密时使用。
protected:加密后的程序会自动生成,保存在此文件夹下,您可以将此文件替换到原来的程序目录里测试运行。
#
命令行工具操作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
调用命令行可以指定完整全路径,例如:
"C:\Program Files\senseshield\Virbox Protector 3\bin\virboxprotector_con.exe" <file_path> <options ..> -o <output_path>
如果在 Windows系统,也可以加入环境变量,然后直接输入 virboxprotector_con
,无需输入全路径。
非 Windows 系统,也可以设置软链接:
sudo ln -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=native
#
程序类型和选项#
PE选项 | 命令行 | 默认选项 |
---|---|---|
压缩 | --pack= | 1 |
内存校验 | --mem-check= | 1 |
导入表保护 | --imp-protect= | 1 |
资源节加密 | --res-sect-enc= | 1 |
附加数据加密 | --overlay-enc= | 1 |
调试器检测 | --detect-dbg= | 0 |
虚拟机检测 | --detect-vm= | 0 |
#
ELF选项 | 命令行 | 默认选项 |
---|---|---|
压缩 | --pack= | 1 |
内存校验 | --mem-check= | 1 |
调试器检测 | --detect-dbg= | 0 |
剥离符号表 | --strip-dbginfo= | 1 |
#
MachO选项 | 命令行 | 默认选项 |
---|---|---|
内存校验 | --mem-check= | 1 |
调试器检测 | --detect-dbg= | 0 |
#
函数选项支持指定函数名称或规则保护,使用 ;
号隔开, 支持通配符 *
。
选项 | 命令行 | 通配符 |
---|---|---|
忽略不支持的函数 | --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 格式的程序默认开启。