温馨提示×

如何用linux strings排错

小樊
34
2026-10-05 10:17:15
栏目: 智能运维

在 Linux 下,strings 是一个从二进制文件、core 文件、内存映像中提取可打印字符串的工具,常用于排错、逆向、取证、调试。下面按“常见错误场景 → 用法 → 实战示例”来说明。


一、strings 能帮你排错什么?

✅ 常见用途:

  • 查看程序里硬编码的路径、IP、端口、URL
  • 定位缺失的配置文件名
  • 查看错误信息字符串
  • 确认程序版本、编译信息
  • 分析 core dump / 崩溃程序
  • 查看动态库依赖线索
  • 判断程序是否被篡改(异常字符串)

❌ 不适合:

  • 看逻辑代码
  • 看加密内容
  • 看非 ASCII 中文(需额外处理)

二、基本用法

strings 文件名

示例:

strings ./myapp

三、排错实战场景

1️⃣ 程序启动失败,不知道读哪个配置文件

strings myapp | grep -i config

可能看到:

/etc/myapp/config.yaml
./config.json
MYAPP_CONFIG

✅ 线索:程序可能在找这些文件


2️⃣ 查看程序连接了哪些服务(IP / 域名)

strings myapp | grep -E "http|://|[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+"

示例输出:

http://127.0.0.1:8080/api
redis://10.0.0.5:6379

✅ 用于排查网络问题


3️⃣ 查看错误信息(崩溃 / 异常)

strings myapp | grep -i "error\|fail\|exception"

例如:

failed to open file
segmentation fault at
invalid token

✅ 对应代码中的提示信息


4️⃣ 分析 Core Dump

strings core.12345 | less

或结合 gdb:

gdb ./myapp core.12345

strings 可快速看崩溃前后残留字符串


5️⃣ 判断程序版本 / 编译信息

strings myapp | grep -i version
v1.2.3
GCC: (Ubuntu 9.4.0)
Build time: 2024-01-01

6️⃣ 查动态库依赖线索

strings myapp | grep "\.so"
libssl.so.1.1
libcrypto.so.1.1

✅ 缺库时很有用


四、常用参数(排错必备)

显示字符串偏移

strings -a -t x myapp
  • -t x:十六进制偏移
  • -a:扫描整个文件(不只是数据段)

最小字符串长度

strings -n 6 myapp

✅ 过滤短噪声


指定字符编码(中文)

strings -e l myapp
  • l:16-bit little endian
  • b:16-bit big endian

从内存 / proc 提取

strings /proc/<pid>/mem

⚠️ 需要权限(root)


五、配合其他工具更高效

strings myapp | grep -i error | less
strings myapp | grep -A2 -B2 "config"
objdump -s myapp | strings

六、排错思路总结

“程序不说话,strings 帮它说话”

排错流程:

  1. 程序异常
  2. strings 看硬编码信息
  3. 找路径 / 配置 / IP / 错误
  4. 结合日志、strace、gdb 验证

如果你有具体报错场景(比如某个程序崩溃、起不来、连不上服务),可以把现象发我,我可以直接帮你写 strings 排查命令。

0 踩