Вернуться   CoderX :: Forums > Основные форумы > Программинг
Войти через OpenID

Программинг Форум для тем связанных с программированием

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 19.07.2014, 20:40   #1
Новичок
 
Регистрация: 19.07.2014
Сообщений: 10
Сказал Спасибо: 2
Имеет 0 спасибок в 0 сообщенях
Hippeys пока неопределено
По умолчанию Поиск функции SendPacket в l2

Здравствуйте!

Пытаюсь найти адрес функции SendPacket в клиенте l2, для того, чтобы потом ее похукать, но вот незадача, она скрыта и ее нет в таблице экспорта, может где-нибудь это уже разжевано? Интересует только автоматический, не ручной поиск.

Может у кого-нибудь есть сигнатуры этой функции, чтобы потом искать по памяти? Код я сам могу написать, интересуют чисто сигнатуры.
Или может у кого-нибудь есть список адресов смещений этой функции от engine.dll?

Я знаю l2ph тоже как то ищет, можете тыкнуть лицом в код, где он это делает?

Спасибо

Добавлено через 41 минуту
SendPacket необходим чтобы в одном пакете немного модифицировать

Последний раз редактировалось Hippeys, 19.07.2014 в 20:40. Причина: Добавлено сообщение
Hippeys вне форума   Ответить с цитированием
Старый 19.07.2014, 22:24   #2
Местный
 
Аватар для supernewbie
 
Регистрация: 23.09.2009
Сообщений: 1,232
Сказал Спасибо: 119
Имеет 172 спасибок в 134 сообщенях
supernewbie пока неопределено
По умолчанию

Hippeys, глянь код экспортируемых функций которые вызывают сенд пакет
__________________
Начало.
supernewbie вне форума   Ответить с цитированием
Старый 20.07.2014, 00:30   #3
Новичок
 
Регистрация: 19.07.2014
Сообщений: 10
Сказал Спасибо: 2
Имеет 0 спасибок в 0 сообщенях
Hippeys пока неопределено
По умолчанию

Цитата:
Сообщение от supernewbie Посмотреть сообщение
Hippeys, глянь код экспортируемых функций которые вызывают сенд пакет
А какие экспортируемые функции вызывают SendPacket?
Hippeys вне форума   Ответить с цитированием
Старый 20.07.2014, 08:07   #4
Местный
 
Аватар для supernewbie
 
Регистрация: 23.09.2009
Сообщений: 1,232
Сказал Спасибо: 119
Имеет 172 спасибок в 134 сообщенях
supernewbie пока неопределено
По умолчанию

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 ; ---------------------------------------------------------------------------
__________________
Начало.

Последний раз редактировалось supernewbie, 20.07.2014 в 08:09.
supernewbie вне форума   Ответить с цитированием
За это сообщение supernewbie нажился спасибкой от:
Старый 20.07.2014, 15:40   #5
Новичок
 
Регистрация: 19.07.2014
Сообщений: 10
Сказал Спасибо: 2
Имеет 0 спасибок в 0 сообщенях
Hippeys пока неопределено
По умолчанию

Цитата:
Сообщение от supernewbie Посмотреть сообщение
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 вне форума   Ответить с цитированием
Старый 20.07.2014, 18:35   #6
Местный
 
Аватар для supernewbie
 
Регистрация: 23.09.2009
Сообщений: 1,232
Сказал Спасибо: 119
Имеет 172 спасибок в 134 сообщенях
supernewbie пока неопределено
По умолчанию

Hippeys, твоя функция запакована
алгоритм поиска сенд пакета на любой клиент без веток написать не получится, некоторые клиенты сильно отличаются друг от друга
__________________
Начало.
supernewbie вне форума   Ответить с цитированием
За это сообщение supernewbie нажился спасибкой от:
Старый 22.07.2014, 22:56   #7
Новичок
 
Регистрация: 19.07.2014
Сообщений: 10
Сказал Спасибо: 2
Имеет 0 спасибок в 0 сообщенях
Hippeys пока неопределено
По умолчанию

Цитата:
Сообщение от supernewbie Посмотреть сообщение
Hippeys, твоя функция запакована
алгоритм поиска сенд пакета на любой клиент без веток написать не получится, некоторые клиенты сильно отличаются друг от друга
А как распаковать? Я вначале подумал, что при загрузке в процесс оно распаковывается, подрубаюсь дебагерром, но тут ошибка вылетает, что, мол, дебаггер врублен. Есть где-нибудь гайд по распаковке?
Hippeys вне форума   Ответить с цитированием
Старый 23.07.2014, 10:50   #8
Местный
 
Аватар для supernewbie
 
Регистрация: 23.09.2009
Сообщений: 1,232
Сказал Спасибо: 119
Имеет 172 спасибок в 134 сообщенях
supernewbie пока неопределено
По умолчанию

Hippeys, можно инжектнуть свою длл в процесс и снять дамп функции
__________________
Начало.
supernewbie вне форума   Ответить с цитированием
Старый 23.07.2014, 19:08   #9
Новичок
 
Регистрация: 19.07.2014
Сообщений: 10
Сказал Спасибо: 2
Имеет 0 спасибок в 0 сообщенях
Hippeys пока неопределено
По умолчанию

supernewbie, я так понимаю, что необходимо перехватывать UNetworkHandler::RequestItemList?

У меня код этой функции такой же как у вас:
Код:
 	
  	.data:0x00000000	8b4148	mov    eax,DWORD PTR [ecx+0x48]	
  	.data:0x00000003	8b08	mov    ecx,DWORD PTR [eax]	
  	.data:0x00000005	8b516c	mov    edx,DWORD PTR [ecx+0x6c]	<--- адрес SendPacket
  	.data:0x00000008	6a14	push   0x14	
  	.data:0x0000000a	6814905020	push   0x20509014	
  	.data:0x0000000f	50	push   eax	
  	.data:0x00000010	ffd2	call   edx	
  	.data:0x00000012	a124e44820	mov    eax,ds:0x2048e424	
  	.data:0x00000017	8b08	mov    ecx,DWORD PTR [eax]	
  	.data:0x00000019	68dcae5120	push   0x2051aedc	
  	.data:0x0000001e	51	push   ecx	
  	.data:0x0000001f	e87c85c7f4	call   func_f4c785a0	
  	.data:0x00000024	90	nop	
  	.data:0x00000025	83c414	add    esp,0x14	
  	.data:0x00000028	b801000000	mov    eax,0x1	
  	.data:0x0000002d	c3	ret
Я так понимаю смещение 0x6c, получается адрес так?
Код:
LPVOID fnOrigUNetworkHandler = ::GetProcAddress(LoadLibrary("engine.dll"), "?RequestItemList@UNetworkHandler@@UAEHXZ");
LPVOID fnOrigSendPacket_EngineDLL = (LPVOID)((ULONG_PTR)fnOrigUNetworkHandler+0x6c);
Так он берется? fnOrigSendPacket_EngineDLL правильный получается? Хукаю по этому адресу но ничего не идет, ни одного вызова

Последний раз редактировалось Hippeys, 23.07.2014 в 19:28. Причина: Добавлено сообщение
Hippeys вне форума   Ответить с цитированием
Старый 23.07.2014, 19:59   #10
Местный
 
Аватар для supernewbie
 
Регистрация: 23.09.2009
Сообщений: 1,232
Сказал Спасибо: 119
Имеет 172 спасибок в 134 сообщенях
supernewbie пока неопределено
По умолчанию

Hippeys, UNetworkHandler::RequestItemList имеет соглашение вызова thiscall - в ecx лежит указатель на this, в коде
Код:
  	.data:0x00000000	8b4148	mov    eax,DWORD PTR [ecx+0x48]	
  	.data:0x00000003	8b08	mov    ecx,DWORD PTR [eax]	
  	.data:0x00000005	8b516c	mov    edx,DWORD PTR [ecx+0x6c]	<--- адрес SendPacket
в ecx указатель на инстанс UNetworkHandler, затем тремя инструкциями вычисляешь адрес сенд пакета при условии подстановки в ecx инстанса UNetworkHandler
__________________
Начало.
supernewbie вне форума   Ответить с цитированием
Ответ

  CoderX :: Forums > Основные форумы > Программинг



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

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


Часовой пояс GMT +4, время: 07:49.

vBulletin style designed by MSC Team.
Powered by vBulletin® Version 3.6.11
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Locations of visitors to this page
Rambler's Top100

Вы хотите чувствовать себя в безопасности? чоп Белган обеспечит её!