Anmeldungsdatum: Mär 2011
Beiträge: 127
Benutzer-Bewertung:
|
hi, ich versuche mich grade ma am D3D-Hooking. Ich versuche die Endscene zu hooken. habe mir ein paar tuts angeschaut und in denen als folgenden Code gesehen:
CPP Code: int (__stdcall* EndScene_t)(LPDIRECT3DDEVICE9); int __stdcall MyEndScene(LPDIRECT3DDEVICE9); bool bDataCompare(const BYTE* pData, const BYTE* bMask, const char* szMask) { for(;*szMask;++szMask,++pData,++bMask) if(*szMask=='x' && *pData!=*bMask ) return false; return (*szMask) == NULL; } DWORD dwFindPattern(DWORD dwAddress,DWORD dwLen,BYTE *bMask,char * szMask) { for(DWORD i=0; i < dwLen; i++) { if( bDataCompare( (BYTE*)( dwAddress+i ),bMask,szMask) ) return (DWORD)(dwAddress+i); } return 0; } void hookd3d() { HMODULE hModule = NULL; while(!hModule) { hModule = GetModuleHandleA("d3d9.dll") ; Sleep(100) ; } DWORD* vmt = 0 ; DWORD FoundPattern = dwFindPattern((DWORD)hModule,0x128000,(PBYTE)"\xC7\x06\x00\x00\x00\x00\x89\x86\x00\x00\x00\x00\x89\x86","xx????xx????xx") ; vmt = (DWORD*)(FoundPattern+2); // &vmt[42] enthält die Addy der EndScene-Funktion DetourFunction((PBYTE)&vmt[42],(PBYTE)MyEndScene); }
Also der wert von &vmt[42] scheint in ordnung zu sein. jedoch wird MyEndScene nicht gecallt. Wäre schön wen ihr mir helfen könntet
|