温馨提示×

linux strings怎样排查二进制

小樊
33
2026-09-17 15:16:57
栏目: 智能运维

在 Linux 下,strings 是一个非常实用的命令,用来从二进制文件(可执行文件、库、core dump 等)中提取可打印的字符串,常用于逆向分析、排查问题、安全审计等场景。

下面从用法 → 实战排查思路 → 常见技巧给你一个系统性的说明。


一、strings 基本用法

strings <二进制文件>

示例:

strings /bin/ls

默认会输出长度 ≥ 4 的可打印字符序列。

常用参数

strings -n 6 file        # 只显示长度 ≥ 6 的字符串
strings -a file          # 扫描整个文件(包括数据段)
strings -e l file        # 指定编码(l=16-bit little endian)
strings -t x file        # 显示字符串在文件中的偏移(十六进制)

二、用 strings 排查二进制的常见场景

1️⃣ 快速判断二进制是做什么的

strings binary | less

重点看:

  • 程序名 / 版本号
  • 路径
  • URL、IP
  • 错误信息
  • 函数名(如果有符号)

例如:

Usage: mytool [options]
https://example.com/api
Segmentation fault

2️⃣ 排查“程序连了哪里 / 发了什么”

strings binary | grep -E "http|ftp|ip|socket|connect"

常见线索:

  • http://
  • 127.0.0.1
  • /var/log/xxx
  • POST /api

3️⃣ 查找硬编码的敏感信息(安全风险)

strings binary | grep -iE "password|token|secret|key"

⚠️ 注意:

  • 只能发现明文信息
  • 加密/编码的内容看不到

4️⃣ 判断是否为加壳 / 混淆程序

strings binary | head

如果:

  • 字符串非常少
  • 只有 UPX
  • 大量乱码

可能是加壳:

strings binary | grep -i upx

5️⃣ 定位崩溃或日志来源

strings binary | grep -i "error\|fail\|assert"

结合 core dump:

strings core | less

6️⃣ 配合 offset 定位问题代码

strings -t x binary

输出示例:

  1a2b3c main
  1a2b50 usage_error

再用:

objdump -d binary | less

或:

gdb binary

三、strings 不够用时,配合这些工具

工具 用途
file 判断文件类型
nm 查看符号表
objdump 反汇编
readelf ELF 结构分析
ldd 查看依赖库
strace 运行时系统调用
ltrace 库函数调用

示例组合:

file binary
strings binary | grep error
strace ./binary

四、实战排查思路总结

✅ 先看文件类型
✅ 用 strings 快速扫一遍
✅ 抓关键词(url / error / path)
✅ 有嫌疑再用 objdump / gdb
✅ 运行时用 strace 验证


如果你有具体二进制(比如“为什么程序启动就退出”“怀疑有后门”),可以把现象或 strings 输出贴出来,我可以帮你具体分析。

0