简短回答:strings 本身不能直接“查源码”,但可以辅助你从二进制文件里找线索,间接帮助定位源码或理解程序行为。
下面分开说清楚。
strings 是干什么的strings 是 Debian/Unix 下的一个工具,用来从二进制文件(可执行文件、库、固件等)中提取可打印字符串。
例如:
strings /bin/ls
你能看到:
但它不是反编译器,也看不到高级语言源码(C/C++/Rust 等)。
strings 能“查源码”的几种情况如果程序没有 strip:
file /usr/bin/xxx
# 显示 not stripped
你可能看到:
/home/user/project/src/main.c:123
这能直接指回源码位置。
例如你看到:
Failed to open config file: %s
你可以用:
grep -r "Failed to open config file" /usr/src/
前提是:
Debian 上很多是开源的:
apt source packagename
然后:
strings binary | grep "interesting string"
再去源码里搜,非常常见。
strings 不能做的事❌ 还原 C/C++/Rust 源码
❌ 显示变量名、控制流
❌ 替代 objdump / gdb / IDA / Ghidra
如果你真想“看源码级别”的东西:
| 工具 | 用途 |
|---|---|
objdump -d |
反汇编 |
gdb |
调试 |
nm |
看符号表 |
readelf |
ELF 信息 |
Ghidra / IDA |
反编译(GUI) |
apt source |
拿真实源码 |
strings不能直接查源码,但它是分析二进制、定位源码、理解程序行为的第一步。
如果你愿意,可以告诉我:
我可以给你更具体的命令。