Programm Dateien für Fremde unzugänglich machen



  • Meines Wissens benötigst du die Bilder nicht in einem extra Ordner, wenn du sie beim Buildvorgang in die .exe inkludierst (Stichwort static build).

    Für .ini Dateien hast du im Prinzip zwei Möglichkeiten:

    • Du verschlüsselst den Inhalt und entschlüsselst ihn wieder, sobald er eingelesen wird.
    • Du akzeptierst, dass manche Leute den Inhalt verändern können. Es werden nicht viele machen und auch wenn du die Datei versteckst oder mit einem Archiv zu schützen versuchst, werden sie wieder einen Weg finden, Zugriff zu bekommen.


  • Ich würde gerne alle Programmdateien, die sich in einem bestimmten Ordner befinden, für Fremde und Nutzer unzugänglich machen.

    Loeschen. 🙂



  • phanzy schrieb:

    Meines Wissens benötigst du die Bilder nicht in einem extra Ordner, wenn du sie beim Buildvorgang in die .exe inkludierst (Stichwort static build).

    Das ginge zwar, würde aber die .exe unnötig vergrößern. Nicht immer werden alle Bilder benötigt, da es ja davon abhängig ist wie ein Nutzer das Programm nutzt (welchen Programmstatus)

    phanzy schrieb:

    Du akzeptierst, dass manche Leute den Inhalt verändern können. Es werden nicht viele machen und auch wenn du die Datei versteckst oder mit einem Archiv zu schützen versuchst, werden sie wieder einen Weg finden, Zugriff zu bekommen.

    Dass es immer Jemanden gibt, der irgendwas knacken kann, wird sich nie verhindern lassen, glaube ich. Aber es sollte nicht so einfach sein, in dem der ganze Ordner offen und freizugänglich, sowie editierbar ist.

    knivil schrieb:

    Loeschen. 😋

    Genau... ganze Programm am besten wieder weg.

    phanzy schrieb:

    Du verschlüsselst den Inhalt und entschlüsselst ihn wieder, sobald er eingelesen wird.

    ->

    - Ordner Inhalte komplett verschlüsseln, sprich alle Unterordner und Dateien (wie geht das? kann WinRAR das, oder muss da ein anderes Programm für her? Habe dazu für winRAR noch nichts gefunden)

    Und welche Funktionen bietet die winAPI dafür? oder welche anderen Verschlüsselungsmethoden sind dafür zu empfehlen?



  • Such dir ne Bibliothek die Zips lesen/schreiben kann und verschlüssel mit einem festen Passwort. Zusätztlich kannst du die Dateiendung ja noch ändern damit nicht jeder gleich draufkommm dass es nur ne Zip ist.

    AFAIK bietet die WinApi da nichts in der Richtung an..

    Das ginge zwar, würde aber die .exe unnötig vergrößern. Nicht immer werden alle Bilder benötigt, da es ja davon abhängig ist wie ein Nutzer das Programm nutzt (welchen Programmstatus)
    

    Ähm der Programmordner verbraucht doch auch den Platz ? 😃

    Ich würde an deiner Stelle einfach alles einbetten und fertig.



  • DarkShadow44 schrieb:

    Ähm der Programmordner verbraucht doch auch den Platz ? 😃

    Ja, dass das kein Unterschied beim Festplattenspeicher macht, ist klar. (Oder vielleicht ein kleiner. Das weiß ich nicht, ob die PE dann kleiner wäre als das Bild selbst.)
    Aber die PE wäre doch dann auch zur Laufzeit größer, oder nicht? Also wenn ich die Bilder statisch dazu linke. Dann sind sie ja immer fester Bestandteil der PE, und die .exe ist permanent größer (auch zur Laufzeit). Anders ist es doch wenn die PE zur Laufzeit das Bild lädt, dass es gerade braucht?
    So glaube ich zumindest, dass es so ist 😃

    DarkShadow44 schrieb:

    Such dir ne Bibliothek die Zips lesen/schreiben kann und verschlüssel [..]

    Now we're talkin.. gibt es da welche, die zu empfehlen sind, wenn die winAPI keine bietet.



  • PadMad schrieb:

    Aber die PE wäre doch dann auch zur Laufzeit größer, oder nicht? Also wenn ich die Bilder statisch dazu linke. Dann sind sie ja immer fester Bestandteil der PE, und die .exe ist permanent größer (auch zur Laufzeit).

    Das müsste man für den Komfort in Kauf nehmen.

    PadMad schrieb:

    DarkShadow44 schrieb:

    Such dir ne Bibliothek die Zips lesen/schreiben kann und verschlüssel [..]

    Now we're talkin.. gibt es da welche, die zu empfehlen sind, wenn die winAPI keine bietet.

    Versuchs doch mal mit LibArchive
    Das könnte dir mit dem Passwort helfen.



  • wie wärs mit minizip ?



  • Vielen Dank für die Antworten. Ich werde das mal ausprobieren.



  • PadMad schrieb:

    Und welche Funktionen bietet die winAPI dafür? oder welche anderen Verschlüsselungsmethoden sind dafür zu empfehlen?

    Keine mir bekannten. Also klar ReadFile, WriteFile, auch Funktionen zum Ver- und Entschlüsseln von Daten etc. Aber halt nix fertiges mit dem man in verschlüsselten Archiven rumlesen/-schreiben könnte als ob es normale Verzeichnisse wären.

    Wenn du alle File-Zugriffe selbst machen kannst, dann reicht natürlich eine Library ala minizip.
    Wenn du aber z.B. eine API benutzt die die Daten direkt von Disk liest, und eben auch NUR direkt von Disk lesen kann, dann hilft es dir nix.
    In dem Fall könntest du dann nur noch versuchen irgendwie ein "Image" (in welchem Format auch immer) zu mounten, und den Zugriff auf das gemountete Image auf einen bestimmten Prozess einzuschränken.

    Sowas ist z.B. mit Dokan möglich. Das ist ein File-System Treiber für Windows, der die ganzen File-System Operationen in den Usermode rüberschaufelt, so dass man sie mit nem (relativ) einfachen C, C++, C#, ... Programm implementieren kann. Die Implementierung müsstest du natürlich selbst schreiben. Diese könnte die Daten dann aber hernehmen wo sie will, und eben bei jedem Zugriff prüfen ob der Prozess der zugreifen will auch wirklich darf (=nur dein Programm erlauben).

    Ist aber einiges an Aufwand.

    Vermutlich wäre es besser mal zu überdenken ob du das wirklich brauchst.



  • Ich hatte vor geraumer Zeit das gleiche Problem, ich hab mich dann für den zLib Quellcode mit Verschlüsselung entschieden. Als Einstieg bin ich folgendes durchgegangen:

    http://www.winimage.com/zLibDll/minizip.html

    Anstelle von Dateien und Unterverzeichnissen benutzt mein Programm nun eine verschlüsselte ZIP Datei. Du solltes halt darauf achten, dass das Zippasswort nicht in Klarschrift im Quellcode zu sehen ist, ggf benutze Themida.

    Alles in allem war das Ganze recht zeitaufwendig, ich benutzte das aber nun auch in einigen anderen Projekten.


Anmelden zum Antworten