Eine exe welche auf der Festpatte gespeichert ist, ändert sich doch eigentlich nach start nicht, sondern sie wird in den Speicher geladen und der Wert im RAM ändert sich, oder irre ich mich da?
Der Binärcode auf der festplatte müsste demnach doch unabhängig davon, ob das Programm läuft, oder nicht, identisch sein, oder

Ich bin durch MD5 darauf gekommen.
Wenn ich die Exe sich selber hashen lasse erhalte ich einen anderen hash, als wenn ich die Exe durch ein zweites Programm hashe:
Aus der Exe selbst:
Code: Alles auswählen
procedure TForm1.Button1Click(Sender: TObject);
begin
Label1.Caption := MD5Print(MD5File(Application.ExeName));
end;
Code: Alles auswählen
procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Lines.Add('Dateihash für ' + Edit1.Text);
Memo1.Lines.Add(MD5Print(MD5File(Edit1.Text)));
end;
Das externe Programm ergibt:
wenn die Exe nicht läuft: c629c81354b56f20bf64218b0851c55d
wenn die Exe läuft aber: d41d8cd98f00b204e9800998ecf8427e
Wie verändert sich nun die Exe wärend der Laufzeit, so das diese unterschiedlichen Ergebnisse zustande kommen. Und wieso hasht die Exe sich selbst nicht so, wie das externe Programm die laufende Exe hasht?