(const char *string) von system in EXE Datei einsehbar



  • hallo zusammen,

    Ich habe ein C-Programm geschrieben, welches die system-funktion nutzt.
    Komischerweise ist (const char *string) dieses Befehls in meiner Exedatei als Klartextpassage einsehbar.
    Ich weiss, dass der system-Aufruf nicht zu empfehlen ist, da ich aber der Ansicht war, dass es "eh" nur eine Miniprogramm ist, welches zur Anbindung eines Netzlaufwerkes dienen soll, ist system() ok... 😕

    Kann man es umgehen, dass der Parameter von system() in Klartext erschein oder soll ich gänzlich auf eine andere Methode umsteigen und ganz von system() ablassen ?

    Grüße,
    wiesel_123



  • Irgendwo müssen ja deine String-Literale untergebracht sein 😉 Und da ist es für den Compiler am einfachsten, sie im Klartext im EXE-File abzuspeichern.

    (wenn du nicht willst, daß der String sofort auffällt, müsstest du ihn verschlüsselt abspeichern und vor dem system()-Aufruf wieder entschlüsseln)



  • Wie ist es denn am sichersten, so einen verschlüsselten String abzuspeichern ?
    Einfach z.B. per ROT13 -was eigentlich schon genügen würde - verschlüsseln, den String in eine Datei schreiben und vor dem system()-Aufruf wieder einlesen ?

    Wenn ja, würde es dann nicht das Gleiche zur Folge haben ? Weil in dem Augenblick, wo ich die verschlüsselte Sequenz wieder einlese und entschlüssele, um es mit dem system()-Befehl an die cmd zu übergeben, ist es ja wieder im Klartext vorhanden ?

    Hoffe ich hab das so richtig verstanden 😕 ?!



  • Wie du deinen Kommandostring intern schützt, ist dir selber überlassen 😉 (ROT13 könnte ausreichen, eventuell auch eine einfache XOR-Verschlüsselung)

    An den system()-Aufruf mußt du das Kommando allerdings im Klartext übertragen, sonst versteht dein System dich nicht. Du könntest höchstens den Aufruf ganz vermeiden, indem du ihn in C++ nachbildest (da hängt es von der Aufgabe ab, die du bewerkstelligen willst, wie das geht).



  • Mh, da es anscheinend nicht über system realisierbar ist, ohne dass jemand reinschauen kann, bräuchte ich ein wenig Hilfestellung beim C++ Ansatz 🙄

    Das Programm tut eigentlich nicht mehr, als einen system()-Aufruf zur Netzlaufwerkanbindung umzusetzen:

    system("net use x: \\\\Server\\share USER PASSWORT");
    

    Da halt dann Domänenpasswort und -benutzername im Klartext einsehbar sind, ist es nicht so das Gelbe vom Ei 🙂



  • Es gibt fertige Klassen zum Verschlüsseln von Stings - benutz einfach eine solche
    wenn du ein wenig mit Google suchst wirst du schnell fündig



  • Versuche mal das hier:

    char* string = {'a', 'b', 'c' };
    

    EDIT:
    Richtig heißt es:

    char string [] = {'a', 'b', 'c', 0 };
    

    Wobei der String dann "abc" wäre.


Anmelden zum Antworten