GDB: Verweisen auf den Wert, der vom Befehl Find zurückgegeben wirdLinux

Linux verstehen
Anonymous
 GDB: Verweisen auf den Wert, der vom Befehl Find zurückgegeben wird

Post by Anonymous »

Ich versuche, ein Programm zu portieren, das ich in Windows mit Systems zu Linux geschrieben habe. Das Programm liest den Speicher eines anderen Laufprozesses und zeigt bestimmte Werte an, die sich ändern. Um loszulegen und herauszufinden, wie ich es tun werde, habe ich beschlossen, in der Shell einen Beweis für das Konzept zu machen. >

Code: Select all

cat /proc/105928/maps > maps
< /code>
und aus dieser Ausgabe finde ich den Heap: < /p>
555558ed2000-55555ed43000 rw-p 00000000 00:00 0 [heap]
< /code>
Nun, weil ich ein paar Dinge über die untersuchte ausführbare Datei kenne, weiß ich irgendwo dort, dass es eine Reihe von Objekten gibt, und einige von ihnen haben den Wert 95000 (Ganzzahl, 4 Bytes) in ein bestimmtes Feld. Mit GDB 
ist es also ziemlich einfach, Verweise auf diese Werte zu finden, und es gibt sicher, dass 4 davon:
">"> ">(gdb) find 0x555558ed2000, 0x55555ed43000, 95000
0x55555c3f0744
0x55555deb7f50
0x55555deb8b60
0x55555deb9800
< /code>
Ich habe keinen Zugriff auf Debug -Symbole der Übereinstimmungen (nehme wir den ersten) die Adresse des Objekts.0x55555c3f0744 - 0x570 = 0x55555c3f01d4
< /code>
Da es sich um ein dynamisches Array handelt, muss sich irgendwo im Speicher befinden, der diesen Wert als Zeiger hält und dass ich daran interessiert bin, zu finden. Ich habe ein paar Dinge ausprobiert, hauptsächlich Variationen davon, die im Heap nach dem Wert suchen, aber ich habe ihn nicht ganz verwaltet (der /g < /g < /code> -Modifikator ist, ich nehme an, weil Zeiger 8 Bytes sind ): < /p>
(gdb) find /g 0x555558ed2000, 0x55555ed43000 - 0x8, 0x55555c3f01d4
Pattern not found.
< /code>
Etwas stolpert mich und ich weiß nicht was. Was könnte hier los sein? Stimmt etwas mit meiner Argumentation nicht?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post