温馨提示×

怎样用linux strings逆向分析

小樊
44
2026-09-08 12:00:28
栏目: 智能运维

在 Linux 下用 strings 做逆向分析,是二进制安全/逆向工程里最常见、最基础的入门手段之一。下面我按「是什么 → 怎么用 → 实战套路 → 局限性」给你讲清楚。


一、什么是 strings

strings 是 GNU binutils 中的工具,用来从二进制文件中提取可打印字符串(默认长度 ≥ 4)。

常用于:

  • 快速了解程序功能
  • 找关键字(URL、密码、函数名、错误信息)
  • 辅助定位逆向分析入口

二、基本用法

1️⃣ 最简单用法

strings binary

2️⃣ 指定最小长度

strings -n 6 binary

3️⃣ 显示字符串偏移(非常重要)

strings -t x binary

strings -t d binary

偏移可用于 IDA / Ghidra / gdb 定位


三、结合逆向分析的实战套路

✅ 1. 先看程序“说了什么”

strings test.bin | less

常见有价值内容:

  • 错误信息:"Wrong password"
  • 调试信息:"DEBUG: user logged in"
  • URL:http://127.0.0.1:8888
  • 加密名:AES, RC4, base64

✅ 2. 搜索关键字

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

✅ 3. 判断是否加壳 / 混淆

strings binary | head

如果:

  • 几乎没有字符串
  • 全是乱码 ➡ 很可能加壳(UPX、themida 等)

查看是否 UPX:

strings binary | grep UPX

✅ 4. 提取字符串偏移用于反汇编

strings -t x binary | grep "main"

然后在 IDA / Ghidra 中:

  • G 跳转到该地址
  • 查看交叉引用(Xref)

✅ 5. 从字符串反推逻辑(CTF 常见)

例如看到:

Enter password:
Correct!
Wrong!

说明:

  • 有输入校验
  • 成功/失败分支明显
  • 可用 gdb 下断点

四、strings 不够用时怎么办

strings 只能看“明文”,以下情况无效:

情况 解决方式
字符串加密 动态调试 / 解密函数分析
字符串在运行时生成 gdb / strace / ltrace
混淆严重 IDA / Ghidra 反编译
网络/系统调用 strace / lsof

五、进阶组合技(强烈推荐)

strings -t x binary | grep -i flag
strings binary | sort | uniq -c | sort -nr
objdump -s -j .rodata binary

六、总结一句话

strings 是逆向的“ reconnaissance(侦察)”阶段工具
不解决一切问题,但能让你少走 80% 的弯路。

如果你愿意,可以:

  • 给我一个具体二进制(CTF / 实战)
  • 或告诉我你用的是 CTF / malware / 普通软件逆向 我可以直接带你一步步分析。

0