在 Debian(或一般 Linux)系统里说 strings 无输出,通常有以下几种常见原因。你可以逐条对照排查。
strings 默认只从二进制文件中提取可打印字符串。
strings file.txt
如果 file.txt 是纯文本、压缩包、图片、空文件,就可能完全无输出。
✅ 检查文件类型:
file yourfile
很多 Debian 包安装的可执行文件或 .so 被 strip 过:
file /bin/ls
# ELF 64-bit ..., stripped
stripped 文件仍然通常有字符串,但比源码少很多。
如果完全没输出,可能是:
最常见错误:
strings
这样会等待 stdin,看起来像无输出。
✅ 正确用法:
strings /path/to/binary
或从 stdin:
cat binary | strings
strings 默认只显示 ≥4 字符 的字符串。
strings -n 6 binary
如果你设了很大的 -n,可能什么都没有。
✅ 尝试:
strings -n 1 binary
例如:
upx 压缩strings 只能看到壳里的少量字符串。
✅ 可尝试:
upx -d binary
默认 strings 扫整个文件。
如果你用了 -e 或某些参数,可能限制范围。
注意:
strings 是 binutils 里的工具debian-strings 的标准命令检查是否装了:
which strings
dpkg -l | grep binutils
file yourfile
ls -l yourfile
strings -n 1 yourfile
如果你愿意,可以把:
file yourfile 的输出贴出来,我可以直接帮你判断是哪一种情况。