Ich würde dir raten OllyDBG zu benutzen da du für dwFindPattern eine OllyPulgin benutzten kannst.

Du hast den Fehler gemacht die Adressen wieder fest zu definieren.
Hier erst mal die dwFindPattern Funktion von GD:
Code:
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;
}
Dann musst du noch eins wissen und zwar das Handle von den Module. Ich habe das mit einen Snapshot gemacht.
So kannst du dir die richtigen Adressen holen:
Code:
LPMODULEENTRY32 lpsModule = GetModuleInfo( GetCurrentProcessId( ), "Test.exe" );
PBYTE pb = ( PBYTE )"\x76\x08\xF3\x0F\x11\x05\x00\x00\x00\x00";
DWORD Addr = dwFindPattern( ( DWORD )lpsModule->modBaseAddr, lpsModule->modBaseSize, pb, "xxxxxx????" );
Wenn was nicht klar ist, dann frag nochmal nach.
MfG