Skip to content

.NET程序集加壳混淆

NETReactor6.9下载

使用教程

  1. 解压后打开程序 解压后打开程序

  2. 选择主程序集和依赖的dll,设置混淆规则 选择主程序集和依赖的dll,设置混淆规则

  3. 设置完后点击Project,开始加密 开始加密

  4. 设置完后点击Project,开始加密 点击Project,开始加密

加密结束

各参数详解

1.在选择附加程序集时,下方有两个选项

选项


Merge Assemblies(合并程序集)—— “整合为单个文件”

作用:

将选中的 dll(依赖项)与主 exe 合并,生成一个独立的 exe 文件(不再需要单独分发 dll)。合并后,dll 的代码会被整合到主 exe 中,运行时无需额外加载外部 dll。

具体效果:

合并后,输出目录中只有一个加密后的 exe 文件(原 dll 被 “吸收” 进 exe),用户部署时只需拷贝这一个文件即可运行。 合并过程中,dll 会被加密并嵌入 exe,运行时程序会自动从 exe 中提取 dll 的代码并加载(对用户透明,无需手动操作)。

适用场景:

希望简化程序分发(避免用户遗漏 dll 文件),比如制作绿色软件(单文件即可运行)。 防止 dll 被单独提取(合并后 dll 不再以独立文件存在,增加攻击者获取 dll 的难度)。

注意事项:

并非所有 dll 都适合合并:
系统 dll(如System.dll)、第三方公共库(如Newtonsoft.Json.dll)不建议合并(可能导致兼容性问题,且无保护必要)。 大型 dll(如几百 MB 的资源 dll)合并后会显著增大 exe 体积,可能影响启动速度。
6.9 版本的限制:
合并后若程序依赖 dll 的 “强名称签名”,可能导致签名失效(需在合并前移除强签名,或合并后重新签名)。 对.NET Core 程序的合并支持有限,可能出现 “无法找到入口点” 的错误(建议仅用于.NET Framework 程序)。



Additional Files(附加文件):

作用:

将选中的 dll 作为 “资源” 嵌入到主 exe 中(dll 不会被合并到 exe 的代码区,而是作为二进制资源存储),运行时程序会从 exe 的资源中动态加载 dll。

具体效果:

输出目录中仍以 exe 为主,但 dll 不会以独立文件存在(被嵌入 exe 的资源区),通过工具查看 exe 的资源可以发现这些 dll 的二进制数据。 运行时,.NET Reactor 会自动从资源中提取 dll 并加载到内存(无需写入本地磁盘),避免 dll 被用户或攻击者手动提取。

适用场景:

希望隐藏 dll 的存在(不生成独立 dll 文件,减少被逆向的入口),同时保持程序结构的灵活性(dll 以资源形式存在,加载逻辑更可控)。 程序需要动态加载 dll(如插件式架构),但又不想让插件 dll 暴露在目录中。

注意事项:

与合并的核心区别:
嵌入(Embed)不会将 dll 代码整合到 exe,而是以 “资源” 形式存储,运行时需动态加载(内存中提取); 合并(Merge)会将 dll 代码与 exe 整合为一个代码体,运行时无需额外加载步骤。
反射加载的兼容性:
若程序中通过反射(如Assembly.LoadFrom)加载 dll,嵌入后需确保反射逻辑能从内存中加载(.NET Reactor 会自动处理基础反射,但复杂逻辑可能需要适配)。
6.9 版本的细节:
嵌入的 dll 默认会被加密(需在「Encryption」中勾选 “Encrypt Embedded Assemblies”),否则可能被工具从资源中直接提取。

2.混淆规则设置

NecroBit:

一种保护技术,将.NET IL 代码转换为原生代码,大幅提升反编译难度。

Native EXE File:

将主程序集转换为原生 EXE 文件,防护强度高。

Anti ILDASM:

阻止 IL DASM 工具对程序集进行反编译。

Obfuscation(混淆):

对程序集的类、方法、变量等进行重命名和逻辑混淆,使反编译后的代码难以理解。

Create Mapping File(创建映射文件):

生成混淆前后的名称映射文件,用于调试(一般保护时不建议创建,防止逆向者利用)。

Anti Tampering(防篡改):

检测程序集是否被修改,若被修改则程序无法运行。

String Encryption(字符串加密):

对程序集中的字符串进行加密,防止直接读取敏感信息(如密码、URL)。

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

对程序集中的资源文件(如图片、配置文件)进行压缩和加密。

Anti Debug(防调试):

检测并阻止调试器附加到程序,防止动态分析。

Hide Method Calls(隐藏方法调用):

隐藏方法调用的细节,增加逆向分析难度。

Code Virtualization(代码虚拟化):

将部分代码转换为自定义的虚拟指令集,极大提升反编译难度(属于高级保护功能)。

Control Flow Obfuscation(控制流混淆):

打乱代码的执行逻辑,使反编译后的代码结构混乱。