AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

String in Exe ändern

Ein Thema von jacky213 · begonnen am 19. Feb 2019 · letzter Beitrag vom 26. Feb 2023
Antwort Antwort
Seite 3 von 3     123
jacky213

Registriert seit: 2. Mär 2011
146 Beiträge
 
#21

AW: String in Exe ändern

  Alt 21. Feb 2019, 21:45
Erstmal vielen dank für die ausführliche Diskussion,

Zum einen habe ich auf den Einsatz von beispielsweise MD5 Hashes verzichtet, weil es Online schon einige sehr umfangreiche MD5 Datenbanken gibt. Sollte also ein User mal auf die Idee kommen und es für ratsam halten ein Passwort aus den Top 10 der beliebtesten Passwörter zu wählen, so währe auch der Hash im nu überwunden.

Zum anderen habe ich mich dazu entschlossen nun auch den Prüf String in einer Datei abzulegen. Die Sicherheit bleibt ja gleich. Da kann man meiner Meinung nach nur mit Brute Force ran und bei einer AES 128 Bit Verschlüsselung kann es eine weile dauern.
  Mit Zitat antworten Zitat
CCRDude

Registriert seit: 9. Jun 2011
675 Beiträge
 
FreePascal / Lazarus
 
#22

AW: String in Exe ändern

  Alt 22. Feb 2019, 12:07
MD5 ist dafür ungeeignet, mindestens SHA-2 würde ich empfehlen.

Das Gegenmittel gegen Rainbow Tables sind schon seit Ewigkeiten Salts. Hashes ohne Salts sind genau so nachlässig wie MD5.

Ich weiß nicht recht, was AES 128 bei einer Speicherung des Passworts helfen soll. Da nehme ich einen Debugger und debugge das Programm bis zu der Stelle, an der der String Compare stattfindet, dann lese ich das Passwort trotzdem im Klartext.
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.753 Beiträge
 
Delphi 11 Alexandria
 
#23

AW: String in Exe ändern

  Alt 22. Feb 2019, 12:31
Im Ernst und ganz konkret:
- Passwort nach einem Hashverfahren der letzten Dekade hashen und nur den Hash speichern
- Nach Drei Fehlversuchen das Konto sperren
--> Überhaupt kein Sicherheitsproblem, mit niemandem.

Und in einer Exe speichert niemand mit Sicherheitsanspruch irgendetwas. Sämtliche Sicherheitsprobleme der Gegenwart fußen auf einer irrigen Auffassung von Bequemlichkeit. Seit wann ist es bequem, dem User vierunddröflzig Fehleingaben zu erlauben? Seit wann ist es bequem eine Exe zur Laufzeit selbst zu patchen und damit alle Sicherheitsvorkehrungen zu alarmieren, die zum einen direkt Manipulationen von Exen überwachen und zum anderen nur Exen ausführen lassen, deren Hash einmalig abgenickt wurde.

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.442 Beiträge
 
Delphi 10.4 Sydney
 
#24

AW: String in Exe ändern

  Alt 25. Feb 2019, 10:01
Hmmm.... ist das ein "geheimer" String? Wenn nicht, wie wäre es denn wenn man dem Programm diesen String einfach als Startparameter übergibt?
Gute Idee! Obwohl man die Startparameter aus den Prozessdaten auslesen kann. Der übergebene String müsste dann schon verschlüsselt sein.
Geändert von PeterPanino, damit der Platz auf dem Bildschirm nicht so leer aussieht.
  Mit Zitat antworten Zitat
Benutzerbild von Moombas
Moombas

Registriert seit: 22. Mär 2017
Ort: bei Flensburg
525 Beiträge
 
FreePascal / Lazarus
 
#25

AW: String in Exe ändern

  Alt 25. Feb 2019, 10:31
Also ich habe es immer so gemacht, das Programm-Passwörter als Parameter zu übergeben sind (jetzt mal vollkommen ab davon ob nun verschlüsselt oder nicht) und diese werden dann nicht mit einem fix einprogrammierten Wert verglichen, sondern mit einem Wert der in einer Datei im Netzwerk liegt.

Dadurch kannst du das Passwort jederzeit Zentral ändern, falls nötig und wenn du eine Logik (Verschlüsselung) hinterlegst mit der die beiden Werte abgeglichen werden, bist du schon auf einem guten Weg. Und(/Aber): Wenn kein Zugang zum Netzwerk besteht, kann die Anwendung (bei mir) daher nicht gestartet/ genutzt werden.

Natürlich ist dabei zu empfehlen eine Verschlüsselung zu nutzen, da der Wert ja im Netzwerk in einer Datei steht, weshalb ich selber auch nur den SHA2-Hash ablege.
Der Weg ist das Ziel aber man sollte auf dem Weg niemals das Ziel aus den Augen verlieren.

Geändert von Moombas (25. Feb 2019 um 15:35 Uhr)
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.173 Beiträge
 
#26

AW: String in Exe ändern

  Alt 25. Feb 2019, 18:08
Zitat:
sollte der Nutzer das Passwort nicht kennen, kommt er nicht weiter.
Dann kennst du einige Profis aus diesem Forum hier nicht. Denen ist das Passwort vollkommen egal. Die wechseln in der Binary einfach ein if <> then mit if not <> then aus und schon sind sie drin.
  Mit Zitat antworten Zitat
Benutzerbild von Moombas
Moombas

Registriert seit: 22. Mär 2017
Ort: bei Flensburg
525 Beiträge
 
FreePascal / Lazarus
 
#27

AW: String in Exe ändern

  Alt 26. Feb 2019, 08:43
Zitat:
sollte der Nutzer das Passwort nicht kennen, kommt er nicht weiter.
Dann kennst du einige Profis aus diesem Forum hier nicht. Denen ist das Passwort vollkommen egal. Die wechseln in der Binary einfach ein if <> then mit if not <> then aus und schon sind sie drin.
Das kommt drauf an wie gut man es verschachtelt bzw. welche Abhängigkeiten es noch gibt.
Bei meinem Beispiel z.B.:
1. Prüfen ob der Passwort-Parameter (mit der erwarteten Logik z.B. "/PasswordSecure XXXXX") übergeben wurde, wenn nicht z.B. Programm beenden (wenn es um die "Sicherung" des Programms geht). Wenn ja nächste Prüfung
1.b. Prüfen ob noch z.B. Versuche des Windoofbenutzers möglich sind, wenn nicht z.B. Programm beenden (wenn es um die "Sicherung" des Programms geht). Wenn ja nächste Prüfung
2. Prüfen ob die Datei mit dem Hash gefunden wird, wenn nein: z.B. Programm beenden (wenn es um die "Sicherung" des Programms geht). Wenn ja, nächste Prüfung.
3. Versuchen diese Datei auszulesen, wenn nicht möglich (oder kein Wert): z.B. Programm beenden (wenn es um die "Sicherung" des Programms geht). Wenn ja, nächste Prüfung
4. Den Passwort-Parameter hashen und mit dem hash aus der Datei vergleichen. Ist dieser nicht gleich: z.B. Programm beenden (wenn es um die "Sicherung" des Programms geht). Wenn ja: Freigabe erteilen.

Da reicht ein "einfaches" Ersetzen eines if then durch ein if not then nicht aus.

Das es auch dafür natürlich Mittel und Wege gibt das zu umgehen, ist sicherlich klar.
Der Weg ist das Ziel aber man sollte auf dem Weg niemals das Ziel aus den Augen verlieren.

Geändert von Moombas (26. Feb 2019 um 08:45 Uhr)
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.772 Beiträge
 
Delphi 12 Athens
 
#28

AW: String in Exe ändern

  Alt 26. Feb 2019, 18:14
Es scheint mir, dass du den Unterschied von hash- und Verschlüsselungsfunktionen noch nicht ganz verstanden hast. Du solltest das Passwort nicht verschglüsselt sondern gehashed ablegen, wenn du es nur prüfen muss. Verschlüsseln wäre nur dann richtig, wenn du auch den Klartext des Passwortes wieder zurückgewinnen müsstest.

Zur Sicherheitsthematik: ja, MD5 gilt nicht mehr als sicher. Wie schon von jemandem vorgeschlagen BCrypt als Algorithmus nehmen und zusätzlich das Passwort versalzen! Was bedeutet das? Einen zufälligen Wert an das Passwort anhängen vor dem berechnen des Hash Wertes. Dein Programm muss diesen Wert kennen und wenn ein eingegebenes Passwort geprüft wird auch vor der Hash berechnung wieder dran hängen. Damit werden vorberechnete Hash Tabellen nutzlos.

Im Falle des Hashes kannst du den dann auch ruhig in der Registry oder einer Datei ablegen, da man ihn nicht zurück in das Klartextpasswort verwandeln kann.
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.173 Beiträge
 
#29

AW: String in Exe ändern

  Alt 25. Feb 2023, 23:11
Das Thema ist schon alt aber ich habe im Prinzip eine ähnliche Frage rein aus Prinzip wie die die im Titel steht:
wie kann man einen String in einer Exe nachträglich ändern?

Ich dachte da grob an Datei in TBytesStream laden, die Bytes in einen String S schieben, Anfangsposition des Strings Needle in S finden und dann mit
Move(Needle[1], BS.Bytes[PosNeedle - 1], NeedleLengthInBytes); danach die Bytes speichern.

Geändert von DieDolly (26. Feb 2023 um 00:13 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.288 Beiträge
 
Delphi 11 Alexandria
 
#30

AW: String in Exe ändern

  Alt 26. Feb 2023, 09:07
Das Thema ist schon alt aber ich habe im Prinzip eine ähnliche Frage rein aus Prinzip wie die die im Titel steht:
wie kann man einen String in einer Exe nachträglich ändern?
Hier gibt es eine Demo zu einer solchen Problemstellung:
https://www.delphipraxis.net/134855-...anhaengen.html

Ich dachte da grob an Datei in TBytesStream laden, die Bytes in einen String S schieben, Anfangsposition des Strings Needle in S finden und dann mit
Move(Needle[1], BS.Bytes[PosNeedle - 1], NeedleLengthInBytes); danach die Bytes speichern.
Das würde zwar gehen, aber ich würde eher anhängen, manuell oder als Ressource, als die Exe anderswo zu ändern. (Unter anderem weil ich mir die Suche spare.)
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:20 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