将多个二进制文件中的所有字符串 Grep 到一个 txt 文件中

将多个二进制文件中的所有字符串 Grep 到一个 txt 文件中

我决定尝试转储几个实用程序的所有进程内存,以便找出攻击者理论上可以从应用程序内存中获取多少敏感信息。

我发现这一行用于转储目的:

grep rw-p /proc/$1/maps | sed -n 's/^\([0-9a-f]*\)-\([0-9a-f]*\) .*$/\1 \2/p' | while read start stop; do gdb --batch --pid $1 -ex "dump memory $1-$start-$stop.dump 0x$start 0x$stop"; done

不幸的是,我不能流畅地使用 Bash,并且面临着由该脚本生成的大量转储文件(全部约为千字节大小)。

所以,我的问题是:如何使用strings命令行工具将所有以 null 结尾的字符串 grep 到一个文件中?

所以,我写了这样的东西(进入无限循环,没有任何结果):

for f in *.dump; do strings $1 > foo.txt; done

我知道,这一条线路已经接近我的目标,但我最终无法使其发挥作用。

答案1

这个怎么样。使用“>>”追加到文件而不是每次都覆盖文件。

rm foo.txt
for f in *.dump; do strings $f >> foo.txt; done

为了帮助您进行审阅,您可能还需要通过“sort -u”进行管道传输以删除任何重复项。

如果您有许多大型 .dump 文件,可能需要一段时间才能运行。

相关内容