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

Полезности Исключительно для полезных тем из других разделов.
Темы тут не создаются!
Темы сюда перемещаются из других разделов, и на их старых местах остаются постоянные перенаправления.

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 06.10.2010, 20:37   #1
Местный
 
Регистрация: 10.08.2010
Сообщений: 634
Сказал Спасибо: 22
Имеет 95 спасибок в 70 сообщенях
mira пока неопределено
По умолчанию

невтыкаю что за маневры выполняет my_hook )))
ложит в ЕСХ какуюто локальную переменную
сует в стек как я понял адрес возврата.

в итоге ??1FCanvasUtil@@UAE@XZ вызываетса с какимто непонятным "экземпляром класса" когда в ЕСХ должен лежать обьект из [ebp+74h+var_254]

Добавлено через 13 минут
Код:
procedure __AddNetworkQueue_Hook;
begin
 asm
  pushad
  mov EAX , ECX
  mov UNETWORKHANDLER_a, EAX // сохряняем в глобальной переменной указатель на обьект end;
 EnterCriticalSection(CSSS);
  //получаем указатель на сендпакет
  pSendPacket:=PPointer(Pdword(PDword(dword(UNETWORKHANDLER_a)+$48)^)^+$6C)^;
  ppSendPacket:=Pointer(Pdword(PDword(dword(UNETWORKHANDLER_a)+$48)^)^+$6C);
  pNetworkObject:=Ppointer(dword(UNETWORKHANDLER_a)+$48)^;
  // снимает сплайсинг отменяем перехват
  TTM.ResetTrap(phtrap);
  phtrap:=nil;
 LeaveCriticalSection(CSSS);
 IDirect3DDevice9H(idev_).StrWrite('done : packet trap unmounted',0);
 // устанавливаем перехват адднетворк... через VMT таблицу (сплайс для нас слишком грубо)
 InitVMTHandlers;
 // устанавливаем хук на сендпакет тоже
 TL2C.nhandler._hphandler:=TTM.SetupIndirectTrap(pointer(ppSendPacket),0,@_sendpacket_trap,@_postsendpacket_trap,false);
 //восстанавливаем все регистры и стек
 asm
  popad
  xor eax, eax
  not eax
  ret 004
 end;
end;


function HandleNetworkTrap:BOOL;
var
 forig : pointer;
 dll:DWORD;
begin
 EnterCriticalSection(CSSS);
 try
 try
 result:=false;
 if UNETWORKHANDLER_a<>nil then exit;
 dll:=GetModuleHandle('engine.dll');
 forig:=GetProcAddress(dll,'?AddNetworkQueue@UNetworkHandler@@UAEHPAUNetworkPacket@@@Z');
 //делаем хук через сплайсинг
 phtrap:=TTM.SetupHardTrap(forig,0,@__AddNetworkQueue_Hook);
 if phtrap<>nil then begin
  IDirect3DDevice9H(idev_).StrWrite('done : packet trap mounted',0);
  result:=true;
 end;
 if phtrap=nil then begin
  IDirect3DDevice9H(idev_).StrWrite('error : mounting packet trap',0);
  exit;
 end;
 finally
  LeaveCriticalSection(CSSS);
 end;
 except
  smessage('error : setup trap critical error');
 end
end;
а перехватить ченеть типа этого невозможно?)
так я получаю указатели на обьект нетворкхандлера

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

  CoderX :: Forums > Основные форумы > Полезности


Опции темы
Опции просмотра
Комбинированный вид Комбинированный вид

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

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


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

vBulletin style designed by MSC Team.
Powered by vBulletin® Version 3.6.11
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: zCarot
Locations of visitors to this page
Rambler's Top100

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