учитывая, что в хф этого нет, а в годе есть - скорее всего это не то что я ищу.
Да ты прав, эти методы появились только в GoD, значит нужно искать в другом месте, попробуй покопай пакет MagicEffectIcons (0х85), там где-то должен быть обработчик этого пакета, если найдешь его, то скорей всего найдешь где хранятся бафы.
Цитата:
и вот что еще не понятно - в хф таблица методов user не экспортируется, как её можно достать?
Для начала нужно найти созданный объект User, дальше просматриваешь его VMT (Virtual method table), и в Ida изучаешь, что делает каждый метод :-)
Для начала нужно найти созданный объект User, дальше просматриваешь его VMT (Virtual method table), и в Ida изучаешь, что делает каждый метод :-)
VMT первый член? У объекта User первый член - 0...
Цитата:
Сообщение от ScythLab
попробуй покопай пакет MagicEffectIcons (0х85), там где-то должен быть обработчик этого пакета, если найдешь его, то скорей всего найдешь где хранятся бафы.
За наводку спасибо, как то пропустил этот пакет, но... где таблица обработчиков, какой объект обрабатывает? UNH?
Там же, если я всё правильно понимаю, порядок вызовов такой: DispatchNetworkQueue->ТотСамыйОбработчик->UGameEngine::OnXXX?
Взял для примера OnUserInfo, то ли Идой пользоваться не умею, то ли в упор не вижу, откуда она вызывается.
Всё таки, вроде нашёл обработчик. Имя правда немного другое.
По идее, где то внутри, должен быть вызов APawn::UpdateAbnormalState(APawn *this, float), потому что ничего похожего со словом Abnormal больше нету, но либо чего то неэкспортируемого или вообще хз, этот call edx меня вводит в ступор.
Хотя, внутри UpdateAbnormalState тоже ничего хорошего - там вроде как оперируются видимые эффекты, так что это либо всё таки обработчик не тот (ну есть однозначный ShortBuffStatusUpdate, но хз используется ли он или, и там тоже call edx ведущий не понятно куда), либо хз.
Последний раз редактировалось Smwr, 22.08.2016 в 17:00.
DispatchNetworkQueue просматривает список доступных пакетов, дальше по Id пакета из специального массива со ссылками на обработчики (UGameEngine::OnXXX) вызывает нужный метод. У меня такое ощущение, что обработкой 0х85 пакета занимается не экспортируемый обработчик.
DispatchNetworkQueue просматривает список доступных пакетов, дальше по Id пакета из специального массива со ссылками на обработчики (UGameEngine::OnXXX) вызывает нужный метод. У меня такое ощущение, что обработкой 0х85 пакета занимается не экспортируемый обработчик.
Перед Onxxx пакет должен быть дизасемблированн, ведь в Onxxx параметры передаются уже в виде сформированного ParamStack и т.п.
По идее, там ведь где то должен быть какой нибудь switch-case, в котором по id вызывается соответствующая функция-дизасемблер? Как бы найти, где происходит обработка id?
Других вариантов попасть в нее не вижу, тк таблицу методов обработчиков UGameEngine и методов предварительно разбирающих пакет я и подавно без понятия где брать.
Запустил таки клиент под ольгой на w7, пока немного осваиваюсь, позже попробую повешать брейкпоинтов.
UNetworkHandler::Tick в цикле вызывает DispatchNetworkQueue, полученный пакет с помощью FL2ReplayManager::AddPacketData преобразовывается в L2ParamStack, потом идет вызов OnXxx.
PS. Это справедливо для стандартного клиента, если имеется защита, то может быть дополнительный функционал по шифрованию/подмене данных, вплоть до того, что AddNetworkQueue и DispatchNetworkQueue вообще не используются.
сборка odbg110 9in1 for Themida + phantom (http://prntscr.com/c9992s).
я не аттачусь, а запускаю л2 из ольги(додумался так сделать только когда дошёл до этой сборки, поэтому она может быть и не принципиальна и сойдет обычная).