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

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

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 19.04.2011, 23:45   #11
Местный
 
Аватар для 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 нажился спасибкой от:
Старый 20.04.2011, 00:04   #12
Пользователь
 
Аватар для ALF
 
Регистрация: 18.09.2010
Адрес: Киев
Сообщений: 70
Сказал Спасибо: 9
Имеет 10 спасибок в 6 сообщенях
ALF пока неопределено
По умолчанию

pop eax сохранит стек в EAX?
Туплю что то я со стеком(
Закинуть в стек - вроде понятно всё)
А вытолкнуть со стека какой то 1 параметр... В то время когда их там огого)
Или там будет указатель на сам пакет?)
__________________
Все относительно...

Последний раз редактировалось ALF, 20.04.2011 в 00:07.
ALF вне форума   Ответить с цитированием
Старый 20.04.2011, 00:10   #13
Местный
 
Аватар для Aries
 
Регистрация: 19.01.2011
Сообщений: 241
Сказал Спасибо: 7
Имеет 26 спасибок в 22 сообщенях
Aries пока неопределено
По умолчанию

Цитата:
Сообщение от ALF Посмотреть сообщение
pop eax сохранит стек в EAX?
Туплю что то я со стеком(
Закинуть в стек - вроде понятно всё)
А вытолкнуть со стека какой то 1 параметр... В то время когда их там огого)
Или там будет указатель на сам пакет?)
указатель)
Aries вне форума   Ответить с цитированием
Старый 20.04.2011, 00:14   #14
Пользователь
 
Аватар для ALF
 
Регистрация: 18.09.2010
Адрес: Киев
Сообщений: 70
Сказал Спасибо: 9
Имеет 10 спасибок в 6 сообщенях
ALF пока неопределено
По умолчанию

Хм... Сейчас попробую..
Сделаю переменную по типу структуры
Ну то есть
a: NetworkPacket
потом
pop eax
mov [a], eax
...
по идеи по
a.Id будет айди пакета...
Сейчас посмотрим)))
__________________
Все относительно...
ALF вне форума   Ответить с цитированием
Старый 20.04.2011, 00:17   #15
Местный
 
Аватар для Aries
 
Регистрация: 19.01.2011
Сообщений: 241
Сказал Спасибо: 7
Имеет 26 спасибок в 22 сообщенях
Aries пока неопределено
По умолчанию

Я когда изучал, получал тупо адрес, и читал несколько байт после него и пытался понять что это)))
Aries вне форума   Ответить с цитированием
Старый 20.04.2011, 00:28   #16
Пользователь
 
Аватар для ALF
 
Регистрация: 18.09.2010
Адрес: Киев
Сообщений: 70
Сказал Спасибо: 9
Имеет 10 спасибок в 6 сообщенях
ALF пока неопределено
По умолчанию

Ахахах
Ппц докатился)
Смотри сколько инклудов )))
Код:
include 'win32a.inc'
include 'encoding\win1251.inc'
include 'macro\if.inc'
include 'hll.inc'
include 'main.inc'
include 'Function.inc'
include 'Guard.inc'
include 'Structures.inc'
include 'NetWork.inc'
Добавлено через 4 минуты
Хз пойдут или нет... Еще не проверял но думаю делать так
Код:
proc DispatchNetworkQueueHook
	
	pop		eax
	mov [pk],eax
	push	ebp
	mov		ebp, esp
	pushad
	; какието stdcall
	popad
	push	0ffffffffh
	push	eax
	ret
endp
Причем на это будет не JMP а CALL
__________________
Все относительно...

Последний раз редактировалось ALF, 20.04.2011 в 00:28. Причина: Добавлено сообщение
ALF вне форума   Ответить с цитированием
Старый 20.04.2011, 10:15   #17
Местный
 
Регистрация: 10.08.2010
Сообщений: 634
Сказал Спасибо: 22
Имеет 95 спасибок в 70 сообщенях
mira пока неопределено
По умолчанию

Не будет это работать)
в pk у тебя будет адрес возврата из процедуры.
Нада чето типа того:
push ebp
mov ebp, esp
mov eax,[ebp+8]
pop ebp
mov pk, eax
где в [ebp+8] пропускаем в стеке адрес возврата 4 байта и еще 4 сохраненого нами ебп. Если вызываеш через call то придетса отступить еще на один адрес возврата [ebp+12]

Добавлено через 6 минут
И разумеетса после этих хуков ты обязан восстановить указатиль стека в соответствии с соглашениями вызова cdecl

Добавлено через 10 минут
Ах и да, если хукашеш диспатч то там еще и проверка нужна) она вызываетса в тике клиента около 100 раз в секунду в активном режиме и намного менше в неактивном, при этом в зависимости от плотности траффика от 99% до 10% она вызываетса вхолостую. Тоесть в ней пакета нет и нада проверять есть ли там пакет чтоб сразуже не словить генерал протекшн фолт
__________________
читернуть бы ништяг

Последний раз редактировалось mira, 20.04.2011 в 10:15. Причина: Добавлено сообщение
mira вне форума   Ответить с цитированием
Старый 20.04.2011, 21:20   #18
Пользователь
 
Аватар для ALF
 
Регистрация: 18.09.2010
Адрес: Киев
Сообщений: 70
Сказал Спасибо: 9
Имеет 10 спасибок в 6 сообщенях
ALF пока неопределено
По умолчанию

Кстати... Видел код для дампа пакетов...
Код:
 push [esp+4]
        call [OriginalDispatchNetworkQueuePtr]
        test eax,eax
        jz skip_
        mov edx,[esp+4]
        push eax
        push [edx]
        call NetworkPacketDump
        pop eax
skip_:
        ret 4
Может с него что то взять?
Я просто не совсем разобрался в нем(
__________________
Все относительно...
ALF вне форума   Ответить с цитированием
Старый 21.04.2011, 00:25   #19
Местный
 
Регистрация: 10.08.2010
Сообщений: 634
Сказал Спасибо: 22
Имеет 95 спасибок в 70 сообщенях
mira пока неопределено
По умолчанию

Цитата:
Сообщение от ALF Посмотреть сообщение
Кстати... Видел код для дампа пакетов...
Код:
 push [esp+4]
        call [OriginalDispatchNetworkQueuePtr] // вызываем оригинал
        test eax,eax // проверяем не вернул ли вызов ноль
        jz skip_        // вернул ноль - значит холостой вызов, ниче не делаем
        mov edx,[esp+4]  // чето типа суем указатель на пакет в ЕДХ
        push eax             // сохраняем ЕАХ
        push [edx]           // передаем указатель на пакет в функцию дампа
        call NetworkPacketDump // вызываем функцию дампа
        pop eax              // восстанавливаем ЕАХ
skip_:
        ret 4
// воостанавливаем стек исходя из соглашения cdecl
Может с него что то взять?
Я просто не совсем разобрался в нем(
незнаю откуда этот кусок но я его понимаю примерно так )
__________________
читернуть бы ништяг
mira вне форума   Ответить с цитированием
Старый 21.04.2011, 09:16   #20
Пользователь
 
Аватар для ALF
 
Регистрация: 18.09.2010
Адрес: Киев
Сообщений: 70
Сказал Спасибо: 9
Имеет 10 спасибок в 6 сообщенях
ALF пока неопределено
По умолчанию

Код:
	pop	eax					; Выталкиваем со стека Адрес Возврата в EAX (4 байта)
	push	ebp				; Толкаем в стек Адрес , которого начинаются аргументы (глубина стека)
	mov	ebp, esp			; в ebp теперь "Вершина" стека. Туда будут идти аргументы 
	mov ebx,[ebp+4]			; тут 4 или 8? мы же вытолкали адрес возврата (4 байта)
	pop ebp					; Выталкиваем то стека значения в регистр EBP.
	mov NetPk, ebx			; в NetPk у нас будет указатель на пакет
	pushad 		
	; какието операции с пакетами типа stdcall
	popad
	push	0ffffffffh
	push	eax				; востанавливаем адрес возврата
	ret
Проверьте)

Добавлено через 8 часов 34 минуты
Сейчас сделал вот так...
Код:
;=================================================================================
proc DispatchNetworkQueueHook	
	pop	eax					; Выталкиваем со стека Адрес Возврата в EAX (4 байта)
	push	ebp				; Толкаем в стек Адрес , которого начинаются аргументы (глубина стека)
	mov	ebp, esp			; в ebp теперь "Вершина" стека. Туда будут идти аргументы 
	pushad
	mov ebx,dword[ebp+08h]			; тут 4 или 8? мы же вытолкали адрес возврата (4 байта)
	test ebx,ebx
	jz skip
	mov [pNetPk], ebx		      ; в NetPk у нас будет указатель на пакет
	skip:
	popad
	push	0ffffffffh
	push	eax				; востанавливаем адрес возврата
	ret
endp
Код:
mov eax, dword[pNetPk]
movzx eax, [eax+NetworkPacket.id]
Всё работает, по идеи в EAX должен быть ID пакета. Но у меня там его Размер почему то...)
Структура у меня такая
Код:
struct NetworkPacket
	id      db ?
	pad1	db ?
	exid	db ?
	pad2	db ?
	_size	dd ?
	pad3	dd ?
	pdata	dd ?
ends
__________________
Все относительно...

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

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



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

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


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

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

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