README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈
Unity 游戏破解指南
这是一份关于从使用 Unity 引擎制作的游戏中提取和修改资源或代码的小型指南。欢迎贡献。
Unity 游戏文件夹结构
│ *.exe
└──*_Data
│ globalgamemanagers
│ globalgamemanagers.assets
│ level0
│ level0.resS
...
| levelN
| levelN.resS
| resources.assets
| resources.assets.resS
| resources.resource
│ sharedassets0.assets
│ sharedassets0.assets.resS
...
| sharedassetsN.assets
| sharedassetsN.assets.resS
├──Managed
│ Assembly-CSharp.dll
│ Assembly-UnityScript.dll
│ Mono.Security.dll
│ mscorlib.dll
│ System.Core.dll
│ System.dll
│ UnityEngine.dll
│ UnityEngine.dll.mdb
│ UnityEngine.Networking.dll
│ UnityEngine.UI.dll
├──Mono
│ │ mono.dll
│ └──etc
│ └──mono
│ │ browscap.ini
│ │ config
│ ├──1.0
│ │ DefaultWsdlHelpGenerator.aspx
│ │ machine.config
│ ├──2.0
│ │ │ DefaultWsdlHelpGenerator.aspx
│ │ │ machine.config
│ │ │ settings.map
│ │ │ web.config
│ │ └──Browsers
│ │ Compat.browser
│ └──mconfig
│ config.xml
└──Resources
unity default resources
unity_builtin_extra
| File/Directory | Description |
|---|---|
| *.exe | 游戏的可执行文件 |
*_Data | 包含游戏资源的数据文件夹 |
| level0-levelN | 包含游戏场景数据的文件,每个场景都有自己独立的文件 |
| sharedassets0-sharedassetsN | 游戏资源被拆分为 sharedassets 和 .resS 文件(在 Android/iOS 等平台上为 sharedassets.assets.split0 - ..splitN) |
| resources.assets | 项目资源文件夹中的原始 Assets 及其依赖项存储在此文件中(即使位于 Unity 中 Resources 文件夹之外,原始音频文件、引用 .resource 的 AudioClip 以及音频大小/偏移量等信息仍存储在 .assets 内部) |
Managed | 包含 unity DLL 的文件夹 |
| Assembly-CSharp.dll | 包含已编译 C# 文件的 DLL 文件 |
| Assembly-UnityScript.dll | 包含已编译 UnityScript 文件的 DLL 文件 |
使用 * :主可执行文件(.exe)的名称。
提取和编辑代码
C# 和 UnityScript 文件分别被编译为 Assembly-CSharp.dll 和 Assembly-UnityScript.dll DLL,它们可以在 Managed 文件夹中找到。
可以使用 ILSpy、dnSpy、DotPeek 或 JustAssembly 对 DLL 进行反编译,这些工具允许修改和重新编译程序集文件。
如果 managed 目录中缺少 DLL,请尝试使用 MegaDumper 工具进行转储。
| Tool | Description |
|---|---|
| ILSpy | 跨平台 .NET 反编译器,支持 PDB 生成、ReadyToRun、元数据(&more)。 |
| DotPeek | JetBrains DotPeek 是一款免费的 .NET 反编译器和程序集浏览器。 |
| dnSpyEx | 知名 .NET 调试器和程序集编辑器 dnSpy 的非官方复活版。dnSpy 的分支。 |
| Telerik JustAssembly | 反编译和比较 .NET 程序集。二进制代码差异。方法差异。 |
| Cpp2IL | 用于逆向 Unity 的 IL2CPP 工具链的在建工具。 |
| Il2CppDumper | Unity il2cpp 逆向工程工具。 |
| dnSpy | dnSpy 是一款调试器和 .NET 程序集编辑器。即使没有源代码,您也可以使用它来编辑和调试程序集。 可用,但您可以改用 dnSpyEx。 |
| MegaDumper | 转储原生和 .NET 程序集。 |
提取资源
资源存储在 .assets 和 .resS 文件中。 这些文件的内容可以使用以下工具之一进行解包:
| 工具 | 描述 |
|---|---|
| AssetRipper | AssetRipper 是一款用于从序列化文件(CAB-、.assets、.sharedAssets 等)和资源包(.unity3d、*.bundle 等)中提取资源并将其转换为 Unity 引擎原生格式的工具。uTinyRipper 的分支。 |
| Unity Assets Bundle Extractor | UABE 是用于编辑 3.4+/4/5/2017-2021.3 版本的 .assets 和 AssetBundle 文件的编辑器。它可以根据对 .assets 和/或 bundle 的更改创建独立的模组安装程序。 |
| QuickBMS 配合 此脚本 或 此 WebPlayer 脚本 | 基于通用脚本的文件提取器和重新导入器。QuickBMS 支持大量游戏和文件格式、归档、加密、压缩、混淆及其他算法。 |
| DevXUnityUnpacker | 一款(付费)工具,拥有友好的 GUI,旨在通过输入构建好的游戏/应用来恢复 Unity 项目,并包含用于以图像、十六进制、文本等形式预览单个文件的预览器。 |
| uTinyRipper | uTinyRipper 是一款用于从序列化文件(CAB-*、*.assets、*.sharedAssets 等)和资源包(*.unity3d、*.assetbundle 等)中提取资源并将其转换为原生引擎格式的工具。 请改用 AssetRipper |
| Unity Studio / AssetStudio | AssetStudio 是一款用于探索、提取和导出资源的独立工具。 |
Unity Assets Explorer
| Unity Assets Explorer 用于查看 Assets 文件(Unity 3D 引擎)的内容。允许您:提取所有文件,提取单个文件(从上下文菜单),在提取时将 tex 文件转换为 DDS 图片格式,将修改后的 DDS 图像导入到归档中。
请勿使用 UnityEX,它极有可能是一种病毒。
DDS 文件:
DDS 文件可以使用以下工具进行打开/转换/编辑:
| 工具 | 教程 |
|---|---|
| Ninja Ripper | 从游戏中提取(rip)3D 场景,并在 3D 编辑器(Blender、3D Max、Noesis)中查看。 一份关于如何使用 Ninja Ripper 的旧指南。 官方 YouTube 频道 对于最新的视频教程可能很有用。 |
| RenderDoc | 关于如何使用 RenderDoc 的教程。 |
| NVIDIA Texture Tools Exporter | NVIDIA Texture Tools Exporter 允许用户利用 NVIDIA 的 CUDA 加速 Texture Tools 3.0 压缩技术,直接从图像源创建高度压缩的纹理文件——这些文件在磁盘和内存中均保持较小体积。 可作为独立软件使用,也可作为 Adobe Photoshop 插件使用。 |
| Intel® Graphics Performance Analyzers | 通过快速识别问题区域来提升游戏性能。 关于如何使用 Intel Graphics Analyzers 提取图形的教程。 |
| Gimp Plugin | 这是适用于 GIMP 2.8.x 版本的插件。它允许您以 Direct Draw Surface (DDS) 格式加载和保存图像。 |
| 3D Ripper DX | 该软件不支持 64 位二进制文件。 |
内存破解
Cheat engine 拥有一项名为 Dissect mono 的功能,可以帮助破解游戏内存。这个关于使用 cheat engine 的视频系列 非常有用。