NetClient__ProcessMessage
Копаясь дальше в клиенте, наткнулся на такое:
Код:
char __userpurge NetClient::ProcessMessage<al>(void *this<ecx>, int edi0<edi>, int a2, int a3, int a4) Код:
char __userpurge sub_658438<al>(int a1<edi>, int a2<esi>, int ecx0<ecx>, int a3, int a4, unsigned __int16 a5, int a6) Интересуюсь потому что непонятно как функции обзывать. |
какой клиент?
первое это, в принципе, все что нам надо, там как раз идет классификация опкодов, идут проверки на spell, quest, guild, movement и обычные jam опкоды. все остальные хендлеры по-старому лежат в массиве, но с хитрой индексацией |
Цитата:
|
The old handlers will be removed step by step.
I guess only round about 35?! are left and they will be replaced with the jam opcode functions. The same for client messages. They are replaced step by step with the jam opcode functions which is just another handler definition. Код:
public static uint JAMClientDispatch(uint value) Код:
var caseVal = JAMClientDispatch(opcode); Код:
for (uint i = 0; i <= 0x1FFF; ++i) Код:
public static uint ServerMessageCalc(uint value) Here a little snippet for legacy opcode handlers: Код:
Memory.Initialize("WoW"); |
В аддоне 6.х.х нас ждет небольшое изменение:
похоже уже нету разбивки на тип пакетов. Код:
char __thiscall NetClient::ProcessMessage(void *this, int a2, int a3, int buffer, int a5) Код:
char __thiscall sub_623A4A(void *this, int a2, int a3, int a4, int a5) |
addresses from build 19027 wod beta
0x6724E8 'registers' the vtables for the different jam groups, client and server. Код:
int __cdecl sub_6724E8(char a1) Код:
.data:010AFEC4 off_10AFEC4 dd offset aClient ; DATA XREF: sub_E1BCDDo |
В легионе опять изменения грядут, пока что совсем маленькие, а именно размер опкода серверных пакетов (SMSG) теперь опять 2 байта.
(это в рамках перехвата пакетов) |
а батлнет протокол стал позипованным json.
близзы опять делают послабления? соскучились по эмуляторам и сандбоксам? :) |
Цитата:
|
Обновил сегодня сниффер под build 21348, серверные опкоды теперь по 2 байта, но "внезапно" обнаружил пакеты с нулевыми опкодами. :mda:
Нормально ли это, что такие приходят пакеты с такими опкодами? Использовал вот такой хук: Код:
// x32 Код:
# x86 Код:
ExePath: E:\wow\World of Warcraft\Wow-64.exe |
А не, туплю как говорится смотрю в книгу и вижу [censored].
Прошу прощения, но оказывается изменился обработчик клиентских сообщений. Сначала идут 4 байта, которые пропускаются: Код:
void __fastcall sub_140476990(__int64 a1, __int64 a2, unsigned int a3) Код:
void __fastcall sub_1404767C0(__int64 a1, __int64 a2, int a3) |
Даа, есть такое. Непонятные 4 байта, на легионе и теперь на лайве. Насколько я видел, там всегда 0
|
угу, может зарезервировали для чего-то.
|
Доброго времени суток, какие есть варианты получить vTable, а именно переименовать функции CDataStore
|
Могу предложить переименование части функций, за точность не ручаюсь.
Переименовал пока разбирал некоторые пакеты. Код:
# Wow.exe 21463 |
А как вы их получаете? чисто интуитивно?
Еще такой вопрос, пакеты делятся на группы, есть функция проверки принадлежность к группе, есть сама которая дергает нужный хэндлер. Вопрос вот в чём: как можно сдампить их(адрес обработчика, номер пакета)? Может хотя бы идея какие нибудь |
ну сделать список обработчиков CData изи для половины банально по последовательности и размеру данных, а остальные типа PutBits - уже изучать нужно.
сдампить обработчки по пакетам легко - как и через инъекцию либы в клиент, так и через скрипты в саму иду ( куда легче ) |
Цитата:
|
Цитата:
|
Это что имена обработчиков включили в клиент?
Код:
.?AV?$TSGrowableArray@UJamAvailableCharacterTemplateClass@@@@ |
Цитата:
https://gist.github.com/Konctantin/1...b8aa5759e215fc Возможно все это криво работает. но по крайней мере выборочно проверял - все совпадает. PS. Надо будет попробовать подтянуть имена обработчиков еще, но пока не пойму как. |
задампил обработчики build 21742
https://gist.github.com/Konctantin/2...89ff19bfbeded0 |
Цитата:
|
Есть утилита BinDiff, для сравнивания баз IDA.
|
Цитата:
|
Интересно, а их можно как-то связать с самими обработчиками, что-то потом легче было делать opcode reseach
|
Цитата:
|
Цитата:
|
Ну это я уже понял, и частично подтянул к обработчикам.
|
Konctantin, можете объяснить по какому принципу вы читаете? хочу подобную штуку на .net написать, руби не знаю, тяжело будет поддерживать :)
|
Чего читаю?
Я на руби не пишу, это питон-скрипт для ИДА |
Цитата:
|
это адреса функций которые регистрируют обработчики (и для серверных сообщений групп обработчиков). посмотрите в ИДА где они находятся и попробуйте посмотреть на последовательность вызовов и вам должно все стать понятно.
|
Цитата:
|
каждый делать в праве так, как ему удобней.
|
вот мои имена для CDataStore, за неточности ответственности не несу
Код:
CDataStore__FetchWrite 0x00407350 |
Спасибо за адреса, сделал поиск по шаблону и переименование
|
Может кто нибудь объяснить, возможно ли накатить дифф между старой idb и новой, интересуют имена функций, например те же CDataStore. Спасибо
|
возможно, но делать надо осторожно, диффу доверять нельзя на 100%.
|
Цитата:
|
Текущее время: 17:24. Часовой пояс GMT +3. |
ru-mangos.ru - Русское сообщество MaNGOS