Delphi-PRAXiS
Seite 2 von 4     12 34      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   DFM-Dateien verschlüsseln? (https://www.delphipraxis.net/192554-dfm-dateien-verschluesseln.html)

nahpets 30. Apr 2017 21:59

AW: DFM-Dateien verschlüsseln?
 
Um meine Programme vor unerwünschter Änderung zu schützen, hab' ich mir 'nen AfterCompile-Experten gebaut.

Nach dem Kompilieren errechnet der die MD5-Checksumme der Exe und schreibt diese in die EXE hinein.

Meine Programme erstellen beim Start die MD5-Checksumme der Exe und vergleichen diese mit der in die EXE geschriebenen.

Gibt es eine Abweichung, beendet sie sich mit 'ner entsprechenden Fehlermeldung.

a.def 30. Apr 2017 22:01

AW: DFM-Dateien verschlüsseln?
 
Ihr habt alle so tolle Lösungen und ich habe Null Ahnung davon -.-'

Ich gehe stark davon aus, dass du nicht preisgibst wie das funktioniert oder?

nahpets 30. Apr 2017 22:48

AW: DFM-Dateien verschlüsseln?
 
Es gibt hier irgendwo ein Tutorial, wie man 'nen Experten baut.

Zum Bilden einer MD5-Checksumme gibt es Komponenten und sicherlich hier im Forum und im www diverse Quelltexte.

Man muss das nur kombinieren und eine eigene Lösung finden.

Wenn alle die gleiche Lösung nutzen, gibt es sicherlich auch schnell jemanden, der diese Lösung umgehen kann.

a.def 30. Apr 2017 22:51

AW: DFM-Dateien verschlüsseln?
 
MD5-Summe bilden und all das ist kein Problem.

Würde aber glaube ich eher meine Lösung verwenden. Nur schaffe ich es gerade nicht die DFM-Resource korrekt auszulesen.
Ich bekomme folgendes ausgelesen
TPF0TForm5Form5Left (mit ein paar speziellen, komischen Zeichen drin die hier aber gelöscht werden)

Code
Delphi-Quellcode:
 function LoadTextFromResourceByName(ResourceName: string): string;
 var
  ResourceStream: TResourceStream;
  sl: TStringList;
 begin
  if (FindResource(hInstance, PChar(ResourceName), RT_RCDATA) <> 0) then
   begin
    ResourceStream := TResourceStream.Create(hInstance, ResourceName, RT_RCDATA);

    try
     sl := TStringList.Create;

     try
      sl.LoadFromStream(ResourceStream);
      Result := sl.Text;
     finally
      sl.Free;
     end;
    finally
     ResourceStream.Free;
    end;
   end;
 end;

 ShowMessage( LoadTextFromResourceByName(Form5.ClassName) );

Uwe Raabe 30. Apr 2017 22:55

AW: DFM-Dateien verschlüsseln?
 
Zitat:

Zitat von a.def (Beitrag 1369540)
ein kleiner Test lädt zwar meine DFM-Resource aber ich bekomme nur 2 Zeilen ausgegeben und die noch mit falschen Zeichen:

Wie schon erwähnt wurde, liegen die DFMs binär in der EXE. Man muss das also erst in Text umwandeln:

Delphi-Quellcode:
// DFM-Resource laden
function LoadTextFromResourceByName(ResourceName: string): string;
var
  ResourceStream: TResourceStream;
  StringStream: TStringStream;
begin
  if (FindResource(hInstance, PChar(ResourceName), RT_RCDATA) <> 0) then
  begin
    ResourceStream := TResourceStream.Create(hInstance, ResourceName,
      RT_RCDATA);
    try
      StringStream := TStringStream.Create;
      try
        ObjectBinaryToText(ResourceStream, StringStream);
        Result := StringStream.DataString;
      finally
        StringStream.Free;
      end;
    finally
      ResourceStream.Free;
    end;
  end;
end;

a.def 30. Apr 2017 22:56

AW: DFM-Dateien verschlüsseln?
 
Zitat:

ObjectBinaryToText
Das hatte ich eben sogar versucht, verflixt! Hatte wohl StringStream falsch deklariert und DataString nicht eingegeben gehabt :roll:

Poelser 30. Apr 2017 23:16

AW: DFM-Dateien verschlüsseln?
 
Es gab doch mal in MadExcept eine Möglichkeit, die Exe beim Programmstart auf Änderungen zu überprüfen. Gibt's das da noch?

a.def 30. Apr 2017 23:41

AW: DFM-Dateien verschlüsseln?
 
---

Michael II 30. Apr 2017 23:45

AW: DFM-Dateien verschlüsseln?
 
Zitat:

Es ist nicht selbstverständlich, dass man Summe XYZ für ein Zertifikat ausgibt. Viele, auch ich, haben für solche Späte kein Geld.
Außerdem sind viele, ich ebenfalls eingeschlossen, keine Delphi-Profis und haben von Verschlüsselung Null Ahnung
Zertifikate müssen nicht teuer sein und helfen dir zum Beispiel auch, wenn der proaktive Schutz einer AntivirSoftware bei einem deiner Programme anschlägt und du deshalb mit den Herstellern der AntiVirSoftware kommunizieren musst.
...und die vielen gelborangeroten Warnhinweise beim Setup und Updaten sind dann auch weg.

nahpets 30. Apr 2017 23:51

AW: DFM-Dateien verschlüsseln?
 
Wenn Du den MD5-Wert in die Exe schreibst, musst Du natürlich beim Prüfen alles von der Exe nehmen, mit Ausnahme der MD5-Cbhecksumme.

Also:

Exe wird erstellt.
MD5 wird berechnet.
MD5 hinten an die Exe drangehangen.

Exe wird also 16 Byte größer.

MD5 prüfen:

MD5 zur Exe abzüglich der letzten 16 Byte ermitteln.

Übereinstimmung prüfen und entsprechend reagieren.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:23 Uhr.
Seite 2 von 4     12 34      

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