-
Автор темы
- #1
Здравствуйте,
столкнулся с проблемой хука CreateDevice'a в игре GTA:SA. Проблема в следующем: хук наверняка рабочий, но проблема в его иницилизации, если например я буду иницилизировать хук в точке входа DLL происходит краш. Если же я иницилизирую хук когда игра уже полностью загружена - всё нормально, но вот только смысл хука уже пропал, так как девайс уже создан. Надеюсь на помощь от знающих. Спасибо. Ниже код.
столкнулся с проблемой хука CreateDevice'a в игре GTA:SA. Проблема в следующем: хук наверняка рабочий, но проблема в его иницилизации, если например я буду иницилизировать хук в точке входа DLL происходит краш. Если же я иницилизирую хук когда игра уже полностью загружена - всё нормально, но вот только смысл хука уже пропал, так как девайс уже создан. Надеюсь на помощь от знающих. Спасибо. Ниже код.
C++:
// d3d9_hook.cpp
void CD3DHook::InitDevice()
{
void** vTableIDirect3D9 = *(void***)(*(DWORD*)0xC97C20); // 0xC97C20 - стат. указатель на IDirect3D9
VMTHookManager* vmtHookIDirect3D9 = new VMTHookManager(vTableIDirect3D9);
orig_CreateDevice = (tCreateDevice)vmtHookIDirect3D9->Hook(16, (void*)myCreateDevice);
}
// main.cpp
void mainThread(PVOID)
{
pD3DHook->InitDevice();
}
BOOL APIENTRY DllMain(HMODULE hModule, DWORD dwReasonForCall, LPVOID lpReserved)
{
if (dwReasonForCall == DLL_PROCESS_ATTACH)
{
_beginthread(mainThread, NULL, NULL);
}
return TRUE;
}
Последнее редактирование: