Hier mal meine Pattern Funktion(en):
Verwendung: ruft FindPattern() mit einem bstring (mehr dazu gleich), der BaseAddress und der Size des Moduls / w/e auf. Alternativ könnt ihr auch FindPattern mit dem bstring, der Size und dem Namen des Moduls aufrufen.
Als Default beim Modul ist momentan XTrapVa.dll eingetragen.
std::bstring ist so definiert:
namespace std
{
typedef basic_string<BYTE> bstring;
}
um einen zu erhalten, ruft ihr PatternString(PatternArray, size); auf, wobei PatternArray der Zeiger auf euer Byte-Array ist, in dem das Pattern steht und size ist die Größe des Arrays. Als return-Value gibt es dann eben einen std::bstring, den ihr für FindPattern verwenden könnt.
Unbekannte Werte (in der Funktion, die durchs Netz fliegt mit "?" gekennzeichnet) können durch 0x00 als Wert gesucht werden.
Als return-Value von FindPattern gibt es einen PUINT_PTR, also einen Zeiger, der auf die Adresse zeigt, die die Funktion findet.
Beispiel zur Verwendung:
#include "Pattern.h"
BYTE enumProcessesPattern[] = { 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
std::bstring enumProcessesPatternString = PatternString(enumProcessesPattern, 8);
pEnumProcesses = FindPattern(enumProcessesPatternString /* std::bstring */, 0x200000 /* size */, "XTrapVa.dll" /* Modul */);
Kann man alles noch besser machen und so, ja, stimmt, aber ich hab das auch nur auf die Schnelle geschrieben, eventuell gibt es mal ein Update.
Kritik und Fragen per PN oder so.