сейчас посмотрим, но судя по тому что чем меньше операций выполняется в хук-процедуре то ждать придется долго, часа 2
Добавлено через 2 минуты
ждём, но я думаю что не будет, или вылетит часов через 12)
хотя может проблема в мусоре в стеке или еще в чём-то, а тут мусор не создается вроде
Добавлено через 49 секунд
ведь при procedure AddNetworkQueue_hook(np:PNetworkPacket); stdcall; он удалит поинтер из стека при этом?
Добавлено через 16 минут
щас сделал чисто чтобы он писал FromServer и FromClient, посмотрим на сколько его хватит
Добавлено через 14 минут
пришел в место жуткого флуда, посмотрим... пока нашел утечку памяти из-за того что не блокировал пакет от клиента попросту не вызывая сендпакет, сейчас заменяю ид у пакета, посмотрим...
Добавлено через 9 минут
есть две новости, хорошая и плохая
хорошая: с хуком АддНетворкКверти все было впорядке
плохая: критовал сенд пакет
Добавлено через 2 минуты
так... по ходу...
Добавлено через 4 минуты
нашел! нашел мать вашу!
Добавлено через 7 минут
*ля, ну и привередливый сидекл, вызываю процедуру - крит, делаю ТОЖЕ самое в хук-процедуре - всё ок, ох мать... мб это из-за того что вызываемая функция возвращает булеан...
Добавлено через 3 минуты
походу делфи внатуре опять п*здит стек, придется запихивать параметры самому, и делать кал а не джамп...
Добавлено через 2 минуты
уф... щас сделаю, госпади, как ж всё просто, но главное... как странно вообще
Добавлено через 51 минуту
странно, вот этот код то работает то нет...
delphi Код:
procedure SendPacket_hook; stdcall
begin
asm
mov tmp1, esp //записываю адрес первого параметра в стеке в tmp1
pushad //сохраняю регистры
end;
ParsingFromClient; //вызываю парсинг
asm
popad //возвращаю регистрам сохраненные значения
jmp SendPacket_origAddr //прыгаю в оригинальный сенд пакет
end;
end;
иногда, при чтении адресов вот таким образом критует
delphi Код:
procedure ParsingFromClient; stdcall;
var
format:string;
params:array [0..1023] of pointer;
begin
ShitPacket:=false; //дерьмо-пакет ложь
tmp1:=pointer(cardinal(tmp1)+12); //прибавляю адрес так, чтобы это был адрес первого параметра Пакета, 12 - 4 на адрес возврата, 4 на указатель на нетворк хандлер или мб не на него), 4 на пчар формата пакета
format:=string(Pointer(Cardinal(tmp1)-4)^); // записываю формат в стринг
WriteLn('FromClient, id:'+inttohex(byte(tmp1^),2)+'; size:'+inttostr(length(format))); //записываю строку в кмд
// скорее всего адреса не те, но адрес стека вроде записан верно...
exit;
end;
дестр, нид хелпь(
Добавлено через 38 минут
что?! какого худенького
if (length(format)>0) and (format[0]='c') then в этом проблема?!
Добавлено через 10 минут
да что за нахер..
Добавлено через 11 минут
всё, проблема 100% в этом
format:=pchar(pointer(Cardinal(tmp1)+8)^);
читаю из жопы, инфа 99%
Добавлено через 12 минут
и как это понимать
хук Queue включен, хук SendPacket выключен - нет критов
хук Queue выключен, хук SendPacket включен - нет критов
хук Queue включен, хук SendPacket включен - криты
вопрос как бы задается сам собой, какого х*я?!!! эти хуки как-то связанны??? ЧТО ПРОИСХОДИТ МВТЬ ВАШУ
Добавлено через 38 минут
*ЛЛЛЛЛЛЛЛЛЛЛЛЛЛЛЛЛЛЛЛЛЛЯЯЯЯЯЯЯЯЯЯЯДЬ, теперь еще и указатель на метод класса своего же не могу получить ай *ЛЯДЬ
Добавлено через 48 минут
так, щас сделал класс TAddNetworkQueueHook и че-то не работает...
Добавлено через 47 минут
*ля пздц с классами вообще ничерта не работает, ай Б**ДЬ
Добавлено через 6 минут
нахер я их делал... половину переменных пришлось делать глобальными, ай
Добавлено через 3 минуты
ну зато теперь стало легче тестить... вроде бы, как минимум удобнее хукать стало) AddNetworkQueue.SetHook и AddNetworkQueue.DelHook и тд)
Добавлено через 18 минут
всё, ошибка официально в AddNetworkQueue