000
05.03.2005, 15:35 Uhr
~EricP
Gast
|
Hallo Leute!
Ich versuche einen Kopierschutzscanner zu basteln. Da ich aber meistens nur .exe und .dll Dateien zu scannen habe kommt es zu Problemen. Der nachfolgende Quellcode versucht den string "BoG" in einer Datei zu finden. Das Problem ist, dass das Programm nur Teile von der Datei ließt, soll heißen dort wo "BoG" vorkommt würd nicht gelesen. Das liegt scheinbar daran das unmittelbar vor "BoG" ein Haufen voller "00" Zeichen kommt also in Hexadezimal ausgedrückt. Einfach mal ne .exe mit nem Hexeditior öffnen und dann sieht man es.
Ich habe versucht heraus zu finden woran es liegen könnte und bin mir sicher, dass es mit den "nOpenFlags" zu tun hat. Hab davon aber keine Ahnung. Wäre nett wenn mir einer eine Lösung schreiben könnte oder ne andere Klasse als CFile die besser binär einlesen kann.
C++: |
Kopierschutz = ""; // ist ein CString char str[1024]; int bytes = sizeof(str); // bytes würd auf 1024 gesetzt CFile datei(adresse, CFile::modeRead | CFile::osNoBuffer); //adresse ist ein CString while (bytes == sizeof(str)) { bytes = datei.Read(str, sizeof(str)); //1024 Zeichen werden in str eingelesen und es würd die Zahl der tatsächlich gelesenen bytes auf die Variable bytes übertragen Kopierschutz = str; if (Kopierschutz.Find("BoG", 0) != -1) //Es würd im string Kopierschutz nach "BoG" gesucht. { textbox.AddString("SafeDisc gefunden!"); } }
|
|