Anmeldungsdatum: Apr 2010
Beiträge: 168
|
Sorry!
CPP Code: // FindPattern DWORD CDetour::FindPattern(DWORD dwAddress, DWORD dwSize, BYTE* pbSig, char* szMask) { for(DWORD i = NULL; i < dwSize; i++) { if(DataCompare((BYTE*)(dwAddress + i), pbSig, szMask )) return (DWORD)(dwAddress + i); } return 0; } BOOL CDetour::DataCompare(const BYTE* pData, const BYTE* bSig, const char* szMask ) { for( ; *szMask; ++szMask, ++pData, ++bSig) { if( *szMask == 'x' && *pData != *bSig) return false; } return ( *szMask ) == NULL; }
CPP Code: // Scan DWORD dwOffset = CDetour::FindPattern((DWORD)GetModuleHandle(L"pbcl.dll"), 0xFFFFFFF, (BYTE*)"\x6A\x00\x50\x50\x33\xF1\xFF\x55\xC8\x59\x40\x50\xFF\x75\x08", "xxxxxxxxxxxxxxx"); // Danach das übliche Hooken wie Detour von GD
Fehler: Entweder das Game schliesst sich nach dem Injecten der Scan-DLL oder die FindPattern scant paar Adresse und dann ist schon wieder crash.
Mit Debugen der DLL bin ich nicht sehr weit gekommen. Kann es sein das meine Such-Range zu hoch ist?
0xFFFFFFF -> Heisst ja alles. Evlt. einschränken auf 0x1280000 ?
Oder mach ich mit der Mask etwas falsch?
Spiel: Crysis (32-Bit) / später auch 64-Bit DirectX: 9 Spielversion: 1.2.1 Injector: Winject Visual Studio 2010 Ultimate
|