DWORD FindDevice(DWORD Len)
{
DWORD dwObjBase = 0;
char infoBuf[MAX_PATH];
GetSystemDirectoryA(infoBuf, MAX_PATH);
strcat_s(infoBuf, MAX_PATH, "\\d3d9.dll");
dwObjBase = (DWORD)LoadLibraryA(infoBuf);
while (dwObjBase++ < dwObjBase + Len)
{
if ((*(WORD*)(dwObjBase + 0x00)) == 0x06C7 &&
(*(WORD*)(dwObjBase + 0x06)) == 0x8689 &&
(*(WORD*)(dwObjBase + 0x0C)) == 0x8689)
{
dwObjBase += 2;
break;
}
}
return(dwObjBase);
};
void* GetDeviceAddress(int VTableIndex)
{
PDWORD VTable;
*(DWORD*)&VTable = *(DWORD*)FindDevice(0x128000);
return reinterpret_cast<void*>(VTable[VTableIndex]);
};