Unsolved Parameter in Release.exe im Klartext auslesbar
-
Hi,
da ich viele Projektspezifika habe, benutze ich mehrere Parameterfiles (einfache .ini Files) in meinen Resources. Je nach Projekt wird dann das entsprechende .ini File ausgelesen um z.B. die Verbindung zum Server aufzubauen.
Leider sind alle diese Projektfiles in der .exe im Klartext auslesbar (auch die Webservice Url), was natürlich ein Sicherheitsrisiko darstellt und für einen Kunden unschön ist.
Gibt es die Möglichkeit die Daten zu verschlüsseln oder in einen Binärcode umzuwanden? Wie geht ihr damit um?
Grüße
-
Die Frage wie sicher und aufwendig du die Lösung haben möchtest. Die Lösung ist verschlüsseln.
Am Einfachsten ist eine Konvertierung nach hex und diese im Quellcode abzulegen. Dies ist aber auch am Einfachsten zu knacken für jemanden der danach sucht.
Eine andere Möglichkeit ist besser verschlüsseln. Hier hat es vor langer Zeit schon einmal eine Anleitung gegeben https://forum.qt.io/topic/4470/new-simplecrypt-page Der ursprüngliche Ort der Veröffentlichung gibt es nicht mehr allerdings wurde die Seite wohl in das wiki verlegt.
Egal wie du es machst, dein Code wird auch schlechter lesbar.
-
hi @Wowalive ,
@koahnig ist vollkommen korrekt in seiner Erklärung. Aber in diesem speziellen Fall den du schilderst, tut sich, meiner Ansicht nach, noch eine weitere Möglichkeit auf.Es gibt eine Reihe von c++ basierter Software/Bibliotheken mit denen man Dateien ver -und entschlüsseln kann.
Verschlüssele deine Dateien bevor du sie den Resourcen hinzufügst. Dann, wenn du sie brauchst, lade die verschlüsselte Datei, entschlüssel sie, bevorzugt in Memory, und lese die Werte aus.
Hat den Vorteil dass dein Code leserlich bleibt und du nur den Entschlüsselungskey vernünftig verstecken musst.
Verstreute chars die bei Laufzeit zum Key zusammengefügt werden sollte für den von dir geschilderten Fall ausreichend sein. -
Das hört sich alles nach Pseudo-Sicherheit an. Wenn ich Zugriff auf das Executable habe kann ich es auch starten, also kann ich auch schauen welche Urls aufgerufen werden (und mit welchen Parametern), wireshark lässt grüßen.
Nützt also nix die Eingangsdaten zu verschlüsseln...