Anmeldungsdatum: Nov 2011
Beiträge: 65
|
Wow, vieeelen Dank! Habe mir gerade nochmal andere Beiträge von dir hier im Forum angeguckt und verstehe nun das Prinzip von den Pattern.
Das fertig zusammengesetzte Programm würde so aussehen:
CPP Code: #include <iostream> #include <windows.h> using namespace std; 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 FindPattern(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; } int main(int argc, char *argv[]) { HMODULE StartAdresse; int Size; DWORD Adress; StartAdresse = GetModuleHandle("altitude.exe"); Size = 1212416; Adress = FindPattern((DWORD) StartAdresse, (DWORD) Size, (PBYTE) "\x8B\xCE\x90\x90\x90\xE8\x00\x00\x00\x00\x8B\x4C\x24\x00\x8B\xB1\x00\x00\x00\x00\x83\xFE\x00\x0F\x84\x00\x00\x00\x00\x8B\xB1", "xxxxxx????xxx?xx????xxxxx????xx"); Adress += 21; cout << Adress << endl; system("PAUSE"); return EXIT_SUCCESS; }
Jetzt habe ich noch die Frage, ob das so stimmt? Als Adresse bekomme ich den wert 445617 raus. Und jetzt kommt wahrscheinlich die dümmste Frage...was fange ich mit der an? Das ist ja ein Offset von einer bestimmten Adresse, oder?
|