![在内存转储中以偏移 X 处打印行,每侧 +/- 10 行](https://linux22.com/image/97816/%E5%9C%A8%E5%86%85%E5%AD%98%E8%BD%AC%E5%82%A8%E4%B8%AD%E4%BB%A5%E5%81%8F%E7%A7%BB%20X%20%E5%A4%84%E6%89%93%E5%8D%B0%E8%A1%8C%EF%BC%8C%E6%AF%8F%E4%BE%A7%20%2B%2F-%2010%20%E8%A1%8C.png)
我有一个巨大的内存图像正在调查和挖掘(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