在 Debian 系统里,strings 是一个很常用的命令行工具,用来从二进制文件、库文件或内存转储中提取可打印字符串,在调试、逆向、排查依赖问题、确认编译信息等方面很有用。
下面按“是什么 → 怎么装 → 常见调试用法”来说明。
strings 属于 binutils 包,作用是:
从文件中提取长度大于等于指定值的可打印字符序列
常见使用场景:
.so 依赖、硬编码路径大多数 Debian 已自带,如果没有:
sudo apt update
sudo apt install binutils
验证:
strings --version
strings /usr/bin/ls
strings -n 8 ./myprogram
strings -t x ./myprogram
-t x:十六进制偏移-t d:十进制-t o:八进制调试时很常用,比如结合 gdb 定位字符串位置。
strings ./myprogram | grep -i version
strings ./myprogram | grep -i gcc
strings ./myprogram | grep "/etc"
strings ./myprogram | grep "/usr/lib"
用于排查:
strings ./myprogram | grep "\.so"
或更直接:
ldd ./myprogram
strings core
strings /proc/<pid>/mem
适合:
strings myprogram | grep -i "error"
strings myprogram | grep -i "fail"
strings myprogram | grep -i "permission"
strings ./app | grep -i "config"
输出:
/etc/app/config.yaml
→ 说明程序在找这个文件,你可以检查它是否存在。
strings ./app | grep -i debug
如果看到:
DEBUG_MODE_ENABLED
说明代码里可能有调试分支。
gdb ./myprogram
(gdb) info functions
(gdb) x/s 0x地址
strings -t x 得到的地址可用于 gdb 查看内容。
strings 只能看静态内容如果你愿意,可以告诉我:
我可以给你更具体的 strings 调试思路。