你问“为什么 strings 命令在 Linux 下结果很多”,这通常指对一个文件(特别是二进制文件、库文件、可执行文件)运行 strings 后,输出成千上万行。原因主要有下面这些:
strings 本身的作用strings 会从文件中提取所有可打印字符序列(默认长度 ≥ 4)。
它不区分:
所以只要文件里“碰巧”有连续可打印字符,就会被打印出来。
例如:
/home/user/project/xxx.c)libc.so.6 等)一个普通可执行文件就可能有几千到几万字符串。
如果是:
.so / .a 文件会包含:
结果会“非常多”。
-g 编译)带调试信息的文件包含:
这会显著增加 strings 输出。
很多程序会把:
文件中即使不是真字符串,也可能出现:
strings 不会判断“是否有意义”。
例如:
strings /usr/bin/*
或
strings core.dump
结果自然极多。
# 只看更长的字符串
strings -n 8 file
# 过滤关键字
strings file | grep -i error
# 只看某一段(如数据段)
strings -e l file
Linux 下 strings 结果很多,是因为二进制文件本身包含大量文本、符号和调试信息,而 strings 会把所有“像字符串的东西”都打印出来。
如果你愿意,可以告诉我:
strings我可以帮你更精准地分析或过滤。