Join Date: Jan 2010
Posts: 4
|
Hey,
also ich würde gerne einen FindPattern schreiben, der die .exe Datei in mein Programm lädt und anschließend auf den bestimmten Adressen verweißt. Weiß ich nicht, wie ich die FindPattern Funktion auf ein Programm anwende, welches ich in mein Programm lade, aber mit einer .dll Injektion funktioniert es. Jetzt würde ich gerne fragen, wie ich das schaffe. Ich würde gerne eine Konsole benutzen und keine .dll. Wenn ich jetzt mithilfe des fstream Header die .exe im Binary Mode lade, wie kann ich dann dadrin die Adressen suchen? Hier sind die beiden Pattern Funktionen, die ich benutze.
CPP Code: bool bDataCompare(const unsigned char* pData, const unsigned char* bMask, const char* szMask) { for(;*szMask;++szMask,++pData,++bMask) if(*szMask=='x' && *pData!=*bMask ) return false; return (*szMask) == 0; } unsigned long dwFindPattern( unsigned char *bMask,char * szMask, unsigned long dw_Address, unsigned long dw_Len) { for(unsigned long i=0; i < dw_Len; i++) if( bDataCompare( (unsigned char*)( dw_Address+i ),bMask,szMask) ) return (unsigned long)(dw_Address+i); return 0; }
Bis jetzt sieht mein Code so aus:
CPP Code: ifstream::pos_type size; char* memblock; char test[20]; int warte; DWORD Offset; int main() { ifstream file("Spiel.exe", ios::out | ios::app | ios::binary); if(file.is_open()) { size = file.tellg(); memblock = new char [size]; file.seekg(0, ios::beg); file.read(memblock, size); //Offset = dwFindPattern((PBYTE)"\x55\x8B\xEC\x6A\xFF\x68\x00\x00\x00\x00\x64\xA1\x00\x00\x00\x00\x50\x64\x89\x25\x00\x00\x00\x00\x51\x8B\x4D\x08\x53\x56\x8B\x35\x00\x00\x00\x00", "xxxxxx????xx????xxxx????xxxxxxxx????", 0x401000, 0x29e000); } else { cout << "Datei konnte nicht geoeffnet werden!"; cin >> warte; } Offset = *(DWORD*) Offset; //sprintf(test, "Adresse: %x", Offset); cout << "Adresseee: %x" << Offset; cin >> warte; file.close(); return 0; }
Ich hoffe einer kann mir helfen. Gruß
|