Пытаюсь найти адрес функции SendPacket в клиенте l2, для того, чтобы потом ее похукать, но вот незадача, она скрыта и ее нет в таблице экспорта, может где-нибудь это уже разжевано? Интересует только автоматический, не ручной поиск.
Может у кого-нибудь есть сигнатуры этой функции, чтобы потом искать по памяти? Код я сам могу написать, интересуют чисто сигнатуры.
Или может у кого-нибудь есть список адресов смещений этой функции от engine.dll?
Я знаю l2ph тоже как то ищет, можете тыкнуть лицом в код, где он это делает?
Спасибо
Добавлено через 41 минуту
SendPacket необходим чтобы в одном пакете немного модифицировать
Последний раз редактировалось Hippeys, 19.07.2014 в 20:40.
Причина: Добавлено сообщение
Hippeys, большинство методов класса UNetworkHandler
Код:
.text:203D5530 ; Exported entry 8363. ?RequestItemList@UNetworkHandler@@UAEHXZ
.text:203D5530
.text:203D5530 ; =============== S U B R O U T I N E =======================================
.text:203D5530
.text:203D5530
.text:203D5530 ; public: virtual int __thiscall UNetworkHandler::RequestItemList(void)
.text:203D5530 public ?RequestItemList@UNetworkHandler@@UAEHXZ
.text:203D5530 ?RequestItemList@UNetworkHandler@@UAEHXZ proc near
.text:203D5530 mov eax, [ecx+48h]
.text:203D5533 mov ecx, [eax]
.text:203D5535 mov edx, [ecx+6Ch] ; в edx адрес SendPacket
.text:203D5538 push 14h
.text:203D553A push offset unk_20507FEC
.text:203D553F push eax
.text:203D5540 call edx
.text:203D5542 mov eax, ds:?GNetworkLog@@3PAVFOutputDevice@@A ; FOutputDevice * GNetworkLog
.text:203D5547 mov ecx, [eax]
.text:203D5549 push offset aSendItemlist ; "(Send)ItemList"
.text:203D554E push ecx
.text:203D554F call ds:?Logf@FOutputDevice@@QAAXPB_WZZ ; FOutputDevice::Logf(wchar_t const *,...)
.text:203D5555 add esp, 14h
.text:203D5558 mov eax, 1
.text:203D555D retn
.text:203D555D ?RequestItemList@UNetworkHandler@@UAEHXZ endp
.text:203D555D
.text:203D555D ; ---------------------------------------------------------------------------
Огромное спасибо, а скажи пожалуйста, этот указатель на функции SendPacket всегда на этом месте в этой функции? То есть можно ли написать поиск SendPacket автоматический, на разных версиях engine.dll?
Добавлено через 18 минут supernewbie, У меня эта функция выглядит вот так:
Код:
___:203D5430 ; public: virtual int __thiscall UNetworkHandler::RequestItemList(void)
___:203D5430 public ?RequestItemList@UNetworkHandler@@UAEHXZ
___:203D5430 ?RequestItemList@UNetworkHandler@@UAEHXZ proc near
___:203D5430 fisubr dword ptr [eax-75h]
___:203D5433 mov dword ptr [edi-6Dh], 5F9A690h
___:203D543A stosd
___:203D543B pop esi
___:203D543C daa
___:203D543D pop ecx
___:203D543E
___:203D543E loc_203D543E: ; CODE XREF: UNetworkHandler::RequestTrade(int)+B0j
___:203D543E arpl [edx+6EE0DB56h], bx
___:203D5444 jnb short loc_203D5497
___:203D5446 arpl di, ax
___:203D5448 pop edi
___:203D5449 mov dh, 1Fh
___:203D544B sti
___:203D544C loopne loc_203D5457
___:203D544E nop
___:203D544F fisub dword ptr [edi]
___:203D5451 cdq
___:203D5452 rcr edx, cl
___:203D5454 daa
___:203D5455 stosb
___:203D5456 pop es
___:203D5457
___:203D5457 loc_203D5457: ; CODE XREF: UNetworkHandler::RequestItemList(void)+1Cj
___:203D5457 push ecx
___:203D5458 movaps xmm0, oword ptr [ebx+4Ah]
___:203D545C push edi
___:203D545D jmp short loc_203D546E
___:203D545D ?RequestItemList@UNetworkHandler@@UAEHXZ endp
Клиент High Five
Последний раз редактировалось Hippeys, 20.07.2014 в 15:40.
Причина: Добавлено сообщение
Hippeys, твоя функция запакована
алгоритм поиска сенд пакета на любой клиент без веток написать не получится, некоторые клиенты сильно отличаются друг от друга
__________________ Начало.
За это сообщение supernewbie нажился спасибкой от:
Hippeys, твоя функция запакована
алгоритм поиска сенд пакета на любой клиент без веток написать не получится, некоторые клиенты сильно отличаются друг от друга
А как распаковать? Я вначале подумал, что при загрузке в процесс оно распаковывается, подрубаюсь дебагерром, но тут ошибка вылетает, что, мол, дебаггер врублен. Есть где-нибудь гайд по распаковке?
в ecx указатель на инстанс UNetworkHandler, затем тремя инструкциями вычисляешь адрес сенд пакета при условии подстановки в ecx инстанса UNetworkHandler