FreeObfuscator.NET protection

.NET · C# · DLL · EXE

.NET EXE 发布前怎样保护:先找对程序集

区分 EXE 启动器与托管 DLL,准备可控输入,并在不上传私钥的前提下验证最终发布包。

打开混淆工具

文件上传、账户和付款流程目前使用英文界面。

先确认代码究竟在哪里

扩展名为 EXE,不代表它包含 .NET 托管代码。现代 SDK 项目经常同时生成本机 apphost 和保存 IL 的 DLL,启动器负责加载后者。只处理启动器,不能保护 DLL 中的业务逻辑。single-file 包、Native AOT 输出和普通托管程序集是不同格式;本流程先从普通文件夹发布开始。

准备一份可回退的输入

下方命令生成不带 apphost 的框架依赖发布结果,可用 dotnet 启动托管 DLL。保留完整目录,包括 .deps.json 和 .runtimeconfig.json,不要随意上传所有依赖。免费版接受单个不超过 1 MB 的文件,Pro 的当前额度见套餐页。已经强名称签名或延迟签名的输入,需要先准备未签名构建;私钥始终保留在本地。

测试真正交付的版本

下载结果后,在发布目录的副本中用预期文件名替换目标程序集,原始版本不要覆盖。检查启动、参数、退出码、配置、资源以及主要业务流程。如果交付要求签名,应在可信本地环境重新签名,再测试签名后的完整包。成功下载不等于通过兼容性测试,混淆也不能让客户端内置的 API 密钥成为真正的秘密。

dotnet publish MyApp.csproj -c Release -p:UseAppHost=false -o publish-check
dotnet publish-check/MyApp.dll

程序集保护指南