温馨提示×

怎样调试debian strings

小樊
47
2026-09-16 06:57:51
栏目: 智能运维

在 Debian 系统里,strings 通常指 GNU binutils 提供的 strings 命令,用于从二进制文件、core 文件、库中提取可打印字符串。所谓“调试 strings”,一般有以下几种含义,我分别说明:


一、确认 strings 是否可用 / 来自哪个包

which strings
strings --version

如果找不到:

sudo apt update
sudo apt install binutils

确认来源:

dpkg -S $(which strings)

二、常用调试 / 排查用法

1. 从二进制中提取字符串(基本)

strings /bin/ls

2. 只显示长度 ≥ N 的字符串

strings -n 8 ./app

3. 显示字符串在文件中的偏移

strings -t x ./app      # 十六进制
strings -t d ./app      # 十进制

4. 指定字符编码

strings -e l ./app   # 16-bit little endian
strings -e b ./app   # 16-bit big endian

三、调试“为什么没提取到字符串”

1. 文件是否被 strip

file ./app

若显示 stripped,调试符号已移除,但 strings 仍可读取 .rodata。

2. 字符串是否被加密 / 压缩

常见于:

  • 加壳程序(UPX)
  • 自定义编码

可先检查:

strings -n 4 ./app | less

3. 是否是 Unicode / 宽字符

尝试:

strings -e l ./app
strings -e b ./app

四、结合 gdb / objdump 调试

用 objdump 看字符串段

objdump -s -j .rodata ./app

用 gdb 查看运行期字符串

gdb ./app
(gdb) info functions
(gdb) x/s 0x地址

五、如果你指的是“调试 strings 源码”

如果你是想调试 strings 程序本身(开发 binutils):

apt source binutils
cd binutils-*

调试构建:

./configure CFLAGS="-g -O0"
make
gdb ./binutils/strings

六、常见坑总结

问题 原因
没输出 被 strip / 加密
乱码 编码不对
字符串不全 -n 阈值太高
core 文件无效 架构不匹配

如果你说的是 某个具体程序叫 debian-strings、deb 包里的 strings 脚本,或者你在 逆向 / CTF / 软件调试 场景用 strings,可以告诉我具体场景,我可以给你更针对性的命令。

0 踩