Strings 和 Grep 是两个用途不同的工具,虽然它们都和“文本/字符串”有关,但解决的问题不一样。
strings 是一个用于从二进制文件(或其他非文本文件)中提取可打印字符串的工具。
strings a.out
输出类似:
/lib64/ld-linux-x86-64.so.2
Hello, world!
Usage: program <file>
grep 是一个用于在文本中搜索匹配模式的工具。
grep "error" log.txt
ps aux | grep nginx
grep -E "[0-9]{3}" file.txt
| 对比项 | Strings | Grep |
|---|---|---|
| 主要用途 | 从二进制中提取字符串 | 文本搜索 |
| 输入类型 | 二进制 / 非文本文件 | 文本 |
| 是否支持正则 | ❌ 不支持 | ✅ 支持 |
| 是否提取内容 | ✅ 自动提取 | ❌ 只匹配 |
| 常见场景 | 二进制分析、逆向 | 日志、代码、文本处理 |
✅ 可以,而且非常常见
例如:
strings binary_file | grep "password"
含义:
passwordStrings 负责“找字符串”,Grep 负责“找匹配”。
如果你愿意,我也可以给你一个二进制分析实战示例,或者讲讲它们和 xxd、objdump 的区别。