在 Debian(以及一般的 Linux 系统)里,strings 和 grep 是两个用途不同、但经常配合使用的命令。下面从“是什么、干什么、怎么用、区别”几个角度说明。
strings 是什么strings 用于从二进制文件或任意文件中提取可打印的字符串。
strings /bin/ls
输出类似:
Usage: %s [OPTION]... [FILE]...
%s: invalid option -- '%c'
GNU coreutils
strings -n 6 file # 只显示长度 ≥6 的字符串
strings -a file # 扫描整个文件(不止数据段)
grep 是什么grep 用于在文本中按模式搜索内容。
grep "error" /var/log/syslog
| 对比项 | strings | grep |
|---|---|---|
| 处理对象 | 二进制 / 任意文件 | 文本(或文本流) |
| 主要功能 | 提取可打印字符串 | 按模式匹配搜索 |
| 是否理解文件结构 | 否(只找 ASCII / Unicode) | 否 |
| 是否“搜索” | 不算,是提取 | 是 |
| 常见组合 | strings file | grep xxx |
单独使用 |
因为:
strings 把二进制变成“可读字符串”grep 再从这些字符串里找你关心的东西strings binary | grep password
或者:
strings -n 8 program | grep -i "http"
strings:把“看不懂的文件”变成“能看的一堆字”grep:在这些字里找你想要的那一行如果你愿意,我也可以举一个真实逆向 / 排查问题的完整例子。