在 Linux 下用 strings 做逆向分析,是二进制安全/逆向工程里最常见、最基础的入门手段之一。下面我按「是什么 → 怎么用 → 实战套路 → 局限性」给你讲清楚。
strings 是 GNU binutils 中的工具,用来从二进制文件中提取可打印字符串(默认长度 ≥ 4)。
常用于:
strings binary
strings -n 6 binary
strings -t x binary
或
strings -t d binary
偏移可用于 IDA / Ghidra / gdb 定位
strings test.bin | less
常见有价值内容:
"Wrong password""DEBUG: user logged in"http://127.0.0.1:8888AES, RC4, base64strings binary | grep -i "password"
strings binary | grep -i "http"
strings binary | head
如果:
查看是否 UPX:
strings binary | grep UPX
strings -t x binary | grep "main"
然后在 IDA / Ghidra 中:
G 跳转到该地址例如看到:
Enter password:
Correct!
Wrong!
说明:
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% 的弯路。
如果你愿意,可以: