Ich habe ein riesiges Speicherabbild, das ich untersuche und durchforste (64 GB+). Zu groß, um es in den Speicher/Vim zu laden. Ich habe Zeichenfolgen auf der Speicherdatei mit den enthaltenen Offsets ausgeführt und sie in einer Datei gespeichert, damit ich nach den Indikatoren suchen kann, die mich interessieren. Beispielausgabe:
332327467 Washington1
332327514 Redmond1
332327536 Microsoft Corporation1
Wie nehme ich einen dieser Offsets und drucke diesen bestimmten Bereich im Speicher aus? Idealerweise +/- 10 Zeilen davon (wenn der Speicher gerade Zeilen enthält). Ich glaube, ich habe gesehen, dass dd oder xxd das machen, bin mir aber nicht sicher.
Bearbeiten: Letztendlich sah mein erfolgreicher Arbeitsablauf wie folgt aus:
strings --radix=d mem.dump >> mem.asc
strings --radix=d -el mem.dump >> mem.uni
grep "blah" mem.asc *or* mem.uni
*grab offset from beginning of line*
dd if=mem.dump bs=1 skip=*offset here* count=100 | xxd
Subtrahieren Sie vom Offset, um bei Bedarf leicht zurückzugehen, und ändern Sie count=, um bei Bedarf vorwärtszugehen.
Antwort1
Wenn Sie verwenden möchten dd
, können Sie angeben skip=
bs
, wie viel auf einmal gelesen/geschrieben werden soll, offset= bs
* skip
. Count gibt an, wie oft gelesen/geschrieben werden soll.
Beispiel:
$ dd if=input of=output bs=1 skip=332327467 count=128