Einzelnen Beitrag anzeigen

Andreas L.
(Gast)

n/a Beiträge
 
#1

AV beim generieren der MD5-Checksum einer EXE-Datei

  Alt 10. Jul 2009, 20:11
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).
Angehängte Dateien
Dateityp: pas md5_162.pas (12,3 KB, 7x aufgerufen)
  Mit Zitat antworten Zitat