Werte im Programm speichern



  • Hallo folgendes:

    Ein Programm fragt den Benutzer z.b. wie er heisst.

    Der Benutzer gibt seinen Namen ein und beendet das Programm.

    Danach startet der Benutzer das Programm wieder und drückt z.b. die 2 für Namen anzeigen.

    Dann soll der Name des Benutzers erscheinen welchen er eben eingeben hat.

    Muss ich diese Eingabe unbedingt in einer Textdatei oder so Speichern und dann auslesen lassen um den Namen angezeigt zu bekommen ?

    Oder kann man das auch irgendwie direkt im Programm abspeichern und dann hinterher wieder ausgeben lassen ?



  • svr schrieb:

    Muss ich diese Eingabe unbedingt in einer Textdatei oder so Speichern und dann auslesen lassen um den Namen angezeigt zu bekommen ?

    Ja.

    svr schrieb:

    Oder kann man das auch irgendwie direkt im Programm abspeichern und dann hinterher wieder ausgeben lassen ?

    Nein.



  • svr schrieb:

    Oder kann man das auch irgendwie direkt im Programm abspeichern und dann hinterher wieder ausgeben lassen ?

    Gehen an sich schon, aber selbstmanipulierende exe-Dateien sind mit Sicherheit nicht vertrauenswürdig (Und ein Fressen für jedes Antivirenprogramm).



  • Mhhm ich würde das trotzdem mal gerne probieren.

    Aber nach was soll ich da z.b. bei google suchen ? "selbstmanipulierene exe"



  • Ich glaube, unter Windows geht das mit sog. ressource-files. Ich rate dir allerdings zu der Variante mit der Datei. Kann man unter windows überhaupt eine Executable verändern, wenn sie gerade ausgeführt wird? Wenn nicht, dann wird es noch komplizierter...



  • Schreib z.B. einfach nen String "ABCZXYABCZXYABCZXYABCZXY..." in deinen Code. Den wirst du dann sehr wahrscheinlich auch genauso in der exe finden. Da kannst du dann z.B. anderen Text in deiner exe speichern.



  • megastore schrieb:

    Schreib z.B. einfach nen String "ABCZXYABCZXYABCZXYABCZXY..." in deinen Code. Den wirst du dann sehr wahrscheinlich auch genauso in der exe finden. Da kannst du dann z.B. anderen Text in deiner exe speichern.

    Und dann liest das Programm diesen String auch gleich als schon vorher eingegebenen Namen aus?



  • Heinzelotto schrieb:

    megastore schrieb:

    Schreib z.B. einfach nen String "ABCZXYABCZXYABCZXYABCZXY..." in deinen Code. Den wirst du dann sehr wahrscheinlich auch genauso in der exe finden. Da kannst du dann z.B. anderen Text in deiner exe speichern.

    Und dann liest das Programm diesen String auch gleich als schon vorher eingegebenen Namen aus?

    Versteh deine Frage nicht so ganz. Ich kenn das halt von früher, wenn man bei Kumpels lustige Texte ins Spiel "hacken" wollte, hat das so mit nem Hexeditor funktioniert. ABer die exe zur Laufzeit ändern könnte ein Problem sein.



  • [quote="megastore"]

    Heinzelotto schrieb:

    Versteh deine Frage nicht so ganz. Ich kenn das halt von früher, wenn man bei Kumpels lustige Texte ins Spiel "hacken" wollte, hat das so mit nem Hexeditor funktioniert. ABer die exe zur Laufzeit ändern könnte ein Problem sein.

    Naja, man muss dem Programm auch irgendwie mitteilen, dass "ABCZ..." nur ein dummy-string ist und dass das Programm den Benutzer beim ersten Mal trotzdem nach dem Namen fragen soll, obwohl an der Speicherstelle schon was steht. Das geht zum Beispiel, indem man noch ein Byte an den String vornedranhängt, welches entweder auf '0' (= nur ein Platzhalterstring) oder auf '1' (= Name wurde gesetzt, er beginnt direkt nach der '1') steht.



  • Ja, mein Vorschlag war ja auch keine Komplettlösung, sondern einfach nur ne Idee, wie es vielleicht gehen könnte. Das ganze wird sowieso wahrscheinlich ein gefrickel, wenn man das Programm ändert und sich dann auch die Textposition in der Exe ändert.


  • Mod

    Aus Interesse habe ich das gerade mal ausprobiert: Mindestens unter Linux kann man eine laufende Programmdatei nicht verändern. Ich nehme an, dass dies auch auf alle anderen Betriebssysteme zutrifft.



  • sollte eigentlich auf andere halbwegs moderne OS auch zutreffen.

    Weiss ned ob man in den sicherheitseinstellungen unter windows soweit rumfrickeln kann, das man den schutz aushebelt, aber bei uns auf den Musterclients (Windows XP pro )gehts definitiv nicht.
    Jeder versuch ueber das filesystem schreibend auf die exe zuzugreifen, wird mit nem fehler quittiert.

    Ciao ....



  • naja - braucht man eben noch nen 2. programm, was einfach wartet, bis das erste beendet ist (z.bsp. mutex) und das dann ändert - weiß nicht, in wie fern das mit nem einfachen skript geht - kann mir aber nicht vorstellen, dass das besser geht ^^
    das 2. programm kann nat. auch ne dll sein, wo ein neuer prozess gestartet wird...

    bb



  • Jedes halbwegs brauchbare Betriebssystem wird alles tun um zu verhindern dass eine ausführbare Datei während dem Betrieb verändert wird.
    Ansonsten wären Crackern ja noch mehr Tür und Tor geöffnet, denn der modifizierte Code würde ja mit den selben Rechten ausgeführt werden wie der echte, fatal!

    Die einzige Möglichkeit wäre die ausführbare Datei nach dem Beenden zu verändern.
    Das ist *relativ* einfach aber wie schon erwähnt ist sowas nicht vertrauenswürdig und dürfte in quasi jedem Viren-/Spyware-Scanner alle Warnleuchten tief rot aufleuchten lassen.

    Dieser Artikel könnte dich interessieren:
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-161865.html


Anmelden zum Antworten