在 Debian 系统里,strings 通常指 GNU binutils 提供的 strings 命令,用于从二进制文件、core 文件、库中提取可打印字符串。所谓“调试 strings”,一般有以下几种含义,我分别说明:
which strings
strings --version
如果找不到:
sudo apt update
sudo apt install binutils
确认来源:
dpkg -S $(which strings)
strings /bin/ls
strings -n 8 ./app
strings -t x ./app # 十六进制
strings -t d ./app # 十进制
strings -e l ./app # 16-bit little endian
strings -e b ./app # 16-bit big endian
file ./app
若显示 stripped,调试符号已移除,但 strings 仍可读取 .rodata。
常见于:
可先检查:
strings -n 4 ./app | less
尝试:
strings -e l ./app
strings -e b ./app
objdump -s -j .rodata ./app
gdb ./app
(gdb) info functions
(gdb) x/s 0x地址
如果你是想调试 strings 程序本身(开发 binutils):
apt source binutils
cd binutils-*
调试构建:
./configure CFLAGS="-g -O0"
make
gdb ./binutils/strings
| 问题 | 原因 |
|---|---|
| 没输出 | 被 strip / 加密 |
| 乱码 | 编码不对 |
| 字符串不全 | -n 阈值太高 |
| core 文件无效 | 架构不匹配 |
如果你说的是 某个具体程序叫 debian-strings、deb 包里的 strings 脚本,或者你在 逆向 / CTF / 软件调试 场景用 strings,可以告诉我具体场景,我可以给你更针对性的命令。