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

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

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 04.02.2011, 00:55   #1
Местный
 
Аватар для supernewbie
 
Регистрация: 23.09.2009
Сообщений: 1,232
Сказал Спасибо: 119
Имеет 172 спасибок в 134 сообщенях
supernewbie пока неопределено
По умолчанию

Цитата:
Сообщение от destructor Посмотреть сообщение
сделал?
сделал
клиент вырубается, но намнооооого дольше работает перед этим, а если отключить то еще дольше, но потом все равно либо крит, либо ошибка, либо вообще офается
__________________
Начало.

Последний раз редактировалось supernewbie, 04.02.2011 в 01:03.
supernewbie вне форума   Ответить с цитированием
Старый 04.02.2011, 01:14   #2
Рыцарь
 
Аватар для destructor
 
Регистрация: 26.06.2009
Сообщений: 2,433
Сказал Спасибо: 154
Имеет 692 спасибок в 426 сообщенях
destructor на пути к лучшему
По умолчанию

сделай такой перехват:

hook_addnet(packet)
{
original_addnet(packet);
}

Добавлено через 15 секунд
будет вылетать?
__________________
Шожиделать.. ботить хочется..

Последний раз редактировалось destructor, 04.02.2011 в 01:14. Причина: Добавлено сообщение
destructor вне форума   Ответить с цитированием
Старый 04.02.2011, 07:09   #3
Местный
 
Аватар для supernewbie
 
Регистрация: 23.09.2009
Сообщений: 1,232
Сказал Спасибо: 119
Имеет 172 спасибок в 134 сообщенях
supernewbie пока неопределено
По умолчанию

сейчас посмотрим, но судя по тому что чем меньше операций выполняется в хук-процедуре то ждать придется долго, часа 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
__________________
Начало.

Последний раз редактировалось supernewbie, 04.02.2011 в 07:09. Причина: Добавлено сообщение
supernewbie вне форума   Ответить с цитированием
Старый 04.02.2011, 13:43   #4
Рыцарь
 
Аватар для destructor
 
Регистрация: 26.06.2009
Сообщений: 2,433
Сказал Спасибо: 154
Имеет 692 спасибок в 426 сообщенях
destructor на пути к лучшему
По умолчанию

Цитата:
Сообщение от supernewbie Посмотреть сообщение
плохая: критовал сенд пакет
ну понятно, ищем крит в одном месте и приэтом еще стопицот срочек кода работают

Добавлено через 3 минуты
Цитата:
Сообщение от supernewbie Посмотреть сообщение
и как это понимать

хук Queue включен, хук SendPacket выключен - нет критов

хук Queue выключен, хук SendPacket включен - нет критов

хук Queue включен, хук SendPacket включен - криты
гдето сбыдлокодил
__________________
Шожиделать.. ботить хочется..

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

оставил один хук на сенд пакете... ну как так то, ощущение что после прохождения хук процедуры остается мусор в стеке, который забирает в себя л2, потом она пухнет от мусора и...) но это я уже наверное х**ню несу..

Добавлено через 44 минуты
с одним только сенд пакетом уже около часа нету критов

PS стою в самом людном месте и клиент посылает ValidatePosition каждые 5 секунд

Добавлено через 21 минуту
это может означать одно из трех...
1. Частый вызов ведет к критам, сенд пакет вызывается в разы реже
2. Опять же скорость заполнения памяти мусором, если таковой вооще имеется, в разы ниже и, возможно, л2 успевает очищать свою (мою) память.
3. Ошибка не связанна с памятью вовсе

расположены в порядке возрастания вероятности

Добавлено через 25 минут
короче всё ясно, в AddNetworkQueue вообще нече делать нельзя, т.к. сокеты, баферы и все такое, делаю тот же цикл в сенд пакете и всё держится, хотя пакетов конечно меньше от клиента...

Добавлено через 31 секунду
придется вы*бть диспатч, за любую инфу о нём буду благодарен..

Добавлено через 8 минут
диспатч вообще железный

for i:=0 to 1000000 do s:=s+'1'; выдержал 5 минут) после чего правда мой комп затрещал, я испугался и вырубил л2) ну ладно... давайте разберемся чекак там...
__________________
Начало.

Последний раз редактировалось supernewbie, 04.02.2011 в 09:31. Причина: Добавлено сообщение
supernewbie вне форума   Ответить с цитированием
Старый 04.02.2011, 18:07   #6
Местный
 
Аватар для supernewbie
 
Регистрация: 23.09.2009
Сообщений: 1,232
Сказал Спасибо: 119
Имеет 172 спасибок в 134 сообщенях
supernewbie пока неопределено
По умолчанию

щас переписал всё чистенько, классы сделал
критует именно АддНетворкКверти, что с СендПакетом, что без.
при этом если туже самую процедуру поставить на выолнение скажем при том же ДипатчНетворкКверти то всё окей...
__________________
Начало.
supernewbie вне форума   Ответить с цитированием
Старый 04.02.2011, 19:37   #7
Рыцарь
 
Аватар для destructor
 
Регистрация: 26.06.2009
Сообщений: 2,433
Сказал Спасибо: 154
Имеет 692 спасибок в 426 сообщенях
destructor на пути к лучшему
По умолчанию

Цитата:
Сообщение от supernewbie Посмотреть сообщение
АддНетворкКверти
тут параметр указатель на указатель на структуру с пакетом
Цитата:
Сообщение от supernewbie Посмотреть сообщение
ДипатчНетворкКверти
тут параметр указатель на структуру с пакетом

Добавлено через 27 секунд
или наоборот
__________________
Шожиделать.. ботить хочется..

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

наоборот)

Добавлено через 36 минут
только вот в самом начале то в диспатч приходит указатель на 0!

кто-то там говорил что она как-то делает что-то и он становится указателем на пакет

Добавлено через 4 часа 8 минут
всё, понял, он постоянно пытается вытащить последний пакет...

Добавлено через 5 минут
delphi Код:
procedure DispatchNetworkQueue_Parsing(p:pointer); stdcall; var   np:TNetworkPacket; begin if (Cardinal(p^)<>0) and (last<>Pointer(p^)) then begin last:=Pointer(p^); np:=TNetworkPacket(pointer(p^)^); Writeln('FromServer:'+inttostr(np.size)); end; end;

что тут не так?
размер всегда 1, байты разные вообще
__________________
Начало.

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

да че за фигня

delphi Код:
procedure DispatchNetworkQueue_Parsing(p:pointer); stdcall; var   np:PPNetworkPacket; begin if (Cardinal(p^)<>0) and (last<>Pointer(p^)) then begin last:=Pointer(p^); np:=p; Writeln('FromServer:'+inttostr(cardinal(p))); Writeln('FromServer:'+inttostr(cardinal(p^))); Writeln('FromServer:'+inttostr(byte(np^.id))); end; end;

1. адрес
2. адрес по адресу
3. ид нетворкпакета по адресу 2

че-то странно
Миниатюры
Нажмите на изображение для увеличения
Название: 4124141214.PNG
Просмотров: 36
Размер:	14.3 Кб
ID:	1850  
__________________
Начало.
supernewbie вне форума   Ответить с цитированием
Старый 05.02.2011, 07:02   #10
Местный
 
Аватар для supernewbie
 
Регистрация: 23.09.2009
Сообщений: 1,232
Сказал Спасибо: 119
Имеет 172 спасибок в 134 сообщенях
supernewbie пока неопределено
По умолчанию

помогите(

Добавлено через 50 минут
да помогите же кто-нибудь

Добавлено через 27 минут
попалил как делал голд финч, он почему-то сначала вызывал оригинальную, а потом палил по адресу пакет, сделал также но че-то опять муть какая-то

delphi Код:
procedure DispatchNetworkQueue_Parsing(np:PNetworkPacket); stdcall; begin if np=nil then Exit; WriteLn(inttohex(np.id,2)); exit; end; procedure DispatchNetworkQueue_Hook(np:pointer); stdcall; asm push np call [DispatchNetworkQueue_Original] pushad push [np] call DispatchNetworkQueue_Parsing popad end;

Добавлено через 3 минуты
да помогите мать вашу, че за гавно творится то я не понимаю((

Добавлено через 14 минут
а всё, разобрался...

Добавлено через 6 минут
с горем попалам получилось так
delphi Код:
procedure DispatchNetworkQueue_Parsing(p1:pointer); stdcall; var   np:PNetworkPacket;   p:pointer; begin p:=pointer(p1^); if (p=nil) or (last<>nil) and (last=p) then Exit; last:=p; np:=PNetworkPacket(p); WriteLn(inttohex(np.id,2)); exit; end; procedure DispatchNetworkQueue_Hook(np:pointer); stdcall; asm push np call [DispatchNetworkQueue_Original] pushad push np call DispatchNetworkQueue_Parsing popad end;

Добавлено через 2 часа 45 минут
всё, сделал парсинг параметров СендПакета и ДиспатчНетворкКверти, по факту имею траффик с сервера\клиента

поехали дальше, надо сделать форму так, чтобы она не исчезала...
__________________
Начало.

Последний раз редактировалось supernewbie, 05.02.2011 в 07:02. Причина: Добавлено сообщение
supernewbie вне форума   Ответить с цитированием
Ответ

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



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

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


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

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

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