PDA

Просмотр полной версии : Кто-то клиент реверсит?


n1ghtmare
10.02.2013, 00:37
Есть люди которые скажем так добились успехов в этом деле? Я имею ввиду полное отсутствие хуков и т.п. и получение списка всех персонажей, объектов из памяти клиента. Если есть такие предлагаю списаться и поделиться опытом.

Demion
10.02.2013, 00:48
Да, на некоторых хрониках находил в памяти по относительно константному смещению адрес на UNetworkHandler. Если защита палит поток, откуда вызвана апи, то нужно вызывать из контекста потока клиента. Также может палить, где находятся строки, которые передаются в параметрах апи.

n1ghtmare
10.02.2013, 01:14
Причем тут защита, я уже многое из памяти могу выдрать, теже списки игроков, айтемов. Просто есть пробелы которые хотелось бы заполнить, вот может есть люди желающие обменяться информацией.

Demion
10.02.2013, 01:57
Так напиши, какую именно информацию ты не можешь найти в памяти, какую именно информацию ты хочешь узнать? Я думал вопрос о том, как без хуков вызывать апи клиента.

Sherman
10.02.2013, 02:34
Поиск по форуму автор GoldFinch. Там все есть. Остальное - продукт мозговой деятельности каждого индивидуума.

n1ghtmare
10.02.2013, 03:15
Я видел и читал, ушел гораздо дальше описанного на форуме.

Sherman
10.02.2013, 12:01
Тогда я первого поста не понял. Клиент ладвы перерыт уже наизусть. Все что нужно находится в течении максимум получаса. Если хочешь что то написать для ладвы, садишься и пишешь.

n1ghtmare
10.02.2013, 13:53
Ну к примеру вглядываясь до посинения в код клиента я так и не нашел, где он хранит ID цели для моба. Для игроков есть такой класс APawn, в нем есть такой класс AController, там есть ID цели, но для мобов оно храниться в ином месте. И я ОЧЕНЬ сомневаюсь что: Клиент ладвы перерыт уже наизусть.
Возможно он и перерыт где-то кем-то, но в паблике инфы 0.

Sherman
10.02.2013, 15:04
Ну к примеру вглядываясь до посинения в код клиента я так и не нашел, где он хранит ID цели для моба. Для игроков есть такой класс APawn, в нем есть такой класс AController, там есть ID цели, но для мобов оно храниться в ином месте. И я ОЧЕНЬ сомневаюсь что:
Возможно он и перерыт где-то кем-то, но в паблике инфы 0.

В паблике инфы 0 потому что по тому что есть, каждый заинтересованный может сам все найти в клиенте.
Моб контролируется исключительно сервером, с рождения и до смерти мобу в клиенте не надо ничего хранить, кроме id моба, координат, и вектора в которую он повернут.
Когда в клиент приходит пакет атаки мобом цели, в этом пакете ид моба и ид цели. Это единственное место, где есть ИД цели моба.
Если мне память не изменила.

Не относись к клиенту как к однопользовательскому шутеру, и прийдет осознание что клиент это всего лишь визуализатор событий, расчитываемых на сервере, и воздействовать на эти события можешь лишь небольшим количеством пакетов )

n1ghtmare
10.02.2013, 15:16
Все что ты описал выше я знаю, и более того в функции OnAttack в неком месте сохраняеться ИД цели. Единственное что я пока нашел это некая анимация атаки, но там ИД записываеться только на время атаки, между атаками там 0.

Sherman
10.02.2013, 15:17
Есть мнение что это локальная переменная, получается она в передаваемом параметре, после выхода из ф-ции в ней может быть все что угодно. Клиенту она не нужна.

n1ghtmare
10.02.2013, 16:35
Та не, насчет вектора поворота ты загнул. По твоей логике при перемещении перса сервак должен обновлять координаты? бред. Поэтому ИД полюбому есть где-то пока моб атакует кого-то.

Sherman
10.02.2013, 17:02
Та не, насчет вектора поворота ты загнул. По твоей логике при перемещении перса сервак должен обновлять координаты? бред. Поэтому ИД полюбому есть где-то пока моб атакует кого-то.

Это не моя логика. ValidatePosition составляет почти весь трафик в игре. Или как какой там пакет за обновление координат всего в мире отвечает.
Поэтому при лагах можно видеть дрыгающихся вперед назад мобов.

Еще раз повторяю, не относись к клиенту ладвы как к однопользовательскому шутеру.

alexteam
10.02.2013, 17:31
Есть мнение что это локальная переменная, получается она в передаваемом параметре, после выхода из ф-ции в ней может быть все что угодно. Клиенту она не нужна.
ага, а в action от клиента (взятие в таргет, кпримеру) она ложиться с ментального хранилища данных.

Sherman
10.02.2013, 21:29
alexteam, ты явно не читал, но осуждаешь. Речь идет не о ID моба которого персонаж берет в таргет и который хранится в клиенте, а о ID цели, которую взял в таргет этот моб, именно взял в таргет, но не делает еще никаких событий. Мобу - именно мобу, ненадо слать из клиента серверу Action.

mira
12.02.2013, 10:34
мобы кроме перемещения же ничего не шлют. им нафиг валидация, реальное премщение не зависит от ваших клиентов, сквозь текстуры не пролезут а пролезут да и фиг бы с ним. при рассогласовании скорости будут "подергиваться" в клиенте это максимум проблем.

clyr
13.02.2013, 15:30
Ну, я продвинулся не слишком далеко.

Расковыривание "обратно":
1. Ищем ник прохожего в памяти, не выделяя в таргет. Он появляется в нескольких местах, но стабитьно -- только в одном.

2. За 4 байта до начала ника имеет место быть 4-байтовый INT

3. Этот INT указывает на место персонажа в какой-то структуре вида (4 интов, потом 0xFFFFFFFF, потом снова 5 интов). Эта структура перебирает список всех персонажей.

И вот тут я заткнулся. Потому, что адрес этой структуры -- динамический и как его получать у каждого следующего клиента -- я не знаю. Есть какие-нибудь идеи?