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

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

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 19.04.2011, 01:53   #1
Пользователь
 
Аватар для ALF
 
Регистрация: 18.09.2010
Адрес: Киев
Сообщений: 70
Сказал Спасибо: 9
Имеет 10 спасибок в 6 сообщенях
ALF пока неопределено
По умолчанию

То есть просто потом jmp [Original]?
А как тут получить параметр.. А именно айди пакета.
__________________
Все относительно...
ALF вне форума   Ответить с цитированием
Старый 19.04.2011, 03:31   #2
Рыцарь
 
Аватар для Morfik
 
Регистрация: 13.10.2009
Сообщений: 665
Сказал Спасибо: 38
Имеет 172 спасибок в 108 сообщенях
Morfik пока неопределено
По умолчанию

Цитата:
Сообщение от ALF Посмотреть сообщение
То есть просто потом jmp [Original]?
А как тут получить параметр.. А именно айди пакета.
1) jmp на функцию, объявленную так же как и перехватываемая (у которой будет один параметр - указатель на пакет)
2) в своей функции надо сразу сохранить содержимое ecx
3) перед вызовом оригинала восстановить переписанные 5 байт (джамп) запихнуть с ecx то что оттуда сохраняли, и уже теперь вызывать оригинал
4) снова поставить хук (так как для вызова мы его снимали)

зы: тут нету волшебных 5 байт в начале ф-ии которые можено переписать без последствий
Morfik вне форума   Ответить с цитированием
Старый 19.04.2011, 10:19   #3
Местный
 
Аватар для Aries
 
Регистрация: 19.01.2011
Сообщений: 241
Сказал Спасибо: 7
Имеет 26 спасибок в 22 сообщенях
Aries пока неопределено
По умолчанию

По поводу id пакета и т.п. дам тебе тот же совет, что когда-то дали мне, берешь пакетхак и там есть инишники с описанием большинства (мб и всех, хотя врядли) пакетов))


ЗЫ Сначала хотел сказать, что Морфик наркоман, потом выпил кофе проснулся, и понял что похоже на правду)))
ЗЫЫ Морфик, ты сейчас кстати полностью извне работаешь с клиентом или все-таки инжетишься и юзаешь экспортируемые функции без перехвата?
Aries вне форума   Ответить с цитированием
Старый 19.04.2011, 20:26   #4
Рыцарь
 
Аватар для Morfik
 
Регистрация: 13.10.2009
Сообщений: 665
Сказал Спасибо: 38
Имеет 172 спасибок в 108 сообщенях
Morfik пока неопределено
По умолчанию

Цитата:
Сообщение от Aries Посмотреть сообщение
По поводу id пакета и т.п. дам тебе тот же совет, что когда-то дали мне, берешь пакетхак и там есть инишники с описанием большинства (мб и всех, хотя врядли) пакетов))


ЗЫ Сначала хотел сказать, что Морфик наркоман, потом выпил кофе проснулся, и понял что похоже на правду)))
ЗЫЫ Морфик, ты сейчас кстати полностью извне работаешь с клиентом или все-таки инжетишься и юзаешь экспортируемые функции без перехвата?
полностью из вне работать никак не выйдет, если канешна не знаешь алгоритмов фроста =) ингжект и работа без перехватов - возможностей мало, но зато максимум безопасности
Morfik вне форума   Ответить с цитированием
За это сообщение Morfik нажился спасибкой от:
Старый 19.04.2011, 23:45   #5
Местный
 
Аватар для Aries
 
Регистрация: 19.01.2011
Сообщений: 241
Сказал Спасибо: 7
Имеет 26 спасибок в 22 сообщенях
Aries пока неопределено
По умолчанию

Цитата:
Сообщение от Morfik Посмотреть сообщение
полностью из вне работать никак не выйдет, если канешна не знаешь алгоритмов фроста =) ингжект и работа без перехватов - возможностей мало, но зато максимум безопасности
ок, спс)) А то я стал уже голову ломать, зачем тебе нужен был РидПроцессМемори) уж думал, что ты полностью извне с памятью линейки работаешь))

Добавлено через 22 минуты
Цитата:
Сообщение от ALF Посмотреть сообщение
В общем суть такова
Сервер на клиент отправляет пакет
(айди допустим 0x99, структура cSSSSS)
в 5 строк.... Имена чаров)
Потом методами клиента рисуем эти ники (топ пвп которые в игре)
Ну рисовалку я уже знаю как сделать)
А вот с пакетиками (клиент часть) пока что туговато)

Добавлено через 1 час 1 минуту
P.S. А как именно определить, какой айди приходит?
Вот при вызове UNetworkHandler:ispatchNetworkQueue функции передается в аргумент пакет (DispatchNetworkQueue(np:NetworkPacket)
Структура NetworkPacket выглядит както так
Код:
struct NetworkPacket
	union
		id      db ?
		align_	dd ?
	ends
	cb 	dd ?
	data	db ?
ends
Зная __thiscall аргументы передаются по стеку.
Очевидно что можно оттуда достать и сам пакет и проанализировать его... Только вот как.....
Ну структура пакета рабочая вот: (на АСМе хз как оно)
struct NetworkPacket
{
unsigned char id, _padding1, exid, _padding2;
unsigned short size, _padding3;
unsigned char* data;
};

Соответственно первый параметр и есть id пакета.
Теперь про то как это выдернуть...
Смотри, если ты vmt хукаешь (про что говорил я), тогда как раз эта структура и передается твоей функции (точнее указатель), поэтому ничего выдергивать не надо...
Если Сплайсом(как Морфик говорил), тогда дергаешь из стека адрес, и по этому адресу уже лежит структура...

Последний раз редактировалось Aries, 19.04.2011 в 23:45. Причина: Добавлено сообщение
Aries вне форума   Ответить с цитированием
За это сообщение Aries нажился спасибкой от:
Ответ

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



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

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


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

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

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