ArcheAge Опкоды - Страница 2 - Форум администраторов игровых серверов
Форум администраторов игровых серверов StormWall - Защита от DDos атак
Регистрация Мнения Справка Сообщество Календарь
Вернуться   Форум администраторов игровых серверов > MMO > Другие игры / Other games > ArcheAge

ArcheAge Раздел, посвященный ArcheAge - новой многопользовательской ролевой онлайн игре от XLGames.

Ответ
Опции темы
Непрочитано 09.02.2014, 21:20   #11
Олдфаг

По умолчанию Re: ArcheAge Опкоды

Цитата:
Сообщение от MadHacker Посмотреть сообщение
Пока не знаю. Я ещё не смотрел трафик. Я лазию по коду клиента и на глаза попались хендлеры пакетов.
Они хендлятся по списку. ID идут по порядку от нуля до количества пакетов в каждом из трёх хендлеров.
Три типа пакета. Пакеты авторизации 14 штук, пакеты UCC (эмблемы на плащах и подобные) 16 штук, пакеты игрового сервера 502 штуки.
Соответственно ID от 0 до 0x01F5. Остальные байты что-то другое. Тут уже зависит от того, сколько соединений держит клиент. Если одно, то скорее всего один из этих байтов это тип пакета.
Я пока не могу посмотреть разбор самого пакета, надо отлаживать, а под восьмёркой обходчик темиды не работает. Обновил называется комп на свою голову
в пакетах Client <-> LS 2 байта опкод
в пакетах Client <-> GS 4 байта опкод
Smiler вне форума Ответить с цитированием
Непрочитано 09.02.2014, 21:33   #12
Аватар для MadHacker
Пользователь

По умолчанию Re: ArcheAge Опкоды

С темидой я разобрался, надо было просто драйвер idastealth пересобрать под восьмёрку, так что скоро разберусь.

AuthToClient:
Свернуть ↑Развернуть ↓


StreamToClient:
Свернуть ↑Развернуть ↓


ServerToClient:
Свернуть ↑Развернуть ↓


С обратными пакетами та же история, не считая того, что их надо собирать по всему коду. Тип пакетов это действительно int, но не используется значение крупнее двух байт. Более того в хендлерах стоят проверки на превышение значения.
Но я ещё не добрался до уровня который поближе к сети. Возможно там эти два байта дополнительно кодируются или добиваются чем то до 4. Посмотрю.
MadHacker вне форума Ответить с цитированием
Сказали спасибо:
Непрочитано 09.02.2014, 22:07   #13
Аватар для Hint
Герой

По умолчанию Re: ArcheAge Опкоды

В списке:
0x039 CharacterListPacket

Отправляю:
0x003901DD

Т. е. 01DD - это какое-то дополнение. Вроде бы все серверные пакеты начинаются на DD. Но вместо 01 где-то встречается 02.
__________________
hLaPEx, Evermore, hAuthD, L2on, ...
Hint вне форума Ответить с цитированием
Непрочитано 09.02.2014, 22:08   #14
Аватар для MadHacker
Пользователь

По умолчанию Re: ArcheAge Опкоды

01 и 02 это типы пакетов скорее всего. Чуть позже выложу список. DD пока не представляю что такое. Не встречал.

Добавлено через 21 минуту
Собственно вот. Типы пакетов:
0x00 X2ClientToWorld
0x01 ClientToAuth
0x02 X2WorldToClient
0x09 AuthToClient
0x15 ClientToStream
0x16 StreamToClient

Последний раз редактировалось MadHacker; 09.02.2014 в 22:30. Причина: Добавлено сообщение
MadHacker вне форума Ответить с цитированием
Непрочитано 09.02.2014, 23:28   #15
Пользователь

По умолчанию Re: ArcheAge Опкоды

Цитата:
Сообщение от MadHacker Посмотреть сообщение
01 и 02 это типы пакетов скорее всего. Чуть позже выложу список. DD пока не представляю что такое. Не встречал.

Добавлено через 21 минуту
Собственно вот. Типы пакетов:
0x00 X2ClientToWorld
0x01 ClientToAuth
0x02 X2WorldToClient
0x09 AuthToClient
0x15 ClientToStream
0x16 StreamToClient
Я тебя хочу.
trixiejack вне форума Ответить с цитированием
Непрочитано 09.02.2014, 23:37   #16
Олдфаг

По умолчанию Re: ArcheAge Опкоды

Цитата:
Сообщение от MadHacker Посмотреть сообщение
01 и 02 это типы пакетов скорее всего. Чуть позже выложу список. DD пока не представляю что такое. Не встречал.

Добавлено через 21 минуту
Собственно вот. Типы пакетов:
0x00 X2ClientToWorld
0x01 ClientToAuth
0x02 X2WorldToClient
0x09 AuthToClient
0x15 ClientToStream
0x16 StreamToClient
Оч интересно но пока неукладывается.

Пример

DD 01 XX XX
DD 02 XX XX

Оба пакета идут от gs к client

Судя по вашей таблице
01 от client к auth серверу
02 от gs к client
Smiler вне форума Ответить с цитированием
Непрочитано 10.02.2014, 00:16   #17
Аватар для MadHacker
Пользователь

По умолчанию Re: ArcheAge Опкоды

Я посмотрел код. Предположение было неверным.
Опкод это ровно 2 байта. Дальше данные пакета. Класс пакета - 3 виртуальных метода. Из нулевого я достал подтипы, но так и не увидел чтоб они использовались. Скорее всего для какой то внутренней организации по очередям или может приоритеты. Первый метод у всех пакетов одинаковый. Запись двух байтов опкода.
Второй метод идёт сразу за первым - данные пакета.
Например 0x116 CSRestrictCheck при входе в мир.
Пишет в первом метода 2 байта опкода. Затем во втором методе пишет сразу 4 байта, помеченые как ни странно тоже как "type". После чего пишет 1 байт "restrictCode".
Код:
Stack[00001544]:0017E052 db  16h
Stack[00001544]:0017E053 db    1
Stack[00001544]:0017E054 db    1
Stack[00001544]:0017E055 db    0
Stack[00001544]:0017E056 db    0
Stack[00001544]:0017E057 db    0
Stack[00001544]:0017E058 db    1
Вызовы идут просто подряд. Неоткуда там ещё двум байтам опкода взяться.
Код:
crynetwork.dll:063EB10D lea     ecx, [ebp-10h]
crynetwork.dll:063EB110 push    ecx
crynetwork.dll:063EB111 mov     ecx, esi
crynetwork.dll:063EB113 call    dword ptr [eax+4] ;первый виртуальный метод - запись опкода
crynetwork.dll:063EB116 mov     eax, [esi]
crynetwork.dll:063EB118 lea     ecx, [ebp-10h]
crynetwork.dll:063EB11B push    ecx
crynetwork.dll:063EB11C mov     ecx, esi
crynetwork.dll:063EB11E call    dword ptr [eax+8] ;второй виртуальный метод - запись данных пакета.
Перед этим пакетом пролетают пару игровых пакетов с пустым вторым методом. Так что разница во втором и третьем байте должна встречаться достаточно часто. По крайней мере для C2S пакетов.
Но я не думаю что S2C пакеты сделаны по другому принципу. Потому что вот так хендлятся клиенские пакеты:
Код:
.text:391B071C cmp     esi, 1F6h             ;Проверка опкода на верхний диапазон
.text:391B0722 jge     short loc_391B0785 
.text:391B0724 mov     ecx, [edi+esi*4+4] ;Вытаскивает пакет из таблицы
.text:391B0728 test    ecx, ecx                ;Проверяет на существование (в таблице встречаются нули)
.text:391B072A jz      short loc_391B0785
Фрагмент таблицы:
Код:
.rdata:397D7630 off_397D7630 dd offset const PacketHandler<ClientPlayer,ServerToClientPacketType,502>::`vftable'
.rdata:397D7634 off_397D7634 dd 0        ;Ссылки на функторы
.rdata:397D7638 dd offset off_39840968
.rdata:397D763C dd offset off_39841928
.rdata:397D7640 dd offset off_398428E8
.rdata:397D7644 dd offset off_398438A8
.rdata:397D7648 dd offset off_39844868
.rdata:397D764C dd offset off_39845828
.rdata:397D7650 dd offset off_39850518
.rdata:397D7654 dd 0
.rdata:397D7658 dd offset off_398467F8
.rdata:397D765C dd offset off_398477B8
Код:
.rdata:39840968 off_39840968 dd offset const PacketFunctor<ClientPlayer,ServerToClientPacketType,SCReconnectAuthPacket>::`vftable'
.rdata:3984096C off_3984096C dd offset sub_3915B450     ; вот это хз что за метод.
За каждым функтором закреплён метод в таблице, но что делает непонятно и вроде мы в него вообще не попадаем. Разбор пакетов в виртуальных методах функтора.
Вобщем не знаю. Надо трафик посмотреть. Но не похоже, чтоб что-то сильно менялось в дальнейших вызовах.

UPD... Сейчас смотрю на порядок байт на стеке. Физически в сетевом пакете неизвестные байты до опкода или после? То, что я запостил выше это уже сырой байтовый буфер. По идее при отправке его в сеть байты уже не должны меняться местами... Тогда получается, что что-то пишется до опкода и это уже интереснее.

Последний раз редактировалось MadHacker; 10.02.2014 в 00:25. Причина: Ещё одна мысль.
MadHacker вне форума Ответить с цитированием
Непрочитано 10.02.2014, 07:27   #18
Олдфаг

По умолчанию Re: ArcheAge Опкоды

ок. привожу пример 3 разных Серверных пакета :

XX XX DD 01 00 00 ............................

XX XX DD 02 00 00 ............................

XX XX DD 01 EC 01 ............................

где XX XX = длинна пакета
....... полезные данные


теперь отбрось анализ в отладчике, и положись на логику где здесь опкод ?
Smiler вне форума Ответить с цитированием
Непрочитано 10.02.2014, 08:50   #19
Аватар для MadHacker
Пользователь

По умолчанию Re: ArcheAge Опкоды

Я до этого разбирал протокол PerfectWorld. Могу точно сказать одно - логике здесь не место.
Эти байты могут оказаться чем угодно. ID сервера. Подтип пакета. Приоритет. Мусор. Ключ сессии. Маркер сжатия...
Возможно для разработки сервера вам достаточно считать это опкодом. Но я занимаюсь клиентской частью и от этих мелочей зависит на сколько быстро мой софт прихлопнет протектор. По этому буду разбираться дальше.

Добавлено через 1 час 28 минут
Чем дальше в код... Ещё пачка пакетов
0x10 X2::ProxyPacket
Не делятся по направлениям на клиентские и серверные.
Код:
0x000	PacketFunctor<NetConnection,enum  X2::ProxyPacketType,X2::ChangeStatePacket>
0x001	 NoPck
0x002	PacketFunctor<NetConnection,enum  X2::ProxyPacketType,X2::FlushMsgsPacket>
0x003	 NoPck
0x004	PacketFunctor<NetConnection,enum  X2::ProxyPacketType,X2::UpdatePhysicsTimePacket>
0x005	PacketFunctor<NetConnection,enum  X2::ProxyPacketType,X2::BeginUpdateObjPacket>
0x006	PacketFunctor<NetConnection,enum  X2::ProxyPacketType,X2::EndUpdateObjPacket>
0x007	PacketFunctor<NetConnection,enum  X2::ProxyPacketType,X2::BeginBindObjPacket>
0x008	PacketFunctor<NetConnection,enum  X2::ProxyPacketType,X2::EndBindObjPacket>
0x009	PacketFunctor<NetConnection,enum  X2::ProxyPacketType,X2::UnbindPredictedObjPacket>
0x00A	PacketFunctor<NetConnection,enum  X2::ProxyPacketType,X2::RemoveStaticObjPacket>
0x00B	PacketFunctor<NetConnection,enum  X2::ProxyPacketType,X2::VoiceDataPacket>
0x00C	PacketFunctor<NetConnection,enum  X2::ProxyPacketType,X2::UpdateAspectPacket>
0x00D	PacketFunctor<NetConnection,enum  X2::ProxyPacketType,X2::SetAspectProfilePacket>
0x00E	PacketFunctor<NetConnection,enum  X2::ProxyPacketType,X2::PartialAspectPacket>
0x00F	PacketFunctor<NetConnection,enum  X2::ProxyPacketType,X2::SetGameTypePacket>
0x010	PacketFunctor<NetConnection,enum  X2::ProxyPacketType,X2::ChangeCVarPacket>
0x011	PacketFunctor<NetConnection,enum  X2::ProxyPacketType,X2::EntityClassRegistrationPacket>
0x012	PacketFunctor<NetConnection,enum  X2::ProxyPacketType,X2::PingPacket>
0x013	PacketFunctor<NetConnection,enum  X2::ProxyPacketType,X2::PongPacket>
0x014	PacketFunctor<NetConnection,enum  X2::ProxyPacketType,X2::PacketSeqChange>
0x015	 NoPck
0x016	PacketFunctor<NetConnection,enum  X2::ProxyPacketType,X2::FastPongPacket>

Последний раз редактировалось MadHacker; 10.02.2014 в 10:18. Причина: Добавлено сообщение
MadHacker вне форума Ответить с цитированием
Непрочитано 19.02.2014, 11:38   #20
Аватар для xTz
Разработчик BDO Emu

По умолчанию Re: ArcheAge Опкоды

что вы тут изобретаете велосипед ) оп код 2 байта имеет.
0x000002 где 02 означает тип пакета это x2 тип пакета
0x000201 где 01 тип пакета не пакованый серверный
если в конце 03 или выше это значит пакованый и там еще 1 байт ид сессий паходу.
это только для гс.
Для стрим или логин протокола там сразу 2 байта и нету разделение и нету сессий если я не ошибаюсь.
xTz вне форума Ответить с цитированием
Сказали спасибо:
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Пароли в ArcheAge niktout ArcheAge 21 06.11.2013 09:00
ArcheAge (мысли) Torro Об игре 34 27.09.2013 14:06
ArcheAge помогите разобраться с пакетами VictorS ArcheAge 6 13.06.2013 08:45
опкоды клиент и сервер пакетов клиента 3.5 Murzik Серверная часть 0 08.02.2013 08:13
Почему сдвинулись опкоды в Таути, или в корейцев закончилась "трава" VISTALL Курилка / Yak floor 12 22.11.2012 12:26


© 2007–2024 «Форум администраторов игровых серверов»
Защита сайта от DDoS атак — StormWall
Работает на Булке неизвестной версии с переводом от zCarot
Текущее время: 18:10. Часовой пояс GMT +3.

Вверх