温馨提示×

怎样用debian strings调试

小樊
48
2026-10-12 21:38:40
栏目: 智能运维

在 Debian 系统里,strings 是一个很常用的命令行工具,用来从二进制文件、库文件或内存转储中提取可打印字符串,在调试、逆向、排查依赖问题、确认编译信息等方面很有用。

下面按“是什么 → 怎么装 → 常见调试用法”来说明。


一、strings 是什么

strings 属于 binutils 包,作用是:

从文件中提取长度大于等于指定值的可打印字符序列

常见使用场景:

  • 查看二进制里内置的字符串(路径、版本、错误提示)
  • 确认程序是否包含某些调试信息
  • 排查 .so 依赖、硬编码路径
  • 分析 crash / core dump / 日志中的线索

二、在 Debian 上安装

大多数 Debian 已自带,如果没有:

sudo apt update
sudo apt install binutils

验证:

strings --version

三、基础用法(调试中最常用)

1️⃣ 查看二进制中的字符串

strings /usr/bin/ls

2️⃣ 只看长度 ≥ N 的字符串(默认是 4)

strings -n 8 ./myprogram

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

strings -t x ./myprogram
  • -t x:十六进制偏移
  • -t d:十进制
  • -t o:八进制

调试时很常用,比如结合 gdb 定位字符串位置。


四、结合调试信息的实用技巧

✅ 1. 查看程序版本 / 编译信息

strings ./myprogram | grep -i version
strings ./myprogram | grep -i gcc

✅ 2. 查找硬编码路径(非常常见)

strings ./myprogram | grep "/etc"
strings ./myprogram | grep "/usr/lib"

用于排查:

  • 配置文件路径错误
  • 动态库加载失败

✅ 3. 查看依赖的库名(辅助 ldd)

strings ./myprogram | grep "\.so"

或更直接:

ldd ./myprogram

✅ 4. 分析 core dump / 内存文件

strings core
strings /proc/<pid>/mem

适合:

  • 程序崩溃但没有日志
  • 查看最后打印或错误信息

✅ 5. 结合 grep 快速定位问题

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 配合(高级)

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

strings -t x 得到的地址可用于 gdb 查看内容。


七、注意事项

  • strings 只能看静态内容
  • 加密 / 压缩字符串看不到
  • 看不到运行时拼接的字符串
  • 对 stripped 二进制仍然有效

如果你愿意,可以告诉我:

  • 你是在调试 什么程序(C / C++ / Go / Python 打包二进制?)
  • 是 启动失败 / crash / 依赖问题 / 逆向分析?

我可以给你更具体的 strings 调试思路。

0 踩