bitmono-project/BitMono
GitHub: bitmono-project/BitMono
BitMono 是一款免费开源的 .NET/Mono 程序集混淆器,旨在通过多种保护手段阻止逆向工程和反编译,同时支持作为引擎构建自定义混淆方案。
Stars: 549 | Forks: 64
## BitMono
[][license]
[](https://docs.bitmono.dev/en/latest/?badge=latest)
[][bitmono_nuget_packages]
[][bitmono_discord]
BitMono 是一款免费、开源的 C# 混淆器,最初主要为 [Mono][mono_mainpage] 设计和预期使用,然而,现在您可以随意将其用于任何 .NET 应用程序,但是,请注意某些保护仅在 .NET Framework 上有效,有些在 .NET 上有效,有些仅在 [Mono][mono_mainpage] 上有效,有些仅在 [Unity Engine][unityengine_mainpage] 上有效。
BitMono 使用 [AsmResolver][asmresolver] 而不是 [dnlib][dnlib](我们过去曾使用过它)来处理程序集。如果您有问题或疑问,请在[这里][bitmono_issues]告诉我们。在[这里][bitmono_releases]下载最新版本的 BitMono。
您还可以将 BitMono 用作引擎来构建自定义混淆器。它使用依赖注入 (DI) 构建,采用了基于 [MinIoC][minioc_repo] 的轻量级自定义容器(我们过去曾使用过 [Autofac][autofac_repo]),并遵循最新的 C# 最佳实践。
## 实用性
BitMono 仅凭一个打包器就能破坏最流行的工具,例如:
- dnSpy;
- dnlib;
- AsmResolver;
- MonoCecil;
- ILSpy;
- PEBear;
- DetectItEasy;
- CFF Explorer
- 也许,还有一些 dumpers?
- 以及更多更多...
因此,如果您在文件中添加更多的保护,我想这看起来就像是完全的魔法。:D
## 文档
**[文档][bitmono_docs]** 涵盖了每种保护、配置选项以及更多内容。
## 经过 BitMono 混淆后您的应用程序会是什么样子 - 简而言之
* 看起来像 C++ 应用程序,但实际上是 C# 应用程序;
* 反编译器在分析类型时崩溃;
* 损坏的反编译器;
* 损坏的 IL Code;
* 不可见的类型;
* 没有代码
## 功能
* StringsEncryption
* **[UnmanagedString][unmanagedstring_source]**(基于现有的保护)
* **[BitDotNet][bitdotnet_source]**(基于现有保护并进行了改进)
* **[BitMethodDotnet][bitmethoddotnet_source]**(基于现有保护并进行了改进)
* **[DotNetHook][dotnethook_source]**(基于现有的保护)
* CallToCalli
* ObjectReturnType
* NoNamespaces
* FullRenamer
* AntiDebugBreakpoints
* AntiDecompiler
* BitDecompiler(针对较新 Unity 版本修复的 BitDotNet 版本)
* BitTimeDateStamp
* BitMono
* BillionNops
* AntiDe4dot
* AntiILdasm
* 您可以集成现有/制作自己的功能 ;)
* **插件** - 将您自己的保护放入 `plugins` 文件夹中,无需重新构建([指南](https://docs.bitmono.dev/en/latest/developers/plugins.html))
## 快速入门
完整的使用和安装指南位于 **[文档][bitmono_docs]** 中。
**快速开始:**
1. 从 [releases][bitmono_releases] 下载
2. 运行 `BitMono.CLI` 并按照提示操作
3. (可选)查看[使用指南][bitmono_docs]获取详细说明
**安装选项:**
**CLI & 全局工具:**
- **GitHub Releases**:下载预构建的可执行文件
- **.NET Global Tool**:`dotnet tool install --global BitMono.GlobalTool`
**Unity 集成:**
- **Unity 2018-2019 (Legacy)**:从 [Releases](https://github.com/sunnamed434/BitMono/releases) 下载 `.unitypackage`
- 在 Unity 中:`Assets → Import Package → Custom Package`
- **Unity 2020+ (推荐)**:从 [Releases](https://github.com/sunnamed434/BitMono/releases) 下载 `.tgz` UPM 包
- 在 Unity 中:`Window → Package Manager → + → Add package from tarball`
- **Git URL (最适合开发)**:`https://github.com/sunnamed434/BitMono.git#vX.Y.Z`
- 在 Unity 中:`Window → Package Manager → + → Add package from git URL`
**MSBuild 集成 (NuGet):**
通过在您的 `.csproj` 中添加一个包引用,即可在每次 `Release` 构建时自动进行混淆 — 无需单独运行工具:
- `dotnet add package BitMono.Integration`(然后在该引用上设置 `
all`)并在 `Release` 模式下构建。
- 使用位于您的 `.csproj` 旁边的常规 `protections.json` / `criticals.json` / `obfuscation.json` 进行配置。
- 查看 [MSBuild 集成指南](https://docs.bitmono.dev/en/latest/usage/msbuild-integration.html)。
**GitHub Actions (CI/CD):**
在您的流水线中进行混淆,而无需触碰您的源码或 `.csproj` — 先构建,然后将 action 指向生成的 artifact:
```
- uses: actions/setup-dotnet@v5
with: { dotnet-version: 9.x }
- run: dotnet build -c Release
- uses: sunnamed434/BitMono@0.43.0 # pin the latest release tag (see Releases)
with:
file: bin/Release/net9.0/MyApp.dll
preset: Maximum
# version: 0.43.0 # optional: pin the obfuscator too (default: latest) for byte-stable builds
```
该 action 通过仓库的 git 标签进行版本控制 — 它从第一个标记的 release 开始提供,因此请使用 [releases 页面][bitmono_releases] 上的最新标签。固定该标签以锁定包装器;同时将 `version:` 设置为相同的数字以锁定混淆器。
如果您愿意,也可以不使用 action:它只是包装了全局工具,因此执行 `dotnet tool install --global BitMono.GlobalTool` 然后运行 `bitmono.console -f bin/Release/net9.0/MyApp.dll --preset Maximum` 即可用两行代码完成相同的事情。输入参数(`file`、`output`、`libraries`、`protections`、`preset`、`no-watermark`、`no-logo`、`strong-name-key`、配置文件、`version`、`extra-args`)与 CLI 一一对应 — 请参阅 [`action.yml`](action.yml)。
**NuGet 包用户:**
如果您在将 BitMono 用作 NuGet 包时遇到依赖解析问题,请参阅文档中的 [NuGet 配置指南](https://docs.bitmono.dev/en/latest/usage/nuget-configuration.html)。
有关详细的安装和使用说明,请参阅 **[文档][bitmono_docs]**。
### 故障排除
遇到问题?请参阅文档中的[故障排除指南](https://docs.bitmono.dev/en/latest/usage/troubleshooting.html)。
### 构建
如果您想自己构建 BitMono - 请参阅文档中的[构建指南](https://docs.bitmono.dev/en/latest/developers/building.html)。
### 支持的框架
请随意在下面描述的框架上使用 BitMono。使用某些保护时要小心,因为某些可能仅在 .NET Framework 上有效,某些仅在 .NET (Core) 上有效,某些适用于所有框架,某些仅在 Mono 上有效 - 如果该保护是其平台/框架独有的,您将收到有关此的通知。
| 框架 | 版本 |
|----------------|---------|
| .NET | 10.0 |
| .NET | 9.0 |
| .NET | 8.0 |
| .NET | 7.0 |
| .NET | 6.0 |
| .NET Framework | 462 |
| netstandard | 2.0 |
| netstandard | 2.1 |
标签:DNS 解析, LNA, macOS, Mono, Unity, 二进制发布, 代码混淆, 多人体追踪, 开源工具, 私有化部署, 调试插件, 防御规避