在内存转储中以偏移 X 处打印行,每侧 +/- 10 行

在内存转储中以偏移 X 处打印行,每侧 +/- 10 行

我有一个巨大的内存图像正在调查和挖掘(64GB+)。太大,无法加载到内存/vim 中。我在内存文件上运行了包含偏移量的字符串,并将其保存到文件中,以便我可以搜索我感兴趣的指标。输出示例:

332327467 Washington1 
332327514 Redmond1 
332327536 Microsoft Corporation1

如何获取这些偏移量之一并打印出内存中的特定区域?理想情况下是 +/- 10 行(如果内存中有偶数行)。我想我见过 dd 或 xxd 这样做过,但我不确定。

编辑:最终我成功的工作流程变成了:

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

如果需要,从偏移量中减去稍微向后移动,并更改 count= 以向前移动(如果需要)。

答案1

如果要使用dd,可以使用skip=
bs一次读取/写入的数量,offset= bs* skip。Count 是读取/写入的次数。
示例:

$ dd if=input of=output bs=1 skip=332327467 count=128

相关内容