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

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


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

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

 

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

 

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

 

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

 

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

 

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

  Показать контент

 

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

 

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

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

 

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

  Показать контент

 

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

  Показать контент

 

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

 

9onNlMlV89lmSqvAFKFW3DimWOH1vzJT0PQz5f8B

 

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

 

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

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

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

 

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

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

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

 

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

 

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

  Показать контент

 

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

 

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

  Показать контент

 

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

  Показать контент

 

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

 

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

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

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

 

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

  Показать контент

 

 

Как делал

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

  Показать контент

 

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

  Показать контент

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

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

  Показать контент

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

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

 

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

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

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

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

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

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