Hallo a.def
schau dir nach deinen nächsten Ferien dann nochmal an, wie du den Hash Wert ins File schreibst. Es ist echt keine Zauberei.
Wenn du den Hash Wert ans Ende des Files schreiben willst, dann ist es natürlich einfacher. [ Aber jemand der deine exe abändern will, sieht sofort, dass am Ende was steht und...]
So geht's [du musst den Code natürlich noch absichern - ich mach's mit Absicht nicht, damit du das Wesentliche siehst]:
Hash Wert ans Ende des Files schreiben:
Delphi-Quellcode:
procedure SchreibeHashWertAnFileEnde( filename : string );
var s : string;
f : TStringStream;
begin
f := TStringStream.Create;
try
f.LoadFromFile( filename );
s := System.hash.THashMD5.GetHashString( f.ReadString( f.Size ));
f.WriteString( s );
f.SaveToFile( filename );
finally
f.Free;
end;
end;
Hash Wert überprüfen:
Delphi-Quellcode:
function PruefeHashWert( filename : string ) : boolean;
var HashWertAmEndeDesFiles , HashWertVomFile : string;
f : TStringStream;
begin
f := TStringStream.Create;
try
f.LoadFromFile( filename );
HashWertVomFile := System.hash.THashMD5.GetHashString( f.ReadString( f.Size-32 ));
HashWertAmEndeDesFiles := f.ReadString( 32 );
finally
f.Free;
end;
Result := HashWertAmEndeDesFiles = HashWertVomFile;
end;
Beispiel:
Delphi-Quellcode:
procedure TForm79.Button1Click(Sender: TObject);
var fn :
string;
begin
fn := '
C:\Users\Michael\Documents\Embarcadero\Studio\Projekte\Win32\Debug\Project29.exe';
SchreibeHashWertAnFileEnde( fn );
if PruefeHashWert( fn )
then ShowMessage( '
OK' )
else showmessage('
Error');
end;
Ich hoffe das hilft.
Gruss
M