温馨提示×

linux strings怎么分析二进制

小樊
36
2026-09-02 10:41:06
栏目: 智能运维

在 Linux 下分析二进制文件时,strings 是一个非常常用的工具,用来提取二进制中的可打印字符串,从而快速了解程序用途、依赖、路径、配置、加密特征等。

下面从 基本用法 → 实用技巧 → 配合其他工具 → 实战示例 给你系统讲一遍。


一、strings 基本用法

1. 最基本用法

strings binary_file

提取所有长度 ≥ 4 的可打印字符串(默认最小长度 4)。

2. 指定最小字符串长度

strings -n 6 binary_file

只显示长度 ≥ 6 的字符串,减少噪声。

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

strings -t x binary_file   # 十六进制偏移
strings -t d binary_file   # 十进制偏移

常用于配合 objdumpgdb 定位。


二、常用分析技巧

1. 搜索关键信息(路径 / URL / 配置)

strings binary | grep -i "http"
strings binary | grep -i "/etc/"
strings binary | grep -i "password"

2. 查看程序依赖(结合 strings)

strings binary | grep -i ".so"

快速看动态库名(不如 ldd 准确,但很直观)。

3. 判断程序语言 / 框架

strings binary | grep -i "python"
strings binary | grep -i "go1."
strings binary | grep -i "rust"

4. 提取可疑字符串并排序去重

strings binary | sort | uniq -c | sort -nr | head

三、strings 配合其他工具(重点)

1. strings + grep + less

strings -n 6 binary | grep -i "error\|fail\|debug" | less

2. strings + file(先看类型)

file binary
strings binary

3. strings + objdump(定位代码)

strings -t x binary | grep "main"
objdump -d binary | less

4. strings + xxd / hexdump

strings -t x binary
xxd binary | grep "偏移地址"

四、实战示例

示例 1:分析未知 ELF

file unknown_bin
strings -n 6 unknown_bin | less

你可能看到:

  • /lib64/ld-linux-x86-64.so.2
  • Usage: %s <ip> <port>
  • secret_key=

→ 基本可以判断这是一个网络工具。


示例 2:CTF / 逆向初探

strings crackme | grep -i "flag"
strings crackme | grep -i "correct\|wrong"

示例 3:恶意样本粗筛

strings malware | grep -i "wget\|curl\|/tmp/\|base64"

五、strings 的局限(很重要)

❌ 不能:

  • 还原逻辑
  • 解密字符串(尤其是运行时解密)
  • 替代反汇编

✅ 适合:

  • 快速侦察
  • 找线索
  • 缩小分析范围

六、进阶替代工具(可选)

工具 用途
rabin2 更结构化
binwalk 固件 / 嵌入文件
strings + grep 快速分析
Ghidra / IDA 真正逆向

如果你愿意,可以:

  • 发一个 具体二进制类型(ELF / PE / 固件)
  • 或说你是 CTF / 安全分析 / 运维排查

我可以直接给你一套针对性的 strings 分析命令

0