Arbeitsspeicher manipulieren



  • Hi

    Also folgendes:
    Ich habe ein minigame welches in der Konsole von Unix läuft. Das game hat keine grafische Oberfläche, und besteht nur aus zahlen, welche berechnet werden sollen.
    Das besagte spiel hat einen Computergegner.

    Worum es mir geht. Wenn ich nun mein Programm starte, soll es automatisch die richtige zahl berechnen und diese dann quasi in die konsole eintragen.
    Dafür muss ich aber den basiswert haben, auf dessen sich die neue zahl errechen lässt. Ich denke den finde ich im arbeitsspeicher. Außerdem muss ich dann ja auch noch den neuen wert eintragen und bestätigen.

    Jetzt die Frage: ist sowas möglich
    Wenn ja: wie ist es möglich den Speicher auszulesen?
    Die prozess-id von dem spiel kann ich ausgeben, und der nutzer ggf eintragen.

    Das ganze ist lediglich eine spielerei. Ich habe bereits ein programm, welches die berechnungen durch führt. Da muss der user jedoch die zahl auf deren basis gerechnet wird von hand eintragen.

    Gedacht ist es, für den fall, dass die zahl, auf der ich die berechnung ausführe sehr groß ist. Denn die zahl geht immer nur in 3er schritten runter. was bei der zahl 10000 sehr lange und viele eingaben erfordern würde.

    ich hoffe mein anliegen ist klar geworden und es gibt ein lösungsmöglichkeit...

    Herzlichen Danke schon mal
    Sqwan



  • Unter Linux gibt es /dev/kmem (natürlich nur von root lesbar), um den Arbeitsspeicher auszulesen.



  • Nun ja... das ist schon mal schlecht. Denn ich bin nicht auf root und hab auch keine möglichkeit hinzukommen.

    Ich bin auch leider ziemlich neu in Unix. Auf windows geht das auf jedenfall. Da hatte ich mal was, wo ich den editor geöffnet hatte, und dann einfach über den fensternamen den speicher ansprechen konnte, was mir dann erlaubt, text, der im editor-fenster stand einfach über mein c prog zu ändern.

    Gibt es sowas nicht.

    Und darf ich als user nicht auf meinen eigenen speicher zugreifen?

    das spiel kompiliere ich nach dem einloggen mit c99,cc,gcc (weiß nicht ob das einfluss hat) spiel.c
    das ergebnis ist dann eine a.out
    Die pid kann ich mit ps -f abfragen.

    Gibts da nichts...
    /dev/kmem <-- sieht mir iwie wie ein ordner aus?



  • Sqwan schrieb:

    Und darf ich als user nicht auf meinen eigenen speicher zugreifen?

    Nein, wieso auch? Woher weiß das System, dass das Programm von dir ist und nicht irgend was böses? Das ist einfach Sicherheit, über die du dich freuen kannst.
    Wäre katastrophal, wenn jeder User, der gerade an einem Rechner angemeldet ist, den Speicher manipulieren könnte und so den Rechner am Ende kompromittieren.



  • nixgut schrieb:

    Sqwan schrieb:

    Und darf ich als user nicht auf meinen eigenen speicher zugreifen?

    Nein, wieso auch? Woher weiß das System, dass das Programm von dir ist und nicht irgend was böses?

    Naja... es zeigt ja auch an, dass der prozess mir ist. Aber wenns nicht geht, kann ich auch nichts machen... ^^

    Jetzt muss ich mir ne neue spielerei ausdenken...



  • achso. es gibt auch noch /proc/<PID>/mem , womit man den Speicher des Prozess mit der PID <PID> auslesen kann. Darauf kannst du iirc auch als nicht-root zugreifen, wenn der Prozess dir gehört.



  • ^^ ich hab mal geguckt. diesen ordner gibts bei mir garnicht.
    ist auch garnicht so wichtig... es gibt ja bessere wege sich zu beschäftigen als sachen zu machen die üblicher weise nicht gebraucht werden.



  • natürlich gibt es den Ordner /proc/<PID>/ auf jedem Unix-basierten System. Mit PID ist die Prozess Idendifikationsnummer gemeint die du in der Shell ermitteln kannst mit "ps -A" oder "ps -A | grep <Prozessname>"



  • hast du <PID> auch durch eine gültige PID ersetzt? Oder benutzt du kein Linux?

    IceTray schrieb:

    natürlich gibt es den Ordner /proc/<PID>/ auf jedem Unix-basierten System.

    Ne, gibt es eigentlich nur unter Linux.



  • rüdiger schrieb:

    Ne, gibt es eigentlich nur unter Linux.

    Solaris ebenfalls



  • zwutz schrieb:

    rüdiger schrieb:

    Ne, gibt es eigentlich nur unter Linux.

    Solaris ebenfalls

    Und AIX auch


Anmelden zum Antworten