strings 是 Linux 下一个非常常用的命令行工具,主要作用是从一个二进制文件或任意文件中提取可打印的字符串。下面从“为什么要用它”和“典型场景”来说。
strings二进制文件(如可执行程序、.so、核心转储、固件)里大量是机器码,但常常混杂着:
strings 能把这些** printable 的字符串**提取出来,方便人读。
strings /bin/ls
在安全研究中非常常见:
strings malware.bin | grep -i "http"
当你只有 .o、.a、.so、可执行文件,没有源代码时:
程序崩溃但没日志时:
strings core 可能看到线索路由器、IoT 设备固件通常是二进制:
strings firmware.bin
能快速看到:
strings -n 6 file # 只显示长度 ≥ 6 的字符串
strings -e l file # 指定字符编码(little-endian)
strings -a file # 扫描整个文件(不只数据段)
用
strings,是因为它能在“看不懂的二进制”里,快速找到“人能看懂的信息”。
如果你愿意,我也可以:
strings vs objdump