Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi AV beim generieren der MD5-Checksum einer EXE-Datei (https://www.delphipraxis.net/136942-av-beim-generieren-der-md5-checksum-einer-exe-datei.html)

Andreas L. 10. Jul 2009 20:11


AV beim generieren der MD5-Checksum einer EXE-Datei
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,

ich iteriere durch eine Liste von Dateinamen und lasse mir für jede Datei eine MD5-Checksum generieren. Das klappt auch bei allen Dateien wunderbar, außer bei einer EXE-Datei. Das Programm ist nicht geöffnet und es wird auch nicht anderweitig drauf zugegriffen (Virenscanner testweise deaktiviert). Mit dem Debugger konnte ich sehen das der Pfad + Dateiname richtig ist.

Mein Code:
Delphi-Quellcode:
  for i := 0 to tempList.Count - 1 do
  begin
    Str := SplitString(tempList[i], '=');
    if FileExists(ExtractFilePath(Application.ExeName) + Str.Key) then
    begin
      if LowerCase(Md5Print(Md5File(ExtractFilePath(Application.ExeName) + Str.Key))) <> LowerCase(Str.Value) then
        Files.Add(Str.Key);
    end;
  end;
Und die AV:
Zitat:

---------------------------
CookieCrumbler Update
---------------------------
Zugriffsverletzung bei Adresse 004D3A78 in Modul 'Update.exe'. Lesen von Adresse 03146000.
---------------------------
OK
---------------------------
Hier bleibt der Debugger stehen (md5.pas):
Delphi-Quellcode:
procedure Encode(Source, Target: pointer; Count: longword);
var
   S: PByte;
   T: PDWORD;
   I: longword;
begin
   S := Source;
   T := Target;
   for I := 1 to Count div 4 do begin
      T^ := S^; //hier tritt die Av auf
      inc(S);
      T^ := T^ or (S^ shl 8);
      inc(S);
      T^ := T^ or (S^ shl 16);
      inc(S);
      T^ := T^ or (S^ shl 24);
      inc(S);
      inc(T);
   end;
end;
Kann mir nicht vorstellen das in der md5.pas ein Fehler ist, aber wo sonst?

Ich verwende die md5-Unit von Matthias Fichtner (siehe Anhang).

Andreas L. 10. Jul 2009 20:56

Re: AV beim generieren der MD5-Checksum einer EXE-Datei
 
Hab so eben noch eine Testanwendung gebastelt:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  if OpenDialog1.Execute then
  begin
    Label1.Caption := MD5Print(MD5File(OpenDialog1.FileName));
    label1.Refresh;
  end;
end;
Funktioniert bei keiner exe. Hab diese Unit aber unter Turbo Delphi schon erfolgreich eingesetzt. Weiß jemand wie man die md5.pas Delphi 2009 kompatibel macht oder gibt es alternativen (kommerzielle Verwendung muss erlaubt sein, darf auch was kosten)?

EDIT: Geht auch nicht bei DLL, SYS, COM, etc. Bei Text-Dateien (txt, html, etc.) aber schon...

Problem gelöst, verwende jetzt das DEC 5.2


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:30 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz