在 Debian(以及一般 Linux)环境下,strings 命令用于从二进制文件、库文件或核心转储中提取可打印字符串,常用于逆向分析、排查依赖、定位错误信息等。下面从「怎么用 → 怎么看 → 怎么分析」三个层次说明。
strings /bin/ls
strings -n 6 /usr/bin/python3
strings -t x /lib/x86_64-linux-gnu/libc.so.6
-t x:十六进制偏移-t d:十进制偏移strings /usr/bin/curl | grep -i "user-agent"
strings /usr/sbin/nginx | grep -i version
常见输出:
nginx/1.22.1
strings app | grep -i "error\|fail\|segmentation"
strings binary | grep -i "password\|token\|secret"
⚠️ 若发现明文密码,说明代码有安全缺陷。
strings /usr/bin/apt | grep "\.so"
可辅助理解程序调用了哪些库(但不如 ldd 准确)。
结合偏移地址:
strings -t x binary > str.txt
然后用 objdump 或 gdb 定位:
objdump -s -j .rodata binary
如果未 strip:
file binary
# 若显示 "not stripped"
可结合:
nm binary
strings binary
dpkg -S /usr/bin/xxx
apt-cache policy xxx
确认 strings 中的版本是否与安装包一致。
file unknown_bin
strings -n 5 unknown_bin | head -50
strings unknown_bin | grep -i "usage\|copyright\|version"
strings core | grep -i "backtrace\|assert"
strings 只能看到可见字符,不能还原逻辑grep 使用如果你有具体文件类型(如 .deb、内核模块、动态库)或分析目的(逆向 / 安全 / 排错),我可以给更针对性的分析方法。