Code:
__declspec(naked) HRESULT WINAPI EndSceneMidfunction(VOID)
{
static LPDIRECT3DDEVICE9 pDevice;
__asm
{
MOV ECX, DWORD PTR DS : [EAX]
MOV EDX, DWORD PTR DS : [ECX + 0xA8]
MOV DWORD PTR DS : [pDevice], EAX
PUSH EAX
CALL EDX
PUSHAD
}
DesenharMenu(pDevice);
__asm
{
POPAD
RETN
}
}
DWORD WINAPI D3DHook(PVOID)
{
do
{
DWORD WarRock = (DWORD) GetModuleHandle(STRING_WARROCK);
if (WarRock != NULL)
EndScene = FindPattern(WarRock, 0x6CD000, (PBYTE)"\x8B\x08\x8B\x91\x00\x00\x00\x00\x50\xFF\xD2\xC3\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\x85\xC9\x75\x08\xB8\x00\x00\x00\x00\xC2\x04\x00", "xxxx????xxxxxxxxxxxxxxxxxxxxxxx????xxx");
} while (!EndScene);
MakeJMP((PBYTE) EndScene, (DWORD) EndSceneMidfunction, 8);
return FALSE;
}
BOOL WINAPI DllMain(HMODULE hModule, DWORD dwReason, LPVOID lpReserved)
{
if (dwReason == DLL_PROCESS_ATTACH)
{
CreateThread(0, 0, &D3DHook, 0, 0, 0);
}
return TRUE;
}