Skip to main content

NET程序保护时界面操作流程

简介#

.NET程序保护可支持.NET及.NET Core3.0以上的程序,支持dll及exe程序的直接加密保护,此文件介绍在工具界面上对程序进行保护的操作流程。

更多详细功能介绍描述参考.NET程序保护最佳实践文档。

操作环境#

操作系统:Windows 10 家庭中文版

演示程序:dot_NET2_bounce.exe

操作流程#

简单概述:

  1. 将需要保护的可执行文件或库文件导入Virbox Protector中;

  2. 配置函数选项,设计个性化的保护方案;

  3. 配置加密选项;

  4. 执行保护;

  5. 备份原始文件,将受保护的文件更名后替换原文件,保存好配置文件。

导入文件#

将需要保护的可执行文件或库文件导入Virbox Protector中

配置函数选项#

点击【函数选项】-【添加函数】,选择重要函数并设置其保护方式。

函数的保护方式强度对比:代码虚拟化>代码加密>代码混淆

代码虚拟化不支持场景:1. 函数含有 out 参数的调用者以及被调用者暂时不支持代码虚拟化;2. ld***a 和st***a 类型的地址操作暂时不支持代码虚拟化;3. 某些调用指令特定的方法类型(如byref)暂时不支持代码虚拟化。

在选择函数的时候,可以使用CTRL/SHIFT对函数进行多选,然后鼠标右键,选择适合的函数保护方式,点击确定将选中的函数添加到函数选项列表处。

配置加密选项#

加密选项包括导入表保护、压缩、JIT加密、资源加密、调试器检测、字符串加密及名称混淆功能。

导入表保护:将系统模块的函数调用转换为桩函数调用,降低代码可读性

压缩:打包并加密程序中的代码和数据,防止被反编译

JIT加密:加密.NET程序的所有方法的 IL代码,防止被反编译和动态调试

资源加密:加密 .NET 资源,防止资源被提取

调试器检测:勾选此选项后,程序检测到进程被调试时退出进程。

字符串加密:加密代码中的敏感字符串,防止反编译工具直接搜索到相关的函数

名称混淆

温馨提示:

注意:建议开发使用,根据实际需求使用此功能,exe可以选择保留自定义名称设置否,dll文件不支持对在其他模块中调用的类名进行混淆,建议只混淆私有成员。如果混淆后出现程序无法打开,建议取消混淆后尝试。

混淆方式选择:

1.关闭:变量、参数、类名及函数名都不会混淆

2.仅混淆私有成员:参数与私有变量会被混淆,类名及函数名不会混淆

3.保留自定义名称:选择【是】,只混淆参数,类名与函数名称不混淆;选择【否】,类名、函数和参数的名称都会混淆,接口和继承类默认不混淆。

名称混淆配置界面:

图标说明:image-20220422173405344N-namespace;image-20220422173420655C-class;紫色image-20220422173434879-method;蓝色image-20220422173449125-field

执行保护#

点击【保护选中项目】,保护成功

如果提示【设置了其不支持的保护方式的函数】,再进入函数选项,将不支持的函数改成【代码混淆】或者不保护。

程序运行#

温馨提示:

加壳后的程序会在同一目录下生成新文件(dot_NET2_bounce.exe.ssp)和 protected文件夹,protected里包含加密后的文件

protected:加密后的程序会自动生成,保存在此文件夹下,您可以将此文件替换到原来的程序目录里测试运行。

dot_NET2_bounce.exe.ssp 为配置文件,保存了加密过程中的所有配置项目。