Zeile bei Offset X im Speicherauszug drucken +/- 10 Zeilen auf jeder Seite

Zeile bei Offset X im Speicherauszug drucken +/- 10 Zeilen auf jeder Seite

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

verwandte Informationen