vlambda博客
学习文章列表

.Net代码混淆工具DotNetReactor

.Net的混淆工具能够将代码换成随机码,但是混淆后的代码都能正常使用,当然有些觉得代码混淆基本没什么用,还是可以被反编译的,这就像锁是防君子的。

安装了.net reactor之后,可以在安装目录下找到帮助文档REACTOR_HELP.chm,目前没有中文版本,里面详细介绍了.net reactor的各功能及使用场景。下面分三大板块来介绍

菜单面板

.Net代码混淆工具DotNetReactor

文件

  • 就是普通的创建操作环境,打开操作环境,加载程序集等操作

运行

  • 保护程序集 - 对当前选中的程序集执行保护操作

  • 创建许可证文件 - 根据用户的配置创建一个许可证文件

工具

  • Hardware ID Tool Generator    -创建一个HID.exe文件,用于根据机器硬件生成对应的编码

  • License Examiner                       - 许可证检查工具

  • License Invalidation Tool           - 许可证作废工具

  • Stack Trace Deobfuscator          -不做介绍

  • ShareIt Module Generator         - 项目配置共享工具

保护配置

    配置需要保护程序的方式(相当于配置模板)

帮助

任务面板--相当于快捷操作面板

.Net代码混淆工具DotNetReactor

主面板

主面板包括加载程序集、设置、许可证管理、.net方法查看。

加载程序集:

.Net代码混淆工具DotNetReactor

整合的功能在这里配置,必须要有一个主程序集,就是把附加的程序集都整合到这个程序集中。附加的程序集可以以嵌入的方式或者整合的方式。若选择整合的方式,建议勾选仅整合(不保护)。

设置选项中英对照:

NecroBit:把程序集转为非托管代码(就是加一个壳,运行时还是必须的。)

Native Exe File:生成本机 exe 文件

Anti ILDASM:防止反编译

Obfuscation:混淆

Create Mapping File:创建地图文件

Anti Tampering:防篡改

String Encryption:加密字符

Compress & Encrypt Resources:压缩并加密资源

Control FlowObfuscation:混淆控制流级别设置

如果不知道该勾选那几个net reactor提供了一些预设的选项(分别是各类型的标准及最强的加密方案,点击选用即可。):

.Net代码混淆工具DotNetReactor

下面的快速设置就是整合保护的一些配置。

设置:

.Net代码混淆工具DotNetReactor

设置又分为常规设置,保护设置,软件限制设置,及弹出框界面设置

常规设置

主要包括压缩配置,界面风格配置,生成目标文件配置,启动是否显示加载界面配置。想要知道配置的具体功能可以用鼠标点击配置,下面的说明面板会出现对应的说明。

Automatic Exception Handling - 自动捕获错误

Compression  - 压缩文件减少占用空间,网络环境下还可以减少带宽

Show Loading Screen  - 保护过的文件启动是否显示加载进度条(因为保护过的文件启动时会先执行.net reactor注入的代码,包括查找证书等)

Digital Certificate - 数字证书保护

Enable Visual Styles - 是否启用系统界面风格

Force Admin Privileges - 是否需要系统管理员权限运行

Merge Assemblies - 是否允许整合dll

Embed Assemblies - 是否允许嵌入dll

Strong Name Key Pair File - 强签名程序集

Target File - 生成目录

保护设置

主要配置软件的保护选项

NecroBit 功能是防止程序被反编译(比如.net reflector),但不支持.net Compact Framework

Anti Tampering - 防止黑客利用工具修改你的软件,运行前会进行二进制完整性检查

Resource Encryption & Compression- 压缩和加密托管资源,运行时会自动解压和解密资源

Suppress Decompilation / Anti ILDASM- 防止反编译和反汇编

Native EXE File - 生成一个本地x86 exe文件作为根嵌入程序防止反编译

Pre-JIT Methods  - 通过Native EXE File 和NecroBit插件,将一些小方法比如getters/setters直接转化成机器代码,防止程序集被修改

NecroBit- 用加密的代码替换CIL代码,阻止反编译

Obfuscation - 替换变量名称,方法名称等来混淆代码

  • Create Mapping File - 允许创建混淆过字段对应的未混淆字段的映射文件

  • Enabled - 混淆非punlic的类和成员的名称

  • Obfuscate Public Types  - 混淆所有类型和成员的名称

  • Incremental Obfuscation - 智能地规定混淆后的名称

  • Exclusions  - 排除某个类型,不进行混淆

  • Use Unprintable Characters - 使用乱码进行混淆

Control Flow Obfuscation - 一种混淆方式

String Encryption - 加密字符串

Strong Name Reomoval Protection - 强命名保护

软件限制设置

此设置就是限制软件的使用。包括限制使用次数,限制使用时间等。当达到限制条件时,就会弹出过期信息,需要许可证

注意: 此配置对 Compact Framework, Silverlight 和Mono无效

Expire When All Expired -是否全部文件过期时,才停止软件使用

Inbuilt Lock - Evaluation Period-限制软件持续使用时间

Inbuilt lock - Expiration Date -限制软件使用天数

Inbuilt Lock -  Number of Uses-限制软件使用次数

Max Number Of Instances -限制软件并发数量(同一台机器)

Nag Screen -若没有许可证,软件启动时提示相关相关限制信息,比如“您已使用1次,最多使用10次”

Run Another Process After Expiration  -过期是否执行其他程序,通常运行付款程序

Run Without License File-是否需要许可证

Shut Down Process After Expiration -当过期时是否关闭进程

Static License FileName-设置许可证的后缀名,当为空时默认搜索*.license 的许可证,为防止冲突不允许以.LIC为后缀名。

弹出界面设置

软件使用到期时弹出提示的界面框相关配置,如下图

.Net代码混淆工具DotNetReactor

证书管理

.Net代码混淆工具DotNetReactor

当客户端软件使用过期时,此时就需要购买许可证文件。此界面就是用于生成许可证。生成许可证也可以配置,可以设置许可证的过去时间,使用次数,是否针对特定的电脑等。

其中针对特定的电脑需要使用HID工具获取特定电脑硬件对应的编码,然后再进行配置,HID工具在TOOLS->Hardware ID Tool Generator ,会生成HID.exe,然后运行HID.exe 会在同目录下生成一个硬件对应的编码文件。

.net方法查看

.Net代码混淆工具DotNetReactor

最后点右侧的Protect就完成了混淆保护。会在你保护的项目同级文件夹下生成一个XXXXXX_Secure文件夹,里面的文件就是已经混淆过的。

.Net代码混淆工具DotNetReactor

一个小技巧:

Help菜单里面有各个版本VS的Add-In,我用的VS2013先安装上,然后打开VS【工具】菜单会多出一个.Net Reactor:

.Net代码混淆工具DotNetReactor

选择你要保护的项目,勾选Enabled,当你生成或者运行项目时,net reactor就同时完成了它的工作。详细的功能是通过Command Line Parameters完成的,至于具体的命令行参数可以在chm里面找到

长按 扫一扫

关注我

工控码农Zero