Взлом игр на 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, который помогает в редактировании памяти работающего приложения. Довольно полезная серия гайдов об использовании данного инструмента (на английском).