Code: Alles auswählen
const
filename = 'data.txt';
var
rec: TRec;
TRec = record
Data: array[0..3] of Char;
passwd: array[0..39] of Char;
end;
{ TForm1 }
procedure TForm1.FormCreate(Sender: TObject);
begin
rec.passwd := 'passwort';
Label1.Caption := rec.passwd;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
f: file of char;
i, l: integer;
begin
AssignFile(f, filename);
Reset(f);
l := FileSize(filename); // Hier ein grosser Fehler
for i := 0 to l-1 do begin
Read(f, rec.Data[i]); // Heir gibt es den Überlauf !
end;
CloseFile(f);
Label1.Caption := rec.passwd;
end;
Das Programm hat ein Zugang welcher durch ein Passwort geschützt ist, im Beispiel "passwort", welches der Hacker natürlich nicht kennt.
Da aber das Programm einen Fehler hat, hat der Hacker die data.txt abgeändert welche dann folgenden Inhalt hat: "abcd12345678".
Somit heisst das Passwort auf einmal nicht mehr "passwort", sondern "12345678" und schon hat der Hacker Zugang zum geschützten Bereich.
Was mich aber erstaunt, das es in der Praxis so viele solche Überlauffehler gibt, welche die Hacker dann für einen Trojaner ausnutzen können.

Man denke nur an Windows, welches hunderte solche Fehler enthält, dabei könnte man solche Programmier-Fehler sehr einfach beheben.