Показать сообщение отдельно
Старый 22.08.2016, 15:16   #95
Пользователь
 
Регистрация: 14.07.2016
Сообщений: 59
Сказал Спасибо: 6
Имеет 10 спасибок в 9 сообщенях
Smwr на пути к лучшему
По умолчанию

Чем дальше в лес.....

Цитата:
Сообщение от ScythLab Посмотреть сообщение
Для начала нужно найти созданный объект User, дальше просматриваешь его VMT (Virtual method table), и в Ida изучаешь, что делает каждый метод :-)
VMT первый член? У объекта User первый член - 0...

Цитата:
Сообщение от ScythLab Посмотреть сообщение
попробуй покопай пакет MagicEffectIcons (0х85), там где-то должен быть обработчик этого пакета, если найдешь его, то скорей всего найдешь где хранятся бафы.
За наводку спасибо, как то пропустил этот пакет, но... где таблица обработчиков, какой объект обрабатывает? UNH?
Там же, если я всё правильно понимаю, порядок вызовов такой: DispatchNetworkQueue->ТотСамыйОбработчик->UGameEngine::OnXXX?
Взял для примера OnUserInfo, то ли Идой пользоваться не умею, то ли в упор не вижу, откуда она вызывается.

Всё таки, вроде нашёл обработчик. Имя правда немного другое.
Код:
.text:203EF5B0 sub_203EF5B0    proc near               ; DATA XREF: sub_20479CD0+CC3o
.text:203EF5B0
.text:203EF5B0 var_44          = byte ptr -44h
.text:203EF5B0 var_24          = dword ptr -24h
.text:203EF5B0 var_20          = dword ptr -20h
.text:203EF5B0 var_1C          = dword ptr -1Ch
.text:203EF5B0 var_18          = dword ptr -18h
.text:203EF5B0 var_14          = dword ptr -14h
.text:203EF5B0 var_10          = dword ptr -10h
.text:203EF5B0 var_C           = dword ptr -0Ch
.text:203EF5B0 var_4           = dword ptr -4
.text:203EF5B0 arg_0           = dword ptr  8
.text:203EF5B0 arg_4           = dword ptr  0Ch
.text:203EF5B0
.text:203EF5B0                 push    ebp
.text:203EF5B1                 mov     ebp, esp
.text:203EF5B3                 push    0FFFFFFFFh
.text:203EF5B5                 push    offset SEH_203EF5B0
.text:203EF5BA                 mov     eax, large fs:0
.text:203EF5C0                 push    eax
.text:203EF5C1                 mov     large fs:0, esp
.text:203EF5C8                 sub     esp, 38h
.text:203EF5CB                 push    ebx
.text:203EF5CC                 push    esi
.text:203EF5CD                 push    edi
.text:203EF5CE                 mov     [ebp+var_10], esp
.text:203EF5D1                 xor     ebx, ebx
.text:203EF5D3                 mov     [ebp+var_4], ebx
.text:203EF5D6                 mov     [ebp+var_14], ebx
.text:203EF5D9                 mov     ecx, ?GL2Console@@3PAVUL2ConsoleWnd@@A ; UL2ConsoleWnd * GL2Console
.text:203EF5DF                 mov     eax, [ecx]
.text:203EF5E1                 mov     edx, [eax+31Ch]
.text:203EF5E7                 call    edx
.text:203EF5E9                 lea     eax, [ebp+var_14]
.text:203EF5EC                 push    eax
.text:203EF5ED                 push    offset asc_205098C8 ; "h"
.text:203EF5F2                 mov     ecx, [ebp+arg_0]
.text:203EF5F5                 mov     edx, [ecx+48h]
.text:203EF5F8                 push    edx
.text:203EF5F9                 mov     eax, [ebp+arg_4]
.text:203EF5FC                 call    sub_203D9BA0
.text:203EF601                 add     esp, 0Ch
.text:203EF604                 mov     edi, eax
.text:203EF606                 movsx   eax, word ptr [ebp+var_14]
.text:203EF60A                 lea     eax, [eax+eax*2+1]
.text:203EF60E                 push    eax
.text:203EF60F                 lea     ecx, [ebp+var_44]
.text:203EF612                 call    ??0L2ParamStack@@QAE@H@Z ; L2ParamStack::L2ParamStack(int)
.text:203EF618                 mov     byte ptr [ebp+var_4], 1
.text:203EF61C                 movsx   eax, word ptr [ebp+var_14]
.text:203EF620                 cdq
.text:203EF621                 push    edx
.text:203EF622                 push    eax
.text:203EF623                 lea     ecx, [ebp+var_44]
.text:203EF626                 mov     esi, ?PushBack@L2ParamStack@@QAEH_J@Z ; L2ParamStack::PushBack(__int64)
.text:203EF62C                 call    esi ; L2ParamStack::PushBack(__int64)
.text:203EF62E                 mov     [ebp+var_18], ebx
.text:203EF631
.text:203EF631 loc_203EF631:                           ; CODE XREF: sub_203EF5B0+DDj
.text:203EF631                 movsx   ecx, word ptr [ebp+var_14]
.text:203EF635                 cmp     [ebp+var_18], ecx
.text:203EF638                 jge     short loc_203EF68F
.text:203EF63A                 mov     [ebp+var_1C], ebx
.text:203EF63D                 mov     [ebp+var_20], ebx
.text:203EF640                 mov     [ebp+var_24], ebx
.text:203EF643                 lea     edx, [ebp+var_24]
.text:203EF646                 push    edx
.text:203EF647                 lea     eax, [ebp+var_20]
.text:203EF64A                 push    eax
.text:203EF64B                 lea     ecx, [ebp+var_1C]
.text:203EF64E                 push    ecx
.text:203EF64F                 push    offset aDhd     ; "dhd"
.text:203EF654                 mov     edx, [ebp+arg_0]
.text:203EF657                 mov     eax, [edx+48h]
.text:203EF65A                 push    eax
.text:203EF65B                 mov     eax, edi
.text:203EF65D                 call    sub_203D9BA0
.text:203EF662                 add     esp, 14h
.text:203EF665                 mov     edi, eax
.text:203EF667                 mov     eax, [ebp+var_1C]
.text:203EF66A                 cdq
.text:203EF66B                 push    edx
.text:203EF66C                 push    eax
.text:203EF66D                 lea     ecx, [ebp+var_44]
.text:203EF670                 call    esi ; L2ParamStack::PushBack(__int64)
.text:203EF672                 movsx   eax, word ptr [ebp+var_20]
.text:203EF676                 cdq
.text:203EF677                 push    edx
.text:203EF678                 push    eax
.text:203EF679                 lea     ecx, [ebp+var_44]
.text:203EF67C                 call    esi ; L2ParamStack::PushBack(__int64)
.text:203EF67E                 mov     eax, [ebp+var_24]
.text:203EF681                 cdq
.text:203EF682                 push    edx
.text:203EF683                 push    eax
.text:203EF684                 lea     ecx, [ebp+var_44]
.text:203EF687                 call    esi ; L2ParamStack::PushBack(__int64)
.text:203EF689                 add     [ebp+var_18], 1
.text:203EF68D                 jmp     short loc_203EF631
.text:203EF68F ; ---------------------------------------------------------------------------
.text:203EF68F
.text:203EF68F loc_203EF68F:                           ; CODE XREF: sub_203EF5B0+88j
.text:203EF68F                 mov     ecx, ?GL2Console@@3PAVUL2ConsoleWnd@@A ; UL2ConsoleWnd * GL2Console
.text:203EF695                 mov     edx, [ecx]
.text:203EF697                 lea     eax, [ebp+var_44]
.text:203EF69A                 push    eax
.text:203EF69B                 mov     edx, [edx+320h]
.text:203EF6A1                 call    edx
.text:203EF6A3                 movsx   eax, word ptr [ebp+var_14]
.text:203EF6A7                 push    eax
.text:203EF6A8                 push    offset aReceiveAbnorma ; "(Receive)AbnormalStatusUpdatePacket : %"...
.text:203EF6AD                 mov     ecx, ?GNetworkLog@@3PAVFOutputDevice@@A ; FOutputDevice * GNetworkLog
.text:203EF6B3                 mov     edx, [ecx]
.text:203EF6B5                 push    edx
.text:203EF6B6                 call    ?Logf@FOutputDevice@@QAAXPB_WZZ ; FOutputDevice::Logf(wchar_t const *,...)
.text:203EF6BC                 add     esp, 0Ch
.text:203EF6BF                 mov     byte ptr [ebp+var_4], bl
.text:203EF6C2                 lea     ecx, [ebp+var_44]
.text:203EF6C5                 call    ??1L2ParamStack@@QAE@XZ ; L2ParamStack::~L2ParamStack(void)
.text:203EF6CB                 xor     al, al
.text:203EF6CD                 mov     ecx, [ebp+var_C]
.text:203EF6D0                 mov     large fs:0, ecx
.text:203EF6D7                 pop     edi
.text:203EF6D8                 pop     esi
.text:203EF6D9                 pop     ebx
.text:203EF6DA                 mov     esp, ebp
.text:203EF6DC                 pop     ebp
.text:203EF6DD                 retn
.text:203EF6DD sub_203EF5B0    endp

Что в нём происходит непонятно, особенно
Код:
.text:203EF68F                 mov     ecx, ?GL2Console@@3PAVUL2ConsoleWnd@@A ; UL2ConsoleWnd * GL2Console
.text:203EF695                 mov     edx, [ecx]
.text:203EF697                 lea     eax, [ebp+var_44]
.text:203EF69A                 push    eax
.text:203EF69B                 mov     edx, [edx+320h]
.text:203EF6A1                 call    edx
По идее, где то внутри, должен быть вызов APawn::UpdateAbnormalState(APawn *this, float), потому что ничего похожего со словом Abnormal больше нету, но либо чего то неэкспортируемого или вообще хз, этот call edx меня вводит в ступор.

Хотя, внутри UpdateAbnormalState тоже ничего хорошего - там вроде как оперируются видимые эффекты, так что это либо всё таки обработчик не тот (ну есть однозначный ShortBuffStatusUpdate, но хз используется ли он или, и там тоже call edx ведущий не понятно куда), либо хз.

Последний раз редактировалось Smwr, 22.08.2016 в 17:00.
Smwr вне форума   Ответить с цитированием