Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Sichere Compiler Einstellungen?! (https://www.delphipraxis.net/99724-sichere-compiler-einstellungen.html)

-TheCoke- 16. Sep 2007 19:54


Sichere Compiler Einstellungen?!
 
Huhu!

Ich wollte mal Fragen ob es irgendwelche Einstellungen gibt die man ändern kann, um sein Programm änderungs sicher zu machen.


Wenn ich meine *.exe mit einem Res Hacker aufmache, kann ich unter "RCData" -> "TFORM1" einfach beliebige Einstellungen ändern.

Ich sehe dann folgendes:

Code:
object Form1: TForm1
  Left = 353
  Top = 181
  VertScrollBar.Style = ssFlat
  VertScrollBar.Visible = False
  BorderIcons = [biSystemMenu]
  BorderStyle = bsDialog
  Caption = 'Test'
  ......
Ich hab mal ein bisschen unter Projekt -> Optionen -> Compiler rumgespielt. Hat aber nicht wirklich was gebracht.

Ich benutzte übrigens Delphi 7.

Gruß,
Coke

SirThornberry 16. Sep 2007 20:10

Re: Sichere Compiler Einstellungen?!
 
eine Einstellung kenne ich nicht. Aber wenn dir so viel daran liegt erstelle eine Checksumme für die Ressource und schaue bei Programmstart ob diese noch stimmt.

Bernhard Geyer 16. Sep 2007 21:43

Re: Sichere Compiler Einstellungen?!
 
Sicheren Schutz gibt es unter Windows nicht!
Mann kann es nur möglichst schwierig machen das etwas geändert wird. z.B. Checksumme anlegen oder Anwendung digital signieren und dann beim Programmstart und während des Programmablaufs durch unterschiedliche Funktionen diesen Schutz checken so das ein Angreifer an vielen Codestellen diesen "Fixen" muß damit die Überprüfung trotzdem erfolgreich ist.

-TheCoke- 16. Sep 2007 21:58

Re: Sichere Compiler Einstellungen?!
 
Wie kann ich denn eine Checksumme erstellen und diese dann beim Programmstart prüfen?

Namenloser 16. Sep 2007 22:04

Re: Sichere Compiler Einstellungen?!
 
Hallo,
ich weiß nicht, ob das funktioniert, und 100%ig sicher ist ds sicher auch nicht, aber könnte man nicht das Datum des letzten Kompilierens auslesen und mit dem Datum der letzten Dateiänderung vergleichen? Als erster Schutz könnte das doch ausreichen. Zum Auslesen des Kompilierdatums gibt es in der Codelib glaube ich sogar einen Code.

Pfoto 16. Sep 2007 22:09

Re: Sichere Compiler Einstellungen?!
 
Zitat:

Zitat von -TheCoke-
Wie kann ich denn eine Checksumme erstellen und diese dann beim Programmstart prüfen?

Hallo!

Mit MD5 könntest du das prüfen, hier ein Suchergebnis auf auf torry.net:
http://www.torry.net/quicksearchd.ph...=md5&Title=Yes
Vielleicht (oder sicherlich) gibt es dort auch noch mehr zum Thema "checksum"

Gruß
Pfoto

blackdrake 17. Sep 2007 10:34

Re: Sichere Compiler Einstellungen?!
 
Hallo.

Primär kann ich dir den Tipp geben, deine EXE nach jedem Kompilieren zu komprimieren. Dadurch wird sie kleiner und man kann mit Ressourcen- und Hex-Editoren die Werte nicht direkt einsehen. Ist aber kein absolut sicherer, da man die Kompression auch wieder rückgängig machen könnte.

Eine MD5-Prüfsumme ist ein guter Ansatz zur Prüfsummenbildung. Aber bedenke, dass die Prüfsumme sich bei jeder Kompilierung ändern kann. Deswegen ist es unmöglich, die aktuelle Prüfsumme in die EXE einzubringen (außer durch direktes Anhängen an die EXE). Folglich bedeutet das, dass du die Prüfsumme in eine separate Datei lagern musst. Damit nieman die Prüfsumme fälscht, sollte sie einen Salt enthalten:

Delphi-Quellcode:
Prüfsumme = MD5(GeheimerWert + MeineEXEDatei)
Ist ein schwieriges Thema. Es gibt keine reale Sicherheit bei Digitaltechnik (siehe Bernhard Geyer).

Gruß
blackdrake

Luckie 17. Sep 2007 10:37

Re: Sichere Compiler Einstellungen?!
 
Zitat:

Zitat von blackdrake
Primär kann ich dir den Tipp geben, deine EXE nach jedem Kompilieren zu komprimieren. Dadurch wird sie kleiner und man kann mit Ressourcen- und Hex-Editoren die Werte nicht direkt einsehen. Ist aber kein absolut sicherer, da man die Kompression auch wieder rückgängig machen könnte.

Mit den letzten Satz hast du schon gleich wieder deutlich gemacht, dass das komprimieren der Exe nicht hilft. ;)

blackdrake 17. Sep 2007 11:17

Re: Sichere Compiler Einstellungen?!
 
Hallo.

Ich habe nicht gesagt, dass Komprimieren sicher sei. Ich sagte lediglich, dass es das einfachste ist und bereits Disassembler/Hex/Ressource-Editoren abwehrt. Es ist natürlich eine Sache, wie geheim der Programmcode / die Ressourcen sein sollten. Bei Programm mit einem sehr geheimen Code / Ressourcen genügt eine Komprimierung alleine nicht.

Die Fragstellung ist eigentlich, ob -TheCoke-

a) sein Programm vor Angriffen mit "einfachen" Methoden schützen möchte (-> Komprimierung)
b) Ressourcen-Extrahieren (wg. Copyright) verhindern möchte
c) Geheime Algorithmen vor Disassemblern schützen möchte
d) Programmcode/Ressourcen-Modifizierungen verhindern möchte (es bleibt hier noch zu unterscheiden, ob der Schutz stark oder schwach sein soll)

Gruß
blackdrake

-TheCoke- 17. Sep 2007 15:44

Re: Sichere Compiler Einstellungen?!
 
Huhu!

Hört sich ja schonmal gut an.

Gibt es da zum komprimieren ein Tool?


Mein Programm benutzt UDP Sockets. Ich möchter in erster Hinsicht verhindern, dass z.b. die IP oder der Port des Remote Hosts geändert werden können.
Wenn durch eine Kompriemurung schonmal die Editmöglichkeit mit einem Res Hacker wegfällt wäre das schon was.



Gruß,
Coke

Bernhard Geyer 17. Sep 2007 16:04

Re: Sichere Compiler Einstellungen?!
 
Wie wäre es dies nicht in der DFM einzutragen sondern per Code zuzuweisen. Am besten noch die Daten verschlüsselt im Programm zu kompilieren. Damit ersparst du dir die Nachteile einer Komprimierung und das ist m.E. etwas schwerer zu knacken.

blackdrake 17. Sep 2007 16:16

Re: Sichere Compiler Einstellungen?!
 
Hallo.

Ja, die Editfunktion fällt bei Resourcen/Hex-Editoren weg, aber der Schutz ist nicht sicher. Ein guter Packer ist UPX: http://upx.sourceforge.net/ .

Wie ich sehe, willst du verhindern, dass eine VCL-Eigenschaft geändert oder betrachtet wird. Du kannst den Schutz erhöhen, in dem du die VCL-Eigenschaft z.B. bei OnCreate setzt.

Delphi-Quellcode:
procedure TForm1.OnCreate(...);
begin
  Socket1.IP := 'IP-Adresse';
end;
Dies würde jedoch "IP-Adresse" nach dem Dekomprimieren in der EXE im Klartext hinterlassen.

Du solltest besser eine leichte Verschlüsselung verwenden:

Delphi-Quellcode:
procedure TForm1.OnCreate(...);
begin
  Socket1.IP := Entschluessle('Verschlüsselte IP');
end;
Falsch wäre aber:

Delphi-Quellcode:
procedure TForm1.OnCreate(...);
begin
  Socket1.IP := Entschluessle(Verschluessle('IP-Adresse'));
end;
Weil man dann wieder die IP im Klartext in der EXE drinnen hat.

Wenn ich eine leichte Verschlüsselung ohne Key aus der CodeLib vorschlagen darf: http://www.delphipraxis.net/internal...schl%FCsselung

Gruß
blackdrake

-TheCoke- 17. Sep 2007 18:55

Re: Sichere Compiler Einstellungen?!
 
Die Verschlüsselung braucht einen Key sowie ich das sehe.

Eine ohne wäre da wohl besser denk ich mal.

blackdrake 17. Sep 2007 20:16

Re: Sichere Compiler Einstellungen?!
 
Wieso? Einen Key gibt es doch quasi immer. In diesem Fall ist der Key ja nur ein Integer. Such dir eine Zahl aus, die du in dein Programm integrierst.

Namenloser 17. Sep 2007 21:44

Re: Sichere Compiler Einstellungen?!
 
Es gibt auch die Möglichkeit, dass soft zu coden. Also statt 'hallo' chr(74)+chr(97)+chr(109)+chr(109)+chr(112). (Hoffe ich hab mich jetzt nicht verrechnet/verzählt xD)
Aber auf Dauer wird die verschlüsselte Variante wohl einfacher sein.

axellang 17. Sep 2007 22:25

Re: Sichere Compiler Einstellungen?!
 
Hallo TheCoke,

Zitat:

Zitat von -TheCoke-
Huhu!

Hört sich ja schonmal gut an.
Gibt es da zum komprimieren ein Tool?
Mein Programm benutzt UDP Sockets. Ich möchter in erster Hinsicht verhindern, dass z.b. die IP oder der Port des Remote Hosts geändert werden können.
Wenn durch eine Kompriemurung schonmal die Editmöglichkeit mit einem Res Hacker wegfällt wäre das schon was.
Gruß,
Coke

versuche es mal mit Petite Petite. Es ist ein Packer von dem Anbieter der auch die BASS.DLL programmiert. In Petite gibt es eine Funktion die nennt sich "Virus Detection". Sobald in der exe mit einem ResHacker geschrieben wird verändert es die CheckSumme die beim packen erstellt wurde und eine Msg wird ausgegeben und das Programm beendet.

Petite ist für nichtkommerzielle Zwecke Freeware.

Alexander

Chewie 17. Sep 2007 22:45

Re: Sichere Compiler Einstellungen?!
 
Zitat:

Zitat von NamenLozer
Es gibt auch die Möglichkeit, dass soft zu coden. Also statt 'hallo' chr(74)+chr(97)+chr(109)+chr(109)+chr(112). (Hoffe ich hab mich jetzt nicht verrechnet/verzählt xD)


Oh ja, mach das mal. Kompilier mal je eine Version mit dem hardkodierten String und mit deiner Variante und vergleich dann mal die Ausgaben :zwinker:


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