Delphi-PRAXiS
Seite 2 von 3     12 3   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   String in Exe ändern (https://www.delphipraxis.net/199783-string-exe-aendern.html)

hoika 20. Feb 2019 14:09

AW: String in Exe ändern
 
Hallo,
Zitat:

Da könnte sonst ja jede Malware dran basteln.
Nicht, wenn die Exe signiert ist und die Signatur auch geprüft wird.

jacky213 20. Feb 2019 22:10

AW: String in Exe ändern
 
In dem String befindet sich ein verschlüsselter Text. Der Text wird beim starten des Programms via Passwort abfrage entschlüsselt, sollte der Nutzer das Passwort nicht kennen, kommt er nicht weiter. Die Idee dahinter ist Simpel, wer das Passwort nicht kennt, der wird das Passwort auch nicht im Quelltext finden.

Ich wollte eine Funktion einbauen welche es dem Nutzer ermöglicht das Passwort zu ändern (Natürlich nur wenn er das alte Passwort kennt) und hierfür muss dieser String dann auch geändert werden.

Das mit der Signierung klingt sehr interessant. Danke für die ganze Ansätze ich mach mich mal an die Arbeit.

Klaus01 21. Feb 2019 06:45

AW: String in Exe ändern
 
.. ist ja schön und gut wenn das Passwort verschlüsselt abgelegt wird.
Nur bei einer Passwort Authentifizierung wird normalerweise nicht das Passwort verglichen
sondern nur ein Hash (sha1, sha256 o.ä.) davon.
Natürlich muss auch der Hash geändert werden, wenn das Password geändert wird.

Vorteil des Hashes ist, dass man vom Hash nicht auf das Passwort rückschliessen kann.
Es spricht also erstmal nicht viel dagegen den Hash in der Registry oder in einer Datei abzulegen.

Grüße
Klaus

Delphi.Narium 21. Feb 2019 08:18

AW: String in Exe ändern
 
Man kann an eine Exe beliebig viele Daten anhängen.

Nach dem Erstellen der Exe diese zum Schreiben öffenen. Ans Ende der Exe gehen und dort den Hash (z. B. MD5) des Passwortes ablegen. Die Exe wird dadurch um die Länge des Hashes größer.

Soll das Passwort geprüft werden, so öffnet man die Exe zum Lesen geht ans Ende minus Länge des Hashes Byte und liest der Länge des Hashes entsprechend viele Bytes. Der gelesene Wert muss mit dem Hash des Passwortes übereinstimmen.

Klaus01 21. Feb 2019 08:22

AW: String in Exe ändern
 
.. nun wenn der User aber selber ein Passwort ändern will,
an die laufende EXE kann es nicht angehangen werden.
Dazu würde dann ein Hilfsprogramm benötigt, welches die EXE schließt
den Hash ändert und die EXE wieder startet.
Ob Virescanner von dem Vorgang begeistert sein werden - wage ich zu bezweifeln.

Wir wären damit dann wieder am Anfang des Threads
mit dem Unterschied das wir nun den Zweck wissen.

Grüße
Klaus

Delphi.Narium 21. Feb 2019 08:36

AW: String in Exe ändern
 
Threadersteller sagt ja schon im Eingangspost, dass klar ist, dass eine derartige Lösung nicht zur Laufzeit funktioniert. Somit sehe ich da zuerst mal kein Problem.

Meine Exen erhalten alle (mit Hilfe eines AfterCompile-Experten) bei der Erstellung 'nen Hash verpasst und prüfen diesen beim Programmstart. Das funktioniert seit Jahren und Virenscanner haben da nix einzuwenden. In extrem seltenen Fällen scheitert diese Prüfung. Dann ist garantiert die Exe kaputt. Passiert bei Laufwerksfehlern oder fehlerhafter Datenübertragung im Netz. (In zwanzig Jahren so zwei- oder dreimal.)

Und ja: Virenscanner könnten bei soeiner Lösung durchaus Einwand erheben.

dummzeuch 21. Feb 2019 14:36

AW: String in Exe ändern
 
Zitat:

Zitat von Delphi.Narium (Beitrag 1426157)
Man kann an eine Exe beliebig viele Daten anhängen.

Nach dem Erstellen der Exe diese zum Schreiben öffenen. Ans Ende der Exe gehen und dort den Hash (z. B. MD5) des Passwortes ablegen. Die Exe wird dadurch um die Länge des Hashes größer.

Soll das Passwort geprüft werden, so öffnet man die Exe zum Lesen geht ans Ende minus Länge des Hashes Byte und liest der Länge des Hashes entsprechend viele Bytes. Der gelesene Wert muss mit dem Hash des Passwortes übereinstimmen.

Nur, falls das jemand so implementieren will:
Man sollte zusätzlich zu den Nutzdaten einen möglichst eindeutigen Marker (vor und hinter den Daten) schreiben und diesen auch jedes Mal vor dem Zugriff überprüfen. Eine einfache Prüfsumme über diese Daten hat auch was. Sonst kommt nämlich irgendwann ein anderes Programm und hängt ebenfalls Daten an (z.B. gnugettext oder jcldebug) und schon knallt es und man sucht ewig den Fehler an der falschen Stelle.

Delphi.Narium 21. Feb 2019 14:47

AW: String in Exe ändern
 
Ja, stimmt schon irgendwie. Mein Intention war halt mal 'ne Prüfsumme für meine Programme zu haben, die ich selbst verifizieren kann.

Da kam dann die Idee mit dem AfterCompile-Experten, der die MD5-Checksumme an die Exe hängt. Das lässt sich einfach überprüfen. Sinn war es ja, jede Änderung der Exe zu erkennen.

Wenn nun andere Routinen ebenfalls Daten an die Exe hängen kann das so nicht mehr funktionieren. In meinem Fall soll es auch nicht funktionieren ;-)

stOrM 21. Feb 2019 17:13

AW: String in Exe ändern
 
Irgendwie erschließt sich mir der Sinn nicht ganz...
Solche Sachen wurden früher mal gerne eingesetzt um die Server diverser Trojaner nachträglich komfortable zu editieren...

Ansonsten würde ich wie Lucky schon schrieb eine zusätzliche Datei oder eben den Weg über die Registry nehmen.

Eine weitere Möglichkeit die ich mal genutzt habe, wäre der Windows Credential Manager.
Die Vorgehensweise war da z.B. mittels BCrypt (gibt es für Delphi, siehe Github MD5 kann ich nicht empfehlen...) das Passwort quasi Pre-hashed dort zu speichern.

Später im Hauptprogramm dann über einen Login Dialog das eingegebene Passwort hashen und diesen Hash mit dem aus dem Windows Credential Manager vergleichen, wäre der meiner Meinung nach eleganterer Weg.

Delphi.Narium 21. Feb 2019 17:21

AW: String in Exe ändern
 
Irgendwas an 'ne Exe zu hängen oder gar 'ne Exe zu patchen ist für mich nix weiter als Spielerei.

Für 'nen professionellen Einsatz vollkommen ungeeignet.

Ein Passwort verschlüsselt in der Exe und die dann bei 'ner Passwortänderung (ohne sie neu zu kompilieren) zu ändern, ist schon etwas außergewöhnlich.

Aber es geht ;-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:05 Uhr.
Seite 2 von 3     12 3   

Powered by vBulletin® Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2020 by Daniel R. Wolf