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
">"> ">(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?