UniHacker:从克隆到运行,修补 Unity 与 UnityHub 许可证的完整流程
【免费下载链接】UniHacker为Windows、MacOS、Linux和Docker修补所有版本的Unity3D和UnityHub项目地址: https://gitcode.com/GitHub_Trending/un/UniHacker
UniHacker 是一个跨平台的 Unity 许可证修补工具,面向 Windows、macOS、Linux 三个桌面系统,直接修改 Unity 编辑器主程序和 UnityHub 中的授权检查逻辑,并生成本地许可文件,使程序无需登录即可打开工程。它只处理 Unity 国际版,国内特供版因授权机制不同不在支持范围内;Unity 2022.2 及以上版本重构了许可证逻辑,目前无法修补。
运行环境与版本兼容:系统、.NET 与支持的 Unity 版本
UniHacker 基于 .NET 6 开发,界面使用 Avalonia 0.10 实现,源码中通过global.json锁定了 SDK 6.0.406。如果从源码构建,需要安装对应版本的 .NET 6 SDK;直接使用 release 中的预编译包则不需要。项目采用 GPLv3 协议,另有一套针对 Docker 场景的构建分支(代码中通过DOCKER_ENV宏区分)。
各系统支持的版本范围如下(依据 README.md 中的兼容表):
| 系统 | Unity 编辑器 | UnityHub |
|---|---|---|
| Windows | 4.x – 2022.1 | 2.x / 3.x |
| macOS | 4.x – 2022.1(含 ARM64,自动自签名) | 2.x / 3.x |
| Linux | 2017.x – 2022.1 | 2.x / 3.x |
2022.2 和 2023.x 在三个系统上均不支持。选择目标文件后,界面会显示识别出的版本号和当前状态(可修补 / 已修补 / 不支持),版本不在支持范围内时会直接提示,不会尝试写入。
从克隆仓库到首次修补 Unity 的完整流程
从源码构建只需要两条命令:
git clone https://gitcode.com/GitHub_Trending/un/UniHacker cd UniHacker && dotnet build构建完成后运行生成的程序(或直接使用 release 预编译包)。启动后界面只有一个主窗口,操作逻辑是"选文件 → 看状态 → 点修补"。先选 Unity 编辑器主程序:Windows 上是Unity.exe,macOS 上选择Unity.app,Linux 上选择Unity可执行文件。工具会读取文件版本号并识别 CPU 架构(x86 / x64 / ARM64),在右侧显示状态;确认状态为可修补后点击修补按钮,进度条走完后即可完成。这时直接双击 Unity 主程序就能打开工程,不需要登录。
如果还要配合 UnityHub 管理多个编辑器版本,用同样的方式再选一次UnityHub.exe(或UnityHub.app、Linux 下的unityhub)并修补即可。有一点需要注意:只修补 UnityHub 是无法打开工程的,修补 Unity 主程序才是关键步骤,Hub 的修补只是为了让它能正常登录和显示版本列表。
补丁如何定位并改写许可证检查逻辑
选文件阶段,基类 Patcher/Misc/Patcher.cs 会解析文件版本号,并调用 Patcher/Architecture/ 下的 PE、Mach-O、ELF 三个解析器判断目标文件的操作系统和 CPU 架构。
对 Unity 编辑器,Patcher/Unity/UnityPatcher.cs 用"版本号 + 架构"在内置的字节模式表(Patcher/Unity/UnityPatchInfos.cs)中匹配出对应的查找序列和替换序列,再通过 Boyer-Moore 算法在二进制里定位许可证检查函数的偏移。写入前先把原文件备份为.bak,然后按偏移改写字节,再把安装目录下的Unity.Licensing.Client可执行文件改名置后,最后由 Patcher/Unity/LicensingInfo.cs 在用户目录下生成对应版本的.ulf许可文件。macOS 的 ARM64 目标还会额外调用codesign自签名并移除 quarantine 属性,避免被系统拦截。
对 UnityHub,Patcher/Hub/UnityHubPatcher.cs 的处理对象是 Electron 的resources/app.asar:仓库内置的 asar 解析器(Patcher/asar/)把压缩包解出到resources/app,再按版本(2.x、3.x、3.4.2+ 各有独立策略文件)替换其中的 JavaScript 许可证逻辑,原始app.asar保留为.bak。界面上的还原按钮会把.bak备份恢复回去,两个方向的操作都是可逆的。
国内版、Hub 登录与还原:常见问题处理
- 下载下来的是国内版:从 unity3d.com / unity.com 下载时必须全程挂代理,否则会被重定向到国内特供版,而国内特供版不支持修补。软件分析文件时若判定为国内特供版会明确提示,此时需要重新下载国际版。
- Hub 登录后跳的是 unity.cn:先把 UnityHub 语言改为 English,删除本地缓存(Windows 为
%AppData%/UnityHub),再用代理把 UnityHub 流量指向 unity.com。点击 Sign In 后应跳转到api.unity.com,.com才是正确的国际站入口,之后注册一个邮箱账号登录即可。 - 文件无法修补:如果目标进程正在运行,工具会提示文件被占用,先关闭 Unity 或 UnityHub 再重新选择文件。
- 想恢复原状:点界面上的还原按钮,或手动用
.bak备份覆盖回去。
项目 README 的免责声明写得很直接:本软件的使用仅用于非营利性的教育和测试目的。如果你的 Unity 项目涉及商业开发或对外发布,建议购买官方许可证,既合规也能获得官方支持。
源码导览:想深入阅读从哪些目录开始
- Patcher/Unity/:版本字节模式表、许可证生成逻辑,理解"怎么判断支持、怎么改写"看这里
- Patcher/Hub/ 与 Patcher/asar/:Hub 的 JS 修补策略和内置的 asar 解压实现
- Patcher/Architecture/:三套可执行文件的架构识别,解释工具如何区分平台
- README.md:版本兼容表和 Hub 登录步骤的原始出处
把主程序和 Hub 分别修补一遍、打开一个工程验证功能,整个流程走完基本就理解了它的边界——支持范围内开箱即用,范围之外会明确拒绝。
【免费下载链接】UniHacker为Windows、MacOS、Linux和Docker修补所有版本的Unity3D和UnityHub项目地址: https://gitcode.com/GitHub_Trending/un/UniHacker
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考