Tengo una imagen de memoria enorme que estoy investigando y explorando (64 gb+). Demasiado grande para cargarlo en memoria/vim. Ejecuté cadenas en el archivo de memoria con las compensaciones incluidas y las guardé en un archivo para poder buscar los indicadores que me interesan. Ejemplo de salida:
332327467 Washington1
332327514 Redmond1
332327536 Microsoft Corporation1
¿Cómo tomo una de esas compensaciones e imprimo esa área específica en la memoria? Idealmente +/- 10 líneas (si hay líneas pares en la memoria). CREO que he visto a dd o xxd hacerlo, pero no estoy seguro.
Editar: Al final, mi flujo de trabajo exitoso se convirtió en:
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
Restando del desplazamiento para retroceder ligeramente las palabras si es necesario, y cambiando count= para avanzar si es necesario.
Respuesta1
Si desea usar dd
, puede usar skip=
bs
cuánto leer/escribir a la vez, offset= bs
* skip
. Contar es cuántas veces leer/escribir.
Ejemplo:
$ dd if=input of=output bs=1 skip=332327467 count=128