Перейти к содержанию

[The Escapists 2] Взлом денег через dnSpy


Рекомендуемые сообщения

The Escapists 2 игра сделанная на игровом движке Unity. Об этом говорит наличие папки TheEscapists2_Data, в которой есть файлик Assembly-CSharp.dll

 

dnsSpy умеет сохранять новый код в том же модуле.

 

Как вариант на Cheat Engine ищем значения и названия переменных. Об этом было очень подробно на стриме

 

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

 

Открываем Assembly-CSharp.dll в dnsSpy. Если там нет обфускации, то повезло.

 

1. Шифрование и расшифровывание параметров при записи и чтении через xor на C#

Скрытый текст

PyaLe0pvI7nWAAAAAElFTkSuQmCCAA==

 

2. Взлом денег на скорую руку. Добавили код

 

Character класс явно будет на каждом игроке в игре.

CharacterStats будет явно рядом,  на том же GameObject-е. Проверяется уже потом, когда деньги добавим

 

Пишем новый код в Update или LateUpdate (вызываются по наследованию из MonoBehavior),

Скрытый текст

 

Добавляем деньги через любой хот-кей проверяя свой ли это игрок новым кодом

Скрытый текст

zy4AAAAAgP5j0OR61bgASebkAAAAAABGif8DIehe

 

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

M+PDxjuLONMAAAAASUVORK5CYIIA

 

iVHQAAAAASUVORK5CYIIA

 

Идем в игру, в характеристики. Нажимаем на наш хот-кей "O" и получаем 999 денег.

 

9onNlMlV89lmSqvAFKFW3DimWOH1vzJT0PQz5f8B

 

По аналогии можно сделать другие характеристики.

 

Что можно сделать лучше:

1. Делать постоянную проверку о не хватке параметра и добавлять сколько нужно.

2. Сделать InGame меню с чекбоксами опираясь на руководство на официально сайте.

 

p.s. Вдохновил на написание этой статьи стрим :)

  • Плюс 4
Ссылка на комментарий
Поделиться на другие сайты

Отладки не было.

 

Была небольшая работа с поиском по сборке.

 

Был поиск условия "фильтра". Обычно это слова "IsPlyaer" или что-то с "Player". Подошел класс Character

Скрытый текст

BAwAAACAyQPAAAABABIHgAQAAgAgCwQMAAAAR5P8

 

В Сharacter можно писать в существующий LateUpdate, но надо убедиться, что класс наследуется от MonoBehavior, иначе LateUpdate не будет вызываться. Да и кроме LateUpdate() можно работать с Update(), Start() и другими (ссылку приводил выше))

 

Ниже убедились, что T17NetworkBehaviour  наследник от MonoBehaviour

Скрытый текст

AQg96y147DXGAAAAAElFTkSuQmCCAA==

 

wElxANGCcmfbwAAAABJRU5ErkJgggA=

 

Раз убедились, то можно добавить код, полагая, что класс CharacterStats находится по соседству на том же GameObject. Получаем его через GetComponent и обращаемся к IncreasedMoney() или другим методам

Скрытый текст

x8C59vz3iqpywAAAABJRU5ErkJgggA=

 

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

 

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

  • Плюс 2
Ссылка на комментарий
Поделиться на другие сайты

Немного информации как добавить inGameMenu. Подробнее пока некогда писать

 

Вот что получилось

Скрытый текст

lPi3AAAAAElFTkSuQmCCAA==

 

 

 

 

Как делал

1. Сначала сделал меню и ассет в Unity последней версии с официального сайта

Скрытый текст

weSzQJ62fdUTAAAAABJRU5ErkJgggA=

 

2. Сделал ассет меню как здесь на видео (в пакадже все есть)

Скрытый текст

 

3. В dnspy добавил два класса из пакаджа. Это CheatMenu и ShowMenu. Нужно добавлять, т.к. код с ассетами не цепляется, а только названия классов

4. Там же в dnspy изменил код в LateUpdate

Скрытый текст

Путь до ассета меню читов надо свой задать.

Ассеты это набор файлов с данными делаются в Unity.

Пакадж с ассетами меню и скриптами AssetsAssetBundles.unitypackage

 

AyqJwE+YcBKwAAAAAElFTkSuQmCCAA==

 

Хот-кеи

j - загрузить ассет в игру с чит миню (в самой игре, где есть персонажи)

p - показать/скрыть меню

5. Перезаписал модуль сохранив изменения Assembly-CSharp.dll

6. Потестил, читы работают.

 

Что можно сделать лучше

1. Путь до ассета нужен другой внутри папки с игрой или же можно путь удаленный сделать

  • Плюс 3
Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...

Важная информация

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