Взлом Unturned
-
Доброго всем времени суток! Решил тут на днях попрактиковаться во взломе, а именно во взломе игр на юнити в реализации mono.
Всё было хорошо до одного момента...
Первым делом нашёл значение стамины, отсканировал на это значение цепочку указателей. Далее закинул Assembly-CSharp.dll в dnSpy и увидел очень красивую картину, которая позволила найти гору других полезный значений:
Перенёс всё что нужно в CE, с помощью смещений от стамины:
Далее я путём сканирования значений нашёл все 3 координаты игрока и установил, что они находятся в виде Vector3 в классе Transform, инстанс которого, создаётся в классе SteamPlayer:
А уже в классе SteamPlayer находится инстанс класса игрока, в котором есть инстанс класса жизни игрока в котором и лежат: стамина, хп, еда и т.д.
Вот я и подвёл к главному вопросу. Как можно получить указатель на класс SteamPlayer зная адрес координат. И как получить размер класса(например), чтобы использовать это как смещения инстанса Player от SteamPlayer и PlayerLife от Player'а?
Буду крайне благодарен тому, кто поможет! Не могу найти решения уже 2 бессонные ночи.Если что-то забыл, то уточняйте пожалуйста! Всё разложу по полочкам.
Ещё раз спасибо тому, кто поможет! -
Пользователь @Suplin3 написал в Взлом Unturned:
Как можно получить указатель на класс SteamPlayer зная адрес координат.
можешь попробовать построить обратный указатель, но для этого тебе нужно будет знать смещение от начала класса SteamPlayer до твоего Transform. В остальном это как обычный указатель
-
@StoneWeaver,
Спасибо за ответ! К слову я тоже так думал, но мне никак не приходила в голову мысль о том, как найти смещение трансформа в классе. И только сейчас, когда я пишу этот ответ, я вспомнил о том, что эти поля, которые инициализируют объекты класса не хранят в себе весь класс, а лишь указатель на него, так же и с функциями. Я просто не мог найти их размер, думая что они хранятся прямо вот так в памяти. Это вообще вылетело у меня из головы и только Ваш ответ натолкнул меня на мысль! Это и вправду моя глупая ошибка. Спасибо огромное за ответ ещё раз!