Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Keine Checksummenänderung bei Stringveränderung in der .exe? (https://www.delphipraxis.net/47649-keine-checksummenaenderung-bei-stringveraenderung-der-exe.html)

Gambit 14. Jun 2005 12:20


Keine Checksummenänderung bei Stringveränderung in der .exe?
 
Hallo,
ich möchte in meinem Programm bei Start die Checksumme prüfen und das Programm beenden, wenn sie nicht mehr stimmt, also an der .exe herumgefuscht wurde.

Die Routine zur Überprüfung der Checksumme fand ich im Internet:

Delphi-Quellcode:
function GetCheckSum(FileName: string): DWORD;
var
  F: file of DWORD;
  P: Pointer;
  Fsize: DWORD;
  Buffer: array [0..500] of DWORD;
begin
  FileMode := 0;
  AssignFile(F, FileName);
  Reset(F);
  Seek(F, FileSize(F) div 2);
  Fsize := FileSize(F) - 1 - FilePos(F);
  if Fsize > 500 then Fsize := 500;
  BlockRead(F, Buffer, Fsize);
  Close(F);
  P := @Buffer;
  asm
     xor eax, eax
     xor ecx, ecx
     mov edi , p
     @again:
       add eax, [edi + 4*ecx]
       inc ecx
       cmp ecx, fsize
     jl @again
     mov @result, eax
   end;
end;
Wenn ich jetzt mit einem Hexeditor einen String in der .exe ändere, ändert sich die Checksumme nicht. Ist das bei Strings immer so? Was würde helfen?

Gruß

Gambit

Dust Signs 14. Jun 2005 12:28

Re: Keine Checksummenänderung bei Stringveränderung in der .
 
EXE-Dateien mit Read lesen :shock: ? Junge, EXE-Dateien sind binär! Da brauchst du Streams!

Dust Signs

Olli 14. Jun 2005 12:34

Re: Keine Checksummenänderung bei Stringveränderung in der .
 
Zitat:

Zitat von Dust Signs
EXE-Dateien mit Read lesen :shock: ? Junge, EXE-Dateien sind binär! Da brauchst du Streams!

Ich gestehe etwas schwer von Begriff zu sein, aber was meinst du? BlockRead war schon immer für Binärdaten geeignet. Wo ist also dein Problem?

@Fragesteller: eigentlich sollte sich in jedem Fall die Checksumme ändern. Ansonsten könnte es sein, daß die Methode zur Berechnung nicht wirklich gut ist ;)

Gambit 14. Jun 2005 12:36

Re: Keine Checksummenänderung bei Stringveränderung in der .
 
Ja, das habe ich mir auch schon gedacht. Kennt jemand ne bessere Methode?

uschi 14. Jun 2005 12:38

Re: Keine Checksummenänderung bei Stringveränderung in der .
 
nimmsu die DCP - Hashes

DCP in Torry eingeben

freeware

phlux 14. Jun 2005 13:38

Re: Keine Checksummenänderung bei Stringveränderung in der .
 
"einfachen" crc32 check dürfte doch auch schon reichen oder? :gruebel:

Flocke 14. Jun 2005 13:52

Re: Keine Checksummenänderung bei Stringveränderung in der .
 
Ich denke mal, die Prüfsumme ändert sich deshalb nicht, weil deine Routine nur 2000 Byte aus der Mitte der Datei prüft (und nicht die ganze Datei).

Gambit 14. Jun 2005 13:55

Re: Keine Checksummenänderung bei Stringveränderung in der .
 
Habe mittlerweile ein Tool(Unit) gefunden, welches Routinen anbietet, um die Checksumme eines Programms beim Start zu prüfen. Dabei ist ein kleines Programm, welches die .exe nach der compilierung patched.
Funzt astrein...

Luckie 14. Jun 2005 13:58

Re: Keine Checksummenänderung bei Stringveränderung in der .
 
Könntest du mal bitte den Link geben?

Gambit 14. Jun 2005 14:06

Re: Keine Checksummenänderung bei Stringveränderung in der .
 
http://www.freeware.de/Windows/Progr...mierung/Delphi

das Programm heißt CheckExe Version 1.0


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:13 Uhr.
Seite 1 von 2  1 2      

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