Download_Link
Участник клуба

Когда речь идёт о программном обеспечении, термин «взлом» зачастую ассоциируют с пиратством и нарушением авторских прав. Тем не менее, эта статья всё же является практическим руководством по взлому. Используя инструменты и методы о которых далее пойдёт речь, вы сможете проверить защиту собственной Unity игры и узнаете, как обезопасить её от взлома и кражи ресурсов.
Многие игры, созданные на платформе Unity не так уж и защищены, как кажется. В данной статье предлагаю взломать исходный код игры на Unity для своих дальнейших задумок.
Извлекаем текстуры и шейдеры
Большинство ресурсов Unity-проекта упаковываются в файлы проприетарного формата с расширениями .assets и .resources. Наиболее популярный на сегодняшний день инструмент для просмотра таких файлов и извлечения из них ресурсов — Unity Assets Explorer.

Графический интерфейс программы не отличается удобством, а также она страдает от нескольких критических багов. Не взирая на это, программа вполне способна извлечь большинство текстур и шейдеров из игры. Полученные в результате текстуры будут иметь формат DDS, который можно «прочитать» с помощью Windows Texture Viewer.
С шейдерами ситуация обстоит сложнее: они извлекаются в уже скомпилированным виде и, насколько мне известно, решений для их автоматической трансляции в удобочитаемый формат не существует. Тем не менее, это обстоятельство не мешает импортировать и использовать полученные шейдеры в другом Unity-проекте. Не забывайте, однако, что подобная «кража» нарушает авторские права и является актом пиратства.
Установка программы dnSpy
dnSpy — это утилита для декомпиляция приложений на языке программирования C#. Инструкцию по установке можно найти на официальной страничке автора на github. Также в конце статьи будет ссылка на скачивание программы из статьи.
Файлы из папки не удалять и не перемещать. В противном случае, программа работать не будет!
Поиск нужный файлов
Для того, чтобы получить исходный код игры скачиваем ее (можно и Steam версию игры). Далее нам нужно найти ее локальные файлы. Для этого заходим в ‘свойства‘ >> ‘локальные файлы’ >> ‘просмотреть локальные файлы‘. Далее, нужно немного порыться и найти папочку ‘Managed‘.
Убедитесь, что игра написана на Unity!


В этой папке будет много файлов с расширением .dll. Нам нужен только 1 из них. Assembly-CSharp.dll
Работа в dnSpy
Для начала кинем наш файл в dnSpy. После этого вы увидите подобную картину.

У вас может не быть некоторых файлов, они появятся со временем работы.
Нажимаем на стрелочку слева от название нашего файла. Далее тоже самое, только в открывшемся взору файле. Получаем много файлов. Все это — код.

Нам нужен только раздел под названием «-«. Нажимаем на стрелочку слева. И видим множество файлов, что и есть исходный код. Вы можете в нем покопаться и изменить, например прозрачность стен или, например, иконки персонажей и оружия.
Чтобы что-то поменять в коде нужно нажать по нему ПКМ и выбрать «Изменить класс (C#)». Ставим под себя и нажимаем на «Скомпилировать». Ссылка на скачивание — ТЫК
Взламываем исходный код через IlSpy и dotPeek
Для Windows-сборок Unity компилирует и сохраняет исходный код всех игровых скриптов в директорию Managed. Интересуют нас следующие библиотеки: Assembly-CSharp.dll, Assembly-CSharp-firstpass.dll и Assembly-UnityScript.dll.

Для декомпиляции и просмотра managed-кода .NET библиотек (коими и являются наши жертвы) существуют довольно удобные и при этом бесплатные утилиты: IlSpy и dotPeek.

Данных подход особенно эффективен для наших целей: Unity очень скупо оптимизирует исходный код игровых скриптов, практически не изменяя его структуру, а также не скрывает названия переменных. Это позволяет с легкостью читать и понимать декомпилированный материал.