Ru-MaNGOS

Вернуться   Ru-MaNGOS > Ядро > Опкоды, Формулы, Клиент > Копаем клиент

Важная информация

Копаем клиент Копаем клиент

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 22.08.2011, 19:12   #1
HuntsMan
Ученый
 
Аватар для HuntsMan
 
Регистрация: 19.12.2010
Сообщений: 221
Сказал(а) спасибо: 64
Поблагодарили 12 раз(а) в 9 сообщениях
Записей в дневнике: 2
HuntsMan На верном пути
По умолчанию Откуда вызываются формировщики

Разбирал один пакет, Client->Server направленности, хотел пошариться по месту где вызывается функция формирующая пакет, и тут столкнулся с проблемой: поиск по декомпилированному листингу ничего не дал кроме объявления и заполнения этой функции. Получается, что она тоже вызывается по хеш таблице, или как это там правильно называется, а вот как найти эту таблицу никто не в курсе?

Клиент 4.0.6а.

Последний раз редактировалось HuntsMan; 22.08.2011 в 19:19.
HuntsMan вне форума   Ответить с цитированием
Старый 22.08.2011, 22:08   #2
Chameleon
Новичок
 
Регистрация: 04.03.2011
Сообщений: 29
Сказал(а) спасибо: 12
Поблагодарили 9 раз(а) в 7 сообщениях
Chameleon На верном пути
По умолчанию

CMSG отправляющие функции должны вызываться прямым образом. Попробуй использовать xref в иде вместо поиска по декомпилу. Точнее сказать не могу, не зная про какой пакет речь.
Chameleon вне форума   Ответить с цитированием
Старый 23.08.2011, 09:47   #3
HuntsMan
Ученый
 
Аватар для HuntsMan
 
Регистрация: 19.12.2010
Сообщений: 221
Сказал(а) спасибо: 64
Поблагодарили 12 раз(а) в 9 сообщениях
Записей в дневнике: 2
HuntsMan На верном пути
По умолчанию

Смотре в иде, она вроде как в дереве указывает откуда функция вызывается, но для моей ничего подобного не увидел. Опкод CMSG_GUILD_ADD_RANK.
HuntsMan вне форума   Ответить с цитированием
Старый 23.08.2011, 12:16   #4
Chameleon
Новичок
 
Регистрация: 04.03.2011
Сообщений: 29
Сказал(а) спасибо: 12
Поблагодарили 9 раз(а) в 7 сообщениях
Chameleon На верном пути
По умолчанию

Не напрямую, но как я и говорил по xref находится.
Для билда 14333: CMSG_GUILD_ADD_RANK, номер 33888, хэндлер 6B96E0.
По xref находится только
Код:
.rdata:00B8F498 off_B8F498      dd offset sub_6B96E0
Смотришь xref к off_B8F498 и там 3 функции: что-то типа конструктора, деструктора и еще чего-то. По 2м из них через xref находится вызывающая функция sub_91B660 - обработчик LUA GuildControlAddRank.
Chameleon вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
HuntsMan (23.08.2011)
Старый 23.08.2011, 16:23   #5
HuntsMan
Ученый
 
Аватар для HuntsMan
 
Регистрация: 19.12.2010
Сообщений: 221
Сказал(а) спасибо: 64
Поблагодарили 12 раз(а) в 9 сообщениях
Записей в дневнике: 2
HuntsMan На верном пути
По умолчанию

Спасибо, добрался я до нужного места
Теперь другой вопрос смотря на функцию int __thiscall sub_969F70(void *this, int a2) я как понял в первом аргументе идет адрес, дальше к примеру к этому адресу прибавляется 57 (CDataStore__PutInt8(a2, *((_BYTE *)v3 + 57)) ну и т.п. А теперь вопрос: от какого адреса нужно плясать? Я так понял нужно от адреса вызова функции sub_4ED020:
Код:
  if ( FrameScript__IsString(a1, 1) )
  {
    if ( (unsigned int)dword_DFAF78 < 0xA )
    {
      v3 = FrameScript__ToLString(a1, 1, 0);
      if ( v3 )
      {
        if ( *(_BYTE *)v3 )
        {
          sub_4ED020(v3, (unsigned int)&v6, 16, 64, 1);
          v4 = ClntObjMgrGetActivePlayerObj();
          if ( v4 )
          {
            sub_969F30((int)&v5, **((_DWORD **)v4 + 2), *(_DWORD *)(*((_DWORD *)v4 + 2) + 4), (int)&v6, dword_DFAF78);
            ClientConnection__SendSpecialPacket((int)&v5);
            sub_9699A0(&v5);
          }
        }
      }
    }
    result = 0;
  }
HuntsMan вне форума   Ответить с цитированием
Ответ


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

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



Текущее время: 00:46. Часовой пояс GMT +3.


ru-mangos.ru - Русское сообщество MaNGOS
Главная цель проекта MaNGOS - обучающая, поэтому разрешается использовать исходный код и собранную программу только для образовательных целей.
Вы не можете использовать MaNGOS в коммерческих целях, а также не разрешается устанавливать публичные серверы на базе MaNGOS.
Любое копирование материалов, информации в любом виде без указания источника - форума Ru-MaNGOS будет считаться нарушением авторских прав и нарушением Уголовного Кодекса РФ, ст. 146 ст. 147.
Перевод vBulletin: zCarot