Взлом игр на Unity3D
Структура игровых директорий
│ *.exe
└───*_Data
│ globalgamemanagers
│ globalgamemanagers.assets
│ level0
│ level0.resS
...
| levelN
| levelN.resS
│ sharedassets0.assets
│ sharedassets0.assets.resS
...
| sharedassetsN.assets
| sharedassetsN.assets.resS
| resources.assets
├───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
* : название, данное при сборке проекта
| Файл/Директория | Описание |
|---|---|
| *.exe | Исполняемый файл |
| *_Data | Data содержит ресурсы игры |
| level0-levelN | Это файлы сцен, каждый хранит информацию о своей сцене |
| sharedassets0-sharedassetsN | В тких файлах хранятся игровые ассеты |
| resources.assets | Ассеты-библиотеки и их зависимости |
| Managed | Содержатся библиотеки Unity3D |
| Assembly-CSharp.dll | Библиотека, в которую собираются все C# файлы проекта |
| Assembly-UnityScript.dll | То же самое, только UnityScript файлы |
Извлечение и редактирование кода
Файлы C# и UnityScript компилируются в библиотеки Assembly-CSharp.dll и Assembly-UnityScript.dll соответственно.
Их можно декомпилировать с помощью ILSpy, в то же время dnSpy позволяет ещё и редактировать и рекомпилировать библиотеки.
Извлечение ресурсов
Ассеты хранятся в файлах .assets и .resS. Их можно распаковывать с помощью этих инструментов:
| Инструмент | Описание |
|---|---|
| Unity Assets Explorer | Экспортирует текстуры в .DDS, а меши .43. |
| DisUnity | Инструмент коммандной строки, написан на Java, экспортирует ресурсы в сыром формате. |
| Unity Assets Bundle Extractor | Позволяет модифицировать ассеты и экспортировать их в удобнызх для использования/модификации форматах (png/tga - текстуры, obj - меши). |
| Unity Studio | Инструмент для осмотра, экспорта и модификации ресурсов из приложений на Unity3D. |
| QuickBMS с этим скриптом или этим для OpenGL билдов |
DDS :
Файлы DDS можно редактировать с помощью плагина для GIMP или для Photoshop.
Как ещё можно извлекать модели/текстуры :
С помощью 3D Ripper DX (нет поддержки x64) или Ninja Ripper (ИМХО самый удобный вариант).
Изменение памяти
У Cheat Engine имеется инструменты Dissect Mono, который помогает в редактировании памяти работающего приложения. Довольно полезная серия гайдов об использовании данного инструмента (на английском).
