Вопрос Как искать сигнатуры функций (К примеру для auto accept)?

Начинающий
Статус
Оффлайн
Регистрация
15 Фев 2020
Сообщения
3
Реакции[?]
0
Поинты[?]
0
Имеется следующий код:
// 40 53 48 83 EC 20 48 8B DA 48 8D 15 ? ? ? ? 48 8B CB FF 15 ? ? ? ? 85 C0 75 12
get fnAccept:
static const auto fn = SIG( "client.dll", "40 53 48 83 EC 20 48 8B DA 48 8D 15 ? ? ? ? 48 8B CB FF 15 ? ? ? ? 85 C0 75 12" ).cast<set_player_ready_t>( );
Как после обновлений кс-ки мне узнавать новую сигнатуру для этой функции? Может быть есть какие-нибудь гайды для ida?
 
Searching for myself
Пользователь
Статус
Оффлайн
Регистрация
29 Сен 2021
Сообщения
212
Реакции[?]
69
Поинты[?]
11K
pattern - является (uniquely identifies) последовательностью байтов, которая мало-вероятно измениться с обновлениям. Ты можешь взять свою сигнатуру для текущего (или прошлого) билда игры (если она валидная), и поискать её в дампе через Search => Sequence of bytes (ctrl + b), и после поискать её в новом билде, и сравнить псевдо-код, чтобы узнать что pattern указывает на нужный адрес (нужную функцию). А для создания pattern`а можно использовать
Пожалуйста, авторизуйтесь для просмотра ссылки.
или плагины для
Пожалуйста, авторизуйтесь для просмотра ссылки.
.
 
Начинающий
Статус
Оффлайн
Регистрация
15 Фев 2020
Сообщения
3
Реакции[?]
0
Поинты[?]
0
и поискать её в дампе через Search => Sequence of bytes (ctrl + b)
При поиске через Sequence of bytes выдает ошибку (иногда, хз как это работает):
Search failed.
Command "JumpBinaryText" failed

Пример номер 2:
Я создаю сигнатуру функции LevelInit, с помощью SigMaker


Выделяю сигнатуру и нажимаю ctrl + b. Меня перебрасывает сюда

Что делать дальше?
 
Последнее редактирование:
sapphire dev
Пользователь
Статус
Оффлайн
Регистрация
15 Мар 2018
Сообщения
188
Реакции[?]
124
Поинты[?]
36K
Alt + b ->
Посмотреть вложение 271821
в идеале совпадений должно быть одно
Не в идеале, а обязательно!


При поиске через Sequence of bytes выдает ошибку (иногда, хз как это работает):



Пример номер 2:
Я создаю сигнатуру функции LevelInit, с помощью SigMaker


Выделяю сигнатуру и нажимаю ctrl + b. Меня перебрасывает сюда

Что делать дальше?
Дополню: не всегда сигнатуру можно создать с помощью сигменкера, иногда придется создавать её ручками, т.к. в некоторых(очень редких) случая сигмейкер может ошибаться, а так же его поле видимости ограничено 1м блоком функции. Бывают ситуации, когда блок функции не уникален по байтам либо слишком мал и приходится создавать паттерн сразу на несколько функций раздела. Это минимум, который также необходимо знать. В других ситуациях попробуй получить паттерн на какой-то колл необходимой тебе функции и получи просто абс адрес с колла.
 
Сверху Снизу