как можно узнать структуру пакета идущего от клиента к серверу?
Например: клиент посылает при сборе лута опкод "CMSG_ITEM_QUERY_SINGLE" хотя при снифах на оффе данный опкод я не обнаружил. через IDA нашел данный участок кода int __thiscall sub_422380(void *this, int a2) { void *v3; // esi@1 v3 = this; sub_7D1480(a2, 384); sub_7D14E0(a2, *((_DWORD *)v3 + 6), *((_DWORD *)v3 + 7)); sub_7D1480(a2, *((_DWORD *)v3 + 5)); return sub_7D1480(a2, *((_DWORD *)v3 + 4)); } как я понял sub_7D1480(a2, 384); отправка CMSG_ITEM_QUERY_SINGLE = 0x00180 Но что отвечает за структуру пакета ? |
Сейчас, данные о предметах содержатся в клиенте.
Так же эти данные приходят в пакете 0x08C8 и 0x0828. Вот ваша же структура, но с переименованными функциями, спасибо TOM_RUS, за базу ИДА Код:
int __thiscall sub_422380(void *this, int a2) |
хм
CDataStore__PutInt64(*((_DWORD *)v3 + 6), *((_DWORD *)v3 + 7)); // guid тут вроде раньше id вещи был как я понял 0x0828 это ответ сервера на CMSG_ITEM_QUERY_SINGLE PHP код:
2011-01-02 13:34:14 ERROR: SESSION: opcode CMSG_ITEM_QUERY_SINGLE (0x0180) have unprocessed tail data (read stop at 8 from 16) в чем подвох ? |
там все не так, посылается запрос, с номером предмета 6A 32 00 00
Код:
Packet C->S, CMSG_DB2_DATA2 (384, 0x0180, cond 16), 16 bytes, Flags: None Код:
Packet S->C, SMSG_DB2_DATA2 (2088, 0x0828, spec 5), 48 bytes, Flags: None Код:
Packet S->C, SMSG_DB2_DATA2 (2088, 0x0828, spec 5), 593 bytes, Flags: Trailing |
Структура пакета как я понял такая:
от клиента приходят такие значения 2011-01-02 23:53:46 STORAGE:64 Item Query = 0 как из них можно вычислить id предмета |
нет
Код:
WowGuid guid Цитата:
Цитата:
|
ещё назрел такой вопрос
в каком месте происходит обработка опкода 0x0545D в клиенте я подозреваю что это Код:
signed int __thiscall CGPlayer_C__OnLootResponse(void *this, int a2, unsigned int a3) Код:
|-------------------------------------------------|---------------------------------| подскажите в каком направлении копать ? |
немного разобрался
Но вот структура пакета со стороны сервака Код:
data << uint64(guid); Код:
signed int __thiscall CGPlayer_C__OnLootResponse(void *this, int a2, unsigned int a3) data << uint8(loot_type); понятно где обрабатываются это Код:
CDataStore__GetInt64(&guid); Код:
data << LootView(*loot, this, permission); |
в самом низу функции, смотрите:
Код:
CDataStore__GetInt8((char *)&a3 + 3); |
Спрошу тут, что бы не создавать новую тему.
Код:
signed int __cdecl PH_SMSG_GAMEOBJECT_SPAWN_ANIM_OBSOLETE(int a1, int a2, int a3, int a4) |
да, именно так
|
А где закопаны HighGuidType? Не могу найти щас, но когда открывал экзешник идой, помню, что было такое, правда список быстро рос и я потерял ее
add: Опкод фазы маски никто не находил. Я сделал квесты у воргенов с фазой. Спарсил снифф. Все опкоды длиной в 4 байта спарсил кроме 1. Думал это и есть маска фазы, но нет. Очень она большая Код:
Server->Client: SMSG_PHASE_MASK (0xBE7E) (Offset: 1518 / 0x05EE) Length: 4 Time: 04/14/1970 00:45:00 |
Цитата:
http://getmangos.com/community/topic...ket-questions/ пост №16 |
Получается опкод идет при старте енкаутера в инсте, и в нем передается гуид босса
|
Подскажите где в клиенте обрабатывается опкод с номером 0x03C54 поиск идой не чего не дал :(
|
Верно ли я понял структуру PH_SMSG_UPDATE_OBJECT
Код:
var mapID = reader.ReadInt16(); |
Угу.
А еще можно было посмотреть в мангосовский src/game/UpdateData.cpp, там то же самое написано. ) |
Чтобы не плодить лишних тем спрошу тут, решил написать свой auth server, в целом вроде всё понятно, но после отправки AUTH_LOGON_PROOF, клиент просто зависает на "Проверка версии" опкод на запрос реалмов не приходит.
|
Цитата:
|
м2 верный, формат пакета скорее всего где-то там ошибся, тк сейчас поставил Accountflags в 0x01 что соответствует гм клиенту и пришёл запрос за реалмы...
|
Подскажите где отправляются и формируются эти два пакета
Код:
9 2 Recv Второй как я понял "SMSG_AUTH_CHALLENGE" а вот первый, так и не нашёл где отправляется |
Цитата:
|
Может немного глупый вопрос т.к только разбираюсь в криптографии, session key в сервере и session key который хранится в памяти клиента должны быть одинаковы, хочу написать простой sandbox для 5.0.4 вот остановился на экране создания персонажа, не могу правильно расшифровать пакеты после AuthSession
|
Конечно
|
Может потому что там идет бит-стриминг?
|
Начал разбираться с 5.3.0 не подскажите как найти функцию "NetClient__JAMClientDispatch", до этого всегда работал только с готовыми образами для ida от TOM_RUS.
|
Возник вопрос как сейчас найти структуру CMSG
По номеру нашел Цитата:
Версия 5.4.7 18019 |
x-ref по 686AF4 выдаст тебе структуру
http://ru-mangos.ru/showthread.php?p=32565#post32565 |
Как узнать адрес обработки ServerToClient: SMSG_UNK_0987 (0x0987) Length: 12 (клиент 18414)?
|
уже много раз об этом говорили
|
OpcodeTools даже Jam группу не показывает, по коду обработка приходит в конечную точку
Код:
(*(void (__thiscall **)(int, int))(*(_DWORD *)v6 + 68))(v6, a3); |
уже где-то выкладывали дампы адресов обработчиков.
в формате OPcode handler |
Цитата:
|
а что мешает заинжектить в процесс Длл и запустить перебор с 0 по 0xffff?
|
Цитата:
OpcodeTools нужно обновлять под 18414 |
Текущее время: 19:53. Часовой пояс GMT +3. |
ru-mangos.ru - Русское сообщество MaNGOS