Delphi-PRAXiS

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

Luckie 14. Jun 2005 14:08

Re: Keine Checksummenänderung bei Stringveränderung in der .
 
Also wenn ich da auf 'Download' klicke, komme ich immer nur zur Startseite (http://www.freeware.de/). Desweiteren: 'Plattformen: Win 98, Win ME, Win 95', ich weiß jan nicht, aber die meisten dürften mittlerweile Windows XP haben.

Gambit 14. Jun 2005 14:12

Re: Keine Checksummenänderung bei Stringveränderung in der .
 
Liste der Anhänge anzeigen (Anzahl: 1)
ja, ich habe auch XP...ich biete es einfach mal hier an, da es FreeWare ist, sollte der Autor nix dagegen haben...falls es doch heikel ist, einfach rausnehmen bitte...

Phistev 14. Jun 2005 14:17

Re: Keine Checksummenänderung bei Stringveränderung in der .
 
Versuch's mal hier

Luckie 14. Jun 2005 14:20

Re: Keine Checksummenänderung bei Stringveränderung in der .
 
Hat sich für mich erledigt, ich habe Delphi 6 aber es liegt nur die dcu Datei bei.

Olli 14. Jun 2005 14:57

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

Zitat von Luckie
Hat sich für mich erledigt, ich habe Delphi 6 aber es liegt nur die dcu Datei bei.

DeDe ist dein Freund ;)

Gambit 14. Jun 2005 20:47

Re: Keine Checksummenänderung bei Stringveränderung in der .
 
Liste der Anhänge anzeigen (Anzahl: 1)
es gibt noch was vergleichbares. Dort aber mit Source:
http://www.consolo.de/apps/Checksummer/default.asp
Die in dem Download auf der Seite fehlende Unit liefere ich hier nach...

brechi 14. Jun 2005 20:58

Re: Keine Checksummenänderung bei Stringveränderung in der .
 
@threadstarte, deine funktion ließt ja auch nur 500 bytes ein, der string wird da garantiert net bei sein


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:28 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