ПолезностиИсключительно для полезных тем из других разделов. Темы тут не создаются!
Темы сюда перемещаются из других разделов, и на их старых местах остаются постоянные перенаправления.
Не дождался помощи,пришлось сделать самому. Все отлично работает. В таргет дагера можно взять, но ничего нельзя сделать, т.е. нажимаешь атаковать таргет слетает. Осталось научиться рисовать в окне линейки. КТонить поможет?=) Способ директХ не подходит, так как там нужно хукать до инициализации, а я подключаюсь к игре после.
Последний раз редактировалось Guzh, 06.10.2010 в 03:06.
Guzh, открой самое начало этой темы, там же написано как рисовать используя функции л2.
Это ответ такой?=) Понятно все с вами=). Перефразирую.
Вначале написано,что рисуем после FPlayerSceneNode::Render(class FRenderInterface *), используем FCanvasUtil. Вопрос, как использовать FCanvasUtil ? Создаем вот этим FCanvasUtil::FCanvasUtil(FRenderTarget *,FRenderInterface *,EVertexShader,EPixelShader). Подскажите что передавать в виде параметров? Где их взять.
Или так, есть ли способ и как рисовать в окне игры через DX но перехватывать после инициализации?
Последний раз редактировалось Guzh, 06.10.2010 в 16:56.
Это ответ такой?=) Понятно все с вами=). Перефразирую.
Вначале написано,что рисуем после FPlayerSceneNode::Render(class FRenderInterface *), используем FCanvasUtil. Вопрос, как использовать FCanvasUtil ? Создаем вот этим FCanvasUtil::FCanvasUtil(FRenderTarget *,FRenderInterface *,EVertexShader,EPixelShader). Подскажите что передавать в виде параметров? Где их взять.
Или так, есть ли способ и как рисовать в окне игры через DX но перехватывать после инициализации?
написали ведь что проще перехватить уже готовый обьект чем создавать новый, зачем тебе лезть в дебри
невтыкаю что за маневры выполняет 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.
Причина: Добавлено сообщение
my_hook ничего не делает,просто пропускает через себя
а в CX и лежит [ebp+74h+var_254], только запись другая [ebp-1E0h]
Добавлено через 10 минут
Цитата:
Сообщение от mira
а перехватить ченеть типа этого невозможно?)
так я получаю указатели на обьект нетворкхандлера
Там я норм перехватываю, а тут я пытаюсь впихнуться в момент,когда объект Fcanvasutils уже создан, но еще не удален, как вверху предлагали воспользоваться уже готовым объектом
Последний раз редактировалось Guzh, 06.10.2010 в 20:47.
Причина: Добавлено сообщение
my_hook ничего не делает,просто пропускает через себя
а в CX и лежит [ebp+74h+var_254], только запись другая [ebp-1E0h]
Добавлено через 10 минут
Там я норм перехватываю, а тут я пытаюсь впихнуться в момент,когда объект Fcanvasutils уже создан, но еще не удален, как вверху предлагали воспользоваться уже готовым объектом
уверен что var_254 этьо константа? и вообще что адреса не меняютса, ты же пользуеш прямую адресацию а не относительную
уверен что var_254 этьо константа? и вообще что адреса не меняютса, ты же пользуеш прямую адресацию а не относительную
Программа перед тем,как сделать хук,скопировала то,что там было ( lea ecx, [ebp-1E0h]) и вычислила адрес для возврата и добавила его в пуш(CODE:0FD436BC push 202511CDh). Если адрес меняется только при загрузке, то все норм будет, а если в течении сеанса меняется(что наврядли), то будет ошибка