针对C#生成得exe文件加密,需要达到代码不能被反编译得效果。

Virbox Protector Standalone 加壳工具主界面如图:

v2-b648e78ec1f213a49b2efc32ff583ff3_hd.png


开始进行加密

直接拖入文件或者选择打开文件的形式,选择需要加密exe可执行程序或者dll动态链接库。

【特别提醒:如果被加壳程序的相同目录下存在 xxx.map 文件,那么会自动加载 map 文件,将函数名称显示在界面当中,目前支持VS、VC、BCD、Delphi编译器生成的map文件】

拖入后主界面如图:


v2-0fb8e6b0cf5af7c7eef9474b14be0cb2_hd.png


具体函数的保护——函数选项

Virbox Protector Standalone支持代码混淆、代码虚拟化、代码加密等多种防护方式;

  • 混淆:将代码指令翻译为机器和人都无法识别的一串伪代码字节流,在具体执行时在对这些伪代码进行翻译解释,逐步还原为原始代码并执行。

  • 虚拟化:将指令编译为虚拟代码,放在指定虚拟机中运行,目前对指令有一定的格式要求,有的函数可能不能被保护。

  • 加密:将代码块作为数据,用许可加密函数存储,程序执行到该函数时验证许可并解密,内存中不会暴露完整的代码块,目前有的函数不可添加到保护中。

使用Virbox Protector Standalone时,点击添加函数,添加需要保护的函数


v2-21e7dd1e9f94f5e47e5bbcf2c92e3a7a_hd.png


可以使用性能分析功能,对程序进行分析,并选择重要的函数来保护。

  • 性能分析:点击性能分析按钮,运行需要保护的程序,执行正常的业务操作,程序中各个函数模块调用的次数实时显示在列表中。如果当前分析的程序位为 DLL 程序,则需要选择启动主程序,主程序启动的工作目录为主程序所在目录。目前仅支持 Windows 的 exe 程序或 DLL 库。

  • 可保护的函数列表:展示了需要保护程序的所有的函数模块,托管代码程序和非托管代码程序有细微的差别。
    【特别提醒:并不是所有的函数模块都能展示出来。1、指令大小小于 15 个字节的函数模块不会展示;2、有的非常规函数模块不会展示(名称中存”.<>@:?“等)】


v2-82680d88f2ab62d3c261e3c8f872beec_hd.png


保护方式选择完毕,点击确认完成修改。

加密选项配置

我们为高级用户,提供了加密选项的功能。PE 和.Net 程序,由于技术不同,所以在加密选项上,略有差异,您可以根据自己的需求,调整加密的具体方式。

  • 输出文件:可以修改程序保护后生成文件的路径和名称。
    【特别提醒: 1 、如果只有文件名称,那么路径为源程序的路径; 2 、如果输出文件名和源文件同名,生成的程序会将源程序覆盖,非常不建议。】

  • 导入表保护:这个选项能够对 PE 文件中的导入表进行了加密处理,隐藏了 API 列表。基于安全强度的考虑,我们建议用户使用这个选项。
    【特别提醒:导入表保护目前只适用于PE文件。】

  • 压缩:对加壳后的后的程序进行压缩处理,减小体积,同时可以防止静态反编译。
    【特别提醒: 1 、由于压缩模块需要一个固定大小的空间,如果被加壳的程序非常小压缩的效果并不明显还有可能出现体积更大的情况,对于体积较大的程序效果明显。 2 、不支持 DotNet动态库的压缩。 3 、不支持 arx 类型程序的压缩。】

  • 名称混淆:名称混淆,对源程序中的函数名称进行混淆,静态反编译工具显示的函数名为乱码。
    【特别提醒:名称混淆目前只能支持 DotNet 程序,并且不支持 IIS 类型程序的混淆。】

  • 资源保护:加密资源段,对被保护程序的资源区段进行加密,运行的时候需要用户使用相应许可进行解密方可使用程序。
    【特别说明:资源保护目前只能支持本地程序。】

  • ds插件:DS Protector是数据保护工具,可以对程序的数据资源文件进行加密保护。

完成加壳

所有选项配置完成,点击加壳保护的按钮,完成加壳。提示加壳成功,打开文件所在的目录,即可看到加密之后的xxx.ssp.exe文件或者xxx.ssp.dll文件,修改文件名称,替换未加密的文件进行发布即可。