Password Protection für ein Programm



  • Ich habe mir Gedanken gemacht wie ich mein Programm mit einem Passwort schützen kann, aber irgendwie kommt da nichts bei sinnvolles raus.

    Was ich jetzt probiert habe ist, dass ich ein Passwort in einer sqlite Datenbank speicher und eine binäre Datei auf dem Computer. Natürlich gehasht. Meine Daten in der sqlite Datenbank sind alle verschlüsselt, aber wer das Programm starten kann, kann alles lesen.
    Zu meiner Lösung müssten man einfach nur die erzeugte binäre Datei löschen und den sqlite Eintrag löschen. Dann würde man nämlich dazu aufgefordert werden ein neues Passwort zu setzen.

    Wie kann ich also das Programm wirklich schützen? Irgendwie muss ich ja irgendwo ein Passwort speichern. Aber wie mache ich das am besten? Ich arbeite übrigens mit QT5.

    Jemand eine Idee?



  • Schützt du es vor einem Dau oder einem Experten?
    Sinnvoll ist es wohl nur, Kernfunktionalität auf einen Server auszulagern und zb per Webservices oder RMI anzubieten. Bei jedem Request werden Authentifizierungsinformationen mitgeschickt (die auf dem Server verwaltet werden, auf den nur du Zugriff hast) und vom User bei Programmstart eingegeben werden.


  • Mod

    Wenn dein Programm lokal auf dem Rechner läuft, kannst du es vergessen. Denn der Anwender kontrolliert den Rechner und kann auf diesem alles machen, unter anderem kann er alles mitlesen und manipulieren was dein Programm intern macht. Du denkst auch schon viel zu kompliziert, wenn du denkst, man solle das Passwort knacken. Viel einfacher ist es, die Passwortabfrage durch ein metaphorisches if(true) zu ersetzen. Frag mal die Spieleindustrie, die jahrzehntelang immer obskurere und trotzdem stets nutzlose Sicherungsfunktionen in ihre Programme eingebaut haben. Letztlich haben sie das Problem "gelöst", als die Technik so weit voran schritt, dass sie es sich erlauben konnten, wesentliche Programmbestandteile auf einen von ihnen kontrollierten Server auszulagern. Das ist dann auch die Vorgehensweise, wie du andere Programme wirklich schützen kannst: Das Programm darf gar nicht erst in die Hände des Nutzers gelangen, sondern schickt nur seine Ergebnisse. Der Nutzer erhält nur ein Programm zur Kommunikation mit dem Hauptprogramm und zur Anzeige der Ergebnisse.



  • Das Programm soll lokal laufen. Wahrscheinlich denke ich viel zu kompliziert. Das sind jetzt keine hochsensiblen Daten, aber Anfänger und Amateure sollen das halt nicht so schnell knacken können.

    Hab gestern auch noch was dazu gelesen. Dass wenn jemand das Programm in die Finger kriegt, sagen wir ein Experte, wäre es nur ein Frage der Zeit bis es geknackt wäre. Muss ich wohl in den sauren Apfel beissen.



  • Hab gestern auch noch was dazu gelesen. Dass wenn jemand das Programm in die Finger kriegt, sagen wir ein Experte, wäre es nur ein Frage der Zeit bis es geknackt wäre. Muss ich wohl in den sauren Apfel beissen.

    Oh, seh ich da schon ollydbg durch die Forensignatur laufen?

    And finally protection software. From what I have heard to be good:

    ASProtect - http://www.aspack.com/asprotect.html
    Themida - http://www.oreans.com/themida.php
    Obsidium - http://www.obsidium.de/show/home/en
    Armadillo - http://www.siliconrealms.com/

    - http://security.stackexchange.com/questions/1069/any-comprehensive-solutions-for-binary-code-protection-and-anti-reverse-engineer



  • Bennisen schrieb:

    Ich habe mir Gedanken gemacht wie ich mein Programm mit einem Passwort schützen kann, aber irgendwie kommt da nichts bei sinnvolles raus.
    [code="delphi"]

    Ein vom User frei wählbares Passwort oder ein fest eingebautes?

    Ich würde in jedem Fall einen HASH der Passworteingabe erzeugen und diesen HASH denn mit einem fest einbauten HASH oder einem HASH der in der Registry gespeichert ist vergleichen. Aus dem gespeicherten HASH kann man, wenn man es richtig macht, keine Rückschlüsse auf das eingegebene Passwort machen.

    Für jemand der sich natürlich mit Reversengengeering auskennt stellt das keine große Hürde dar, da er einfach dein Programm patched und die Stelle des HASH Vergleichs einfach immer als erfolgreich bestanden ausführt. Um dies zu erschweren müsste dein Programm mit den bereits von bambi erwähnten externen Programmen geschützt werden. Themida ist hierbei ein äußerst schwer zu crackender Schutzmechanismuss.

    Wer diese Hürden alle überwindet, hat es dann auch verdient dein Programm illegal zu nutzen.


Log in to reply