简短结论:不能。 strings 只能从二进制文件中提取“可打印字符串”,无法还原源码。
下面详细说一下:
strings 是什么strings 是一个 Linux 命令行工具,用来从二进制文件(如可执行文件、库文件、core dump 等)中提取连续的、可打印的字符序列。
例如:
strings a.out
可能会看到:
Usage: myapp [options]
error: file not found
/usr/lib/libc.so.6
这些通常只是:
源码编译成二进制后,发生了这些事:
strings 连反汇编都做不到,更别说还原 C / C++ / Rust 源码。
file a.out
# 含 "not stripped" 或带 debug_info
可以用:
objdump -dgdbreadelf但仍然只是汇编 + 符号,不是源码。
可以用:
strings(看字符串)objdump -d(反汇编)IDA Pro / Ghidra(反编译,最接近源码)radare2⚠️ 反编译器(如 Ghidra)只能生成近似源码,而且:
var_1, arg_2那就:
.o 以外的源码存档
strings只能“看文本”,不能“看代码”,更不能“还原源码”。
如果你愿意,可以告诉我:
我可以给你更具体的建议。