![]() |
Sicherheit im Spiel!
Hallo Leute!
Vieleicht könnt ihr mir ja helfen?! Also ich gehe demnächst auf eine lan Party wo ich denn Server mache! Und wir brauchen eine gewiesse sicherheit das KEINER Cheatet! Ich brauch einen Code, das mein Programm nach einem bestimmten Programm auf der Festplatte sucht, und wenn er die Datei mit einem bestimmten Namen findet, ein OK in einer *.log speichert... Ich hoffe ihr wiesst was ich meine... Bitte helft mir... MfG: Sonic2000 |
Re: Sicherheit im Spiel!
Wie wäre es mit FindFirst und FindNext?
Aber bedenke: Man kann ein solches Programm ohne Probleme umbenennen. |
Re: Sicherheit im Spiel!
Zitat:
du kannst schon die Festplatte nach einem bestimmten Dateinamen oder gar einer bestimmten Datei (nach Inhalt) durchsuchen, aber ersteres dauert schon gut 1-10 Minuten, während letzteres in die Stunden gehen kann. Ich würde den RAM nach dem Programm durchsuchen. Hier in der DP gibts massig Code mit dem du eine Prozessliste kriegst. |
Re: Sicherheit im Spiel!
Achso... Man kann auch Dateien nach dem inhalt überprüfen??
OK! Wenn das geht... Ich kenne mich noch nicht sorichtig Gut mit Delphi aus! Ich hab vorkurzen erst mit Telnet Programme angefangen! Könntet ihr mir vieleicht denn Code hier in die Forum Schreiben? |
Re: Sicherheit im Spiel!
ne. kompletten code gibts hier nicht.
Außer in der Codelib ;) ![]() Da findest du einige Programme, mit denen du herausfinden kannst, welche Prozesse auf einem PC laufen. Du kannst die auch gezielt abschießen. |
Re: Sicherheit im Spiel!
Liste der Anhänge anzeigen (Anzahl: 1)
Mit Delphi kannst du jede beliebige Windows-Anwendung schreiben. Nur für z.B. einen Grafiktreiber wirst du wohl recht viel Assembler brauchen ;)
Dateien nach Inhalt überprüfen geht am besten über Hashes. Ich häng mal eine Hash-Unit an. Die musst du ins Lib-Verzeichniss von Delphi kopieren und dann in der Uses-Liste von Unit1 hinzufügen. Dann kannst du Hashes (ähnlich wie Quersummen) von Dateien erstellen. Dann brauchst du nur noch die Hashes der verbreitesten Trainer/Cheat-Programmen und liest dann von jeder einzelne Datei auf dem Computer ein, ob sie den selben Hash hat. Wenn ja --> dann ist ein Trainer gefunden, du musst also die Log-Datei schreiben. Alle Dateien auf der Festplatte kannst du mit diesen drei Funktionen finden:
Delphi-Quellcode:
procedure getdirsindir(const verzeichniss:string;var dirs:tstringlist);
var sd:string; s:tsearchrec; i:integer; begin dirs:=tstringlist.Create; sd:=dirup(verzeichniss); if findfirst(sd+'*.*',faanyfile,s)<>0 then begin sysutils.findclose(s); exit; end; dirs.add(s.Name); while findnext(s)=0 do dirs.Add(s.name); i:=0; while i<dirs.count do begin if ((dirs[i]='..') or (dirs[i]='.')) then begin dirs.Delete(i); i:=i-1; end else if not directoryexists(sd+dirs[i]) then begin dirs.Delete(i); i:=i-1; end; inc(i); end; sysutils.findclose(s); end; function getfilesindir(const verzeichniss,filter:string;var files:tstringlist):extended; var sd:string; s:tsearchrec; i:integer; e:extended; flt:string; begin if filter='' then flt:='*.*' else flt:=filter; e:=0; sd:=dirup(verzeichniss); result:=0; files:=tstringlist.Create; if findfirst(sd+flt,faanyfile,s)<>0 then begin sysutils.findclose(s); exit; end; files.add(s.Name); while findnext(s)=0 do begin files.Add(s.name); e:=e+s.Size; end; i:=0; while i<files.count do begin if ((files[i]='..') or (files[i]='.')) then begin files.Delete(i); i:=i-1; end else if directoryexists(sd+files[i]) then begin files.Delete(i); i:=i-1; end; inc(i); end; result:=e; sysutils.findclose(s); end; function gettreeindir(const root:string;var files,dirs:tstringlist;filter:string):extended; var sd:string; i,j:integer; fls,unterverzeichnisse:tstringlist; flt:string; groesse:extended; begin groesse:=0; if filter='' then flt:='*.*' else flt:=filter; sd:=dirup(root); files:=tstringlist.Create; dirs:=tstringlist.Create; dirs.Add(sd); i:=0; while i<dirs.Count do begin getdirsindir(dirs[i],unterverzeichnisse); for j:=0 to unterverzeichnisse.Count-1 do dirs.Add(dirup(dirs[i])+unterverzeichnisse.Strings[j]); inc(i); end; for i:=0 to dirs.Count-1 do begin groesse:=groesse+getfilesindir(dirs[i],flt,fls); for j:=0 to fls.Count-1 do files.Add(dirup(dirs[i])+fls.strings[j]); end; result:=groesse; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:06 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz