Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Sicherheit im Spiel! (https://www.delphipraxis.net/67514-sicherheit-im-spiel.html)

sonic2000 15. Apr 2006 21:04


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

3_of_8 15. Apr 2006 21:06

Re: Sicherheit im Spiel!
 
Wie wäre es mit FindFirst und FindNext?

Aber bedenke: Man kann ein solches Programm ohne Probleme umbenennen.

ichbins 15. Apr 2006 21:09

Re: Sicherheit im Spiel!
 
Zitat:

Zitat von 3_of_8
Aber bedenke: Man kann ein solches Programm ohne Probleme umbenennen.

oder selber schreiben...

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.

sonic2000 15. Apr 2006 21:21

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?

DGL-luke 15. Apr 2006 22:50

Re: Sicherheit im Spiel!
 
ne. kompletten code gibts hier nicht.

Außer in der Codelib ;)

Prozesse auflistenProzesse auflisten

Da findest du einige Programme, mit denen du herausfinden kannst, welche Prozesse auf einem PC laufen.
Du kannst die auch gezielt abschießen.

ichbins 15. Apr 2006 23:57

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