Kann man mit einem Debugger wie gdb aktuell laufende Prozesse hijacken?



  • Mal angenommen ich habe Firefox schon gestartet und würde jetzt gerne mein Passwort in Firefox auslesen wollen ohne dazu aber die Optionen von Firefox selbst zu benutzen oder firefox noch einmal mit überwachendem Debugger zu starten.

    Was ich gerne hätte wäre vereinfacht gesagt so etwas:

    $ ps -A | grep -i firefox
     4532 ?        00:00:00 firefox
    $ gdb #id4532
    (gdb) print version
    Firefox 3.6
    (gdb)
    

    Natürlich dürfte das mit dem Ausdruck der version nicht so einfach sein, schließlich hat man keine Debugingsymbole.
    Aber es geht halt erstmal darum, auf den Prozess und seinen Dateninhalt zugreifen zu können.



  • Hab's rausgefunden:

    $ sudo gdb /usr/bin/firefox 4532
    

    Nur wie mache ich einen Memory Dump einer Funktion, die gerade aufgerufen wurde?
    D.h. ich weiß zwar mit backtrace die Adresse der Funktion, aber nicht ihren Inhalt.

    Kann man den mit gdb irgendwie ausgeben?
    Oder soll ich mir ein Programm schreiben, daß eine Adresse entgegen nimmt und
    als Array interpretiert und ausgibt.

    Also z.b. in etwa so etwas:
    (der Code kann noch Fehler enthalten, ich hab das hier nur mal so auf die schnelle ohne zu compilieen reingeschrieben)

    /* meinMemoryDumper.c */
    #include <stdio.h>
    
    int main()
    {
      int i;
      int *ptr;
      scanf("Bitte Adresse eingeben: %p", ptr);
      for (i=0; i <= 50; i++)
      (
         printf("%i", (int) ptr[i]);
      )
      return 0;
    }
    

    Und die Adresse einer Funktion eines laufenden Prozesses (wie z.B. Firefox) erhalte ich ja mit gdb.

    Dementsprechend müßte ich also meinen MemoryDumper nur noch mit root Rechten starten und dann dort die Adresse eingeben, so daß das ganze etwa so aussieht:

    $ sudo meinMemoryDumper
    Bitte Adresse eingeben: 0x020347034723495
    dlktjsmlrgtikmspeo4tfawpot90a3485m02a3u590rq384tkmgseio4tuq2ßtt95n0g9560hiq6....
    $
    


  • Hab's rausgefunden.

    x/10 0x1238131235

    gibt die 10 nächsten Werte von obiger Adresse aus.


Anmelden zum Antworten