sunnamed434/BitMono
GitHub: sunnamed434/BitMono
BitMono 是一款免费开源的 .NET/Mono 代码混淆器,提供可定制引擎用于保护程序集免受逆向分析。
Stars: 536 | Forks: 62
## BitMono
[][license]
[](https://bitmono.readthedocs.io/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](我们过去使用的)来处理 assemblies。如果您有任何问题或疑问,请在[这里][bitmono_issues]告诉我们。您可以[这里][bitmono_releases]下载最新版本的 BitMono。
您还可以将 BitMono 作为引擎来构建自定义混淆器。它使用依赖注入 (DI) 构建,采用了基于 [MinIoC][minioc_repo] 的轻量级自定义容器(我们过去使用的是 [Autofac][autofac_repo]),并遵循最新的 C# 最佳实践。
## 实用性
BitMono 仅通过一个 packer 就能破解最流行的工具,例如:
- dnSpy;
- dnlib;
- AsmResolver;
- MonoCecil;
- ILSpy;
- PEBear;
- DetectItEasy;
- CFF Explorer
- 也许,还有一些 dumpers?
- 以及更多更多...
因此,如果您为文件添加更多的保护机制,我想那看起来就像完全变魔术一样。:D
## 文档
**[文档][bitmono_docs]** 涵盖了每一种保护机制、配置选项及更多内容。
## 经过 BitMono 混淆后您的应用会变成什么样 - 简而言之
* 看起来像 C++ 应用程序,但实际上是 C# 应用程序;
* 反编译器在分析类型时崩溃;
* 损坏的反编译器;
* 损坏的 IL 代码;
* 不可见的类型;
* 没有代码
## 功能
* 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** - 将您自己的保护机制拖放到 `plugins` 文件夹中,无需重新构建([指南](https://bitmono.readthedocs.io/en/latest/developers/plugins.html))
## 快速入门
完整的使用和安装指南位于 **[文档][bitmono_docs]** 中。
**快速开始:**
1. 从 [releases][bitmono_releases] 下载
2. 运行 `BitMono.CLI` 并按照提示操作
3. (可选)查看[使用指南][bitmono_docs]获取详细说明
**安装选项:**
**CLI 与 Global Tool:**
- **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 package
- 在 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` 中添加一个 package 引用,即可在每次 `Release` 构建时自动进行混淆 — 无需单独运行工具:
- `dotnet add package BitMono.Integration`(然后在该引用上设置 `
all`)并在 `Release` 模式下构建。
- 使用位于 `.csproj` 旁边的常规 `protections.json` / `criticals.json` / `obfuscation.json` 进行配置。
- 查看 [MSBuild 集成指南](https://bitmono.readthedocs.io/en/latest/usage/msbuild-integration.html)。
**NuGet Package 用户:**
如果您在将 BitMono 作为 NuGet package 使用时遇到依赖解析问题,请查阅文档中的 [NuGet 配置指南](https://bitmono.readthedocs.io/en/latest/usage/nuget-configuration.html)。
有关详细的安装和使用说明,请参阅 **[文档][bitmono_docs]**。
### 故障排除
遇到问题了吗?请查阅文档中的[故障排除指南](https://bitmono.readthedocs.io/en/latest/usage/troubleshooting.html)。
### 构建
如果您想自己构建 BitMono - 请查阅文档中的[构建指南](https://bitmono.readthedocs.io/en/latest/developers/building.html)。
### 支持的框架
您可以在以下描述的框架上使用 BitMono。在使用某些保护机制时请小心,因为有些可能仅在 .NET Framework 上有效,有些仅在 .NET (Core) 上有效,有些在所有框架上都有效,有些仅在 Mono 上有效 - 如果该保护机制是其特定平台/框架独有的,您将会收到相关通知。
| Framework | Version |
|----------------|---------|
| .NET | 10.0 |
| .NET | 9.0 |
| .NET | 8.0 |
| .NET | 7.0 |
| .NET | 6.0 |
| .NET Framework | 462 |
| netstandard | 2.0 |
| netstandard | 2.1 |
标签:macOS, Mono, Unity, 代码混淆, 保护引擎, 多人体追踪, 调试插件