Как открыть assembly explorer в dnspy

Обновлено: 07.07.2024

Когда речь идёт о программном обеспечении, термин «взлом» зачастую ассоциируют с пиратством и нарушением авторских прав. Тем не менее, эта статья всё же является практическим руководством по взлому. Используя инструменты и методы о которых далее пойдёт речь, вы сможете проверить защиту собственной Unity игры и узнаете, как обезопасить её от взлома и кражи ресурсов.

Многие игры, созданные на платформе Unity не так уж и защищены, как кажется. В данной статье предлагаю взломать исходный код игры на Unity для своих дальнейших задумок.

Извлекаем текстуры и шейдеры

Большинство ресурсов Unity-проекта упаковываются в файлы проприетарного формата с расширениями .assets и .resources . Наиболее популярный на сегодняшний день инструмент для просмотра таких файлов и извлечения из них ресурсов — Unity Assets Explorer.


Графический интерфейс программы не отличается удобством, а также она страдает от нескольких критических багов. Не взирая на это, программа вполне способна извлечь большинство текстур и шейдеров из игры. Полученные в результате текстуры будут иметь формат DDS, который можно «прочитать» с помощью Windows Texture Viewer.

С шейдерами ситуация обстоит сложнее: они извлекаются в уже скомпилированным виде и, насколько мне известно, решений для их автоматической трансляции в удобочитаемый формат не существует. Тем не менее, это обстоятельство не мешает импортировать и использовать полученные шейдеры в другом Unity-проекте. Не забывайте, однако, что подобная «кража» нарушает авторские права и является актом пиратства.

Установка программы dnSpy

Файлы из папки не удалять и не перемещать. В противном случае, программа работать не будет!

Поиск нужный файлов

Убедитесь, что игра написана на Unity!



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

Работа в dnSpy

Для начала кинем наш файл в dnSpy. После этого вы увидите подобную картину.


У вас может не быть некоторых файлов, они появятся со временем работы.


Взламываем исходный код через IlSpy и dotPeek

Для Windows-сборок Unity компилирует и сохраняет исходный код всех игровых скриптов в директорию Managed . Интересуют нас следующие библиотеки: Assembly-CSharp.dll , Assembly-CSharp-firstpass.dll и Assembly-UnityScript.dll .



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

MasterGH

Сэкономит кучу времени при поиске и отладке игрового кода,

2. Скачиваем dnSpy и все архивы с mono.dll файлами

3. Смотрим свойства exe файла игры и определяем по нему версию Unity. Например, "Версия продукта 5.5.0.3120186" или версия "файла 5.50.39994" может указывать на версию Unity 5.5.

4. Определяем разрядность приложения через Process Explorer

5. Т.к. версия Unity 5.5 и приложение 32 разрядное, то открываем Unity-debugging-win32.zip ищем там версию Unity и заменяем mono.dll в директории игры

6. Запускаем игру и dnSpy x86 (игра 32 разрядная поэтому x86). Открываем файл "\. \Managed\Assembly-CSharp.dll" Запускаем отладку нажав F5 или кноgку Play

7. Настраиваем соединение и жмем ок

we9Xt6mU2XPzgAAAABJRU5ErkJgggA=

wewqVGDWgxJOAAAAABJRU5ErkJgggA=

Как работать в пошаговой отладке

Работать можно почти также как и в Cheat Engine в пошаговой отладке или в среде разработки программ.

Начать стоит с обзора названия пространств имен, названия классов, методов и полей, Названия могут подсказать логическую связь с читом, который хотим сделать.

Стоит обратить внимание на такие названия как " IsPlayer, Player, Character, CharacterController, MainCharacter, Health, Inventory, Craft" и другие. Чтобы не искать вручную можно задействовать поиск сборкам. Поиск стандартного тега "Player" в виде в строки кода (в Unity выше версии 5.0) или свойства "IsPlayer" может помочь найти игрока или отличить от чужих.

Важно представлять иерархию игровых объектов, которую мы не видим в dnSpy. Программист работая в Unity видит это окошко много лет и эту иерархию всегда представляет смотря на скрипты в dnSpy

Скрипты наследники от MonoBehavior могут находиться на игровом объекте и могут работать как с ним так и с другими объектами. Получается такая штука, что игровой объект всегда имеет Transform компонент с полями позиций, углами и scale. Классы Transform и GameObject самые основные. Методами этих классов можно разместить объект в мире, создать или удалить его. В идеале удалив объект со сцены не должно быть никаких ошибок связанных с пустыми ссылками, потерей объекта. Также и клонировав объект, тоже не должно быть ошибок. Но не всегда так просто отспавнить игровой объект. Если это сделать методами UnityEngine, то другие классы ничего не будут знать о появлении игрового объекта. Нужно ставить брейкпоинт в функции Start или Awake в классе и трейсить по Shift+11 чтобы выйти на функцию разработчиков спавна этого GameObject. Функции Start или Awake (в классе наследника от MonoBehavior) срабатывают один раз при включении скрипта и инициализации. По ним можно выйти на строку кода, которая создает объекты в мире.

Отдельно стоит сказать про количество скриптов. Практически в любой игре, которая мне попадалась в dnSpy много скриптов или очень много. Иногда и не будет понятных названий у типов (из-за обфускации). В любом случае при пошаговой отладке можно найти требующиеся участки кода для создания чита и использовать их по другой логике.

В Update можно обновлять параметры только своего игрока. Например, в Character классе сделать сравнения в Update по IsPlayer свойству (если оно там есть) и у тебя за каждый кадр рендеринга будет максимум характеристик.

В Update с классом Input можно считывать хоткеи.

В Start и Awake можно подгружать свои ассеты с внутриигровым user interface. Код скриптов перед загрузкой ассетов должен быть внедрен через dnSpy

Иерархию игровых объектов и инспектор, если очень нужно, то можно отрисовать в user interface. Обычно не требуется. (поищите по форуму в игрострое)

Пока нет времени делать трейнер или таблицу на CE для включения опций в играх Unity. Для меня пока подходит способ через перезапись модуля в dnSpy вручную.

Вместо трейнера можно сделать программу патчер, который будет проверять версию игры и перезаписывать модуль с возможностью вернуть оригинальный модуль

dnSpy

Описание и возможности

Сначала, как и во всех других случаях на нашем сайте, давайте разберем основные и дополнительные возможности рассматриваемого инструмента для разработчиков:

Внешний вид dnSpy

Естественно, у такого мощного инструмента для программирования на сложном языке присутствует большое количество других возможностей. Но для того чтобы сэкономить ваше и наше время, их разбор мы вынесли в обучающее видео, добавленное в самый конец этой статьи.

Как пользоваться

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

Загрузка и установка

Для того чтобы бесплатно скачать новейшую русскую версию DnSpy вам достаточно сделать 3 простых шага:

  1. Сначала мы жмем кнопку и дожидаемся завершения загрузки архива с нужными файлами.
  2. Открываем текстовый документ, который находится в комплекте, копируем из него код и распаковываем саму программу.
  3. Запускаем наш установочный дистрибутив и дожидаемся окончания инсталляции приложения.

Файл запуска приложения dnSpy

Инструкция по работе

Подробно объяснить все нюансы, связанные с использованием данного программного обеспечения, мы не сможем. На это потребовалось бы слишком много времени и места на веб-страничке. Давайте лишь опишем общий алгоритм, которым пользуются все люди, программирующие в таком ПО:

  1. Сначала мы создаем новый проект и копируем все необходимые материалы в его каталог.
  2. Производим программирование, то есть, пишем код.
  3. Дальше наступает режим отладки, который предусматривает поиск, устранение ошибок, проверку правильности работы написанного кода.
  4. Когда отладка будет успешно завершена, мы сможем экспортировать готовый результат, произведя компиляцию.

О программе dnSpy

Как уже было сказано в самом начале этой странички, для того чтобы делать первые шаги в программировании при помощи DnSpy вам следует просмотреть обучающий ролик, который мы добавили немного ниже.

Достоинства и недостатки

Теперь давайте переходить к еще одному очень важному моменту, который предусматривает разбор сильных и слабых сторон приложения.

  • Широкий набор функций позволяет реализовать код любой сложности.
  • Программный интерфейс реализован на русском языке.
  • Утилита находится в бесплатном доступе.
  • Радует симпатичный пользовательский интерфейс. При этом программа отличается высоким быстродействием и щадящими системными требованиями.
  • Инструмент довольно сложен и разобраться, как им пользоваться, можно только посмотрев несколько обучающих курсов.

Параметры dnSpy

Данный недостаток можно с натяжкой назвать таковыми. Как и в любом другом серьезном редакторе, например, Adobe Photoshop, мы не можем освоить все функции за полчаса.

Похожие приложения

Также давайте рассмотрим несколько аналогов, способных выполнять те же задачи, что и DnSpy:

Программный интерфейс dnSpy

Системные требования

Для того чтобы рассматриваемое приложение работало быстро и не вызывало у вас разочарования, понадобится как минимум ПК или ноутбук, соответствующий приведенным ниже требованиям:

  • Центральный процессор: x2 1.8 ГГц и выше.
  • Оперативная память: от 4 Гб.
  • Пространство на жестком диске: от 25 Мб.
  • Платформа: Microsoft Windows.

А теперь, когда с теорией покончено, можно переходить к делу и скачивать последнюю версию приложения через торрент.

Версия: 6.1.8
Год выхода: 2021
Название: DnSpy
Платформа: Windows XP, 7, 8, 10
Язык: Русский
Лицензия: Бесплатно
Размер: 22 Мб

Видеообзор

Данный ролик не откроет вам всех мелочей использования рассматриваемая программы. Но общие знания, при помощи которых вы сможете начать работать.

Вопросы и ответы

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


[Outdated] How to 'permanently' increase the amount of blocks. This guide will show you how to use dnSpy to modify some game files. This modification will allow for setting the default amount of blocks the player has when joining the world.


404 уникальных посетителей
5 добавили в избранное









This guide will show you how to modify the game to have more blocks. This guide was made for Experiment 01 and uses a program called dnSpy to modify the dll file. This modification will remain even after the game is closed and does not require you to start all over again after the game crashes.

You might have to do this again whenever the game updates.

What we want to achieve:

To modify the game code you'll need a program called dnSpy.

You don't need the Unity debugging modules because you won't need to do any debugging.

Extract the zip you downloaded somewhere on your computer and run dnSpy-x86.exe or dnSpy.exe.

After starting dnSpy, go to File > Open or press CTRL + O.

Browse to your Robocraft Experiments installation directory. By default this is "C:\Program Files (x86)\Steam\steamapps\common\RobocraftX", but may be different if you installed the game in a different location.

Now go to "\RobocraftX_Data\Managed" and import the file called "RobocraftX.Inventory.dll".

TIP: Backup the file before you make any changes. This way you can undo it if you mess something up.

In the Assembly Explorer, open the RobocraftX.Inventory tab. Then go to RobocraftX.Inventory.dll > RobocraftX.Inventory > SetupBlocksSupplyEngine > GetCubeDefaultCount.

Читайте также: