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

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

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

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

Hippeys, можно инжектнуть свою длл в процесс и снять дамп функции
__________________
Начало.
supernewbie вне форума   Ответить с цитированием
Старый 23.07.2014, 19:08   #3
Новичок
 
Регистрация: 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   #4
Местный
 
Аватар для 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 вне форума   Ответить с цитированием
Старый 24.07.2014, 20:09   #5
Новичок
 
Регистрация: 19.07.2014
Сообщений: 10
Сказал Спасибо: 2
Имеет 0 спасибок в 0 сообщенях
Hippeys пока неопределено
По умолчанию

Цитата:
Сообщение от 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
Спасибо, скажи пожалуйста какой адрес у тебя получается у функции SendPacket(у меня тот же код функции RequestItemList поэтому и адрес должен быть тот по идее)? У меня получается 0ABE16EC почему-то

Добавлено через 1 минуту
а, не, вроде разобрался, получилось 0x20522AD8

Добавлено через 20 часов 35 минут
подскажите, как функция SendPacket выглядит пожалуйста

Последний раз редактировалось Hippeys, 24.07.2014 в 20:09. Причина: Добавлено сообщение
Hippeys вне форума   Ответить с цитированием
Ответ

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



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

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


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

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

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