Гость Xrom Опубликовано 9 мая, 2019 Поделиться Опубликовано 9 мая, 2019 Во время создания модификации к игре на движке Unity появилась надобность в вызове метода игрового класса. Статичный указатель на инстансы нужного класса я нашел с этим проблем 0, но я не могу понять как получить указатель на метод данного класса. Каким образом можно получить указатель на метод класса ? Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Xrom Опубликовано 9 мая, 2019 Поделиться Опубликовано 9 мая, 2019 Возможно нужно искать метод по паттерну или всё-таки можно как-то получить указатель на метод? Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 10 мая, 2019 Поделиться Опубликовано 10 мая, 2019 Можно попробовать поискать нужный метод в vtable. Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 11 мая, 2019 Поделиться Опубликовано 11 мая, 2019 В 09.05.2019 в 18:33, Xrom сказал: Во время создания модификации к игре на движке Unity появилась надобность в вызове метода игрового класса. Это можно сделать также как и в игровом движке. 1) В Update функции, если компонент не найден еще, то искать X тип компонента (искать например каждые 5 секунд) 2) Если компонент найден, то вызывать у него метод каждые X секунд Комментарии: Спойлер 1) Если игра собрана с Mono, то проще найти адрес объекта класса наследника от MonoBehavior или Component используя метод: Object.FindObjectsOfType Вызов этого метода можно сделать внедрением C# кода в запущенную игру. Это можно сделать разными способами, описано в Интернете. Или можно сделать через Cheat Engine используя Mono функции из Lua. Или через декомпиляторы .net с сохранением изменений. Для поиска компонента надо знать название его. Это можно сделать через отладку Cheat Engine добравшись до параметра и метода в Mono. Еще этих компонентов на игровых объектах может быть множество, они также могут разрушаться и создаваться. Поэтому надо все отслеживать через C# код 2) Если игра собрана в IL2CPP, то пробуем собрать dll модуль на той же версии Unity под IL2CPP и делать его внедрение в память процесса с вызовом метода выше. Поскольку тут моно нет, то здесь либо через дизассемблер узнать нужный компонент либо через свой dll модуль вывести название всех игровых объектов с компонентами, либо скомпилировать внедрение просмотра runtime hierarchy. 3) Если другая платформа, там Android или iOS, или другие, то там свои заморочки с патчами сборок. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения