温馨提示×

怎么用linux strings逆向

小樊
47
2026-09-05 13:55:08
栏目: 智能运维

在 Linux 下用 strings 做“逆向分析”通常指:从二进制文件(可执行文件、库、固件、内存 dump 等)中提取可读字符串,辅助理解程序功能、定位关键信息strings 本身不是真正的反汇编工具,但非常实用。

下面按实用流程讲。


一、基本用法

1. 提取字符串

strings binary_file

2. 提取更长字符串(默认 ≥4)

strings -n 6 binary_file

3. 显示字符串在文件中的偏移

strings -t x binary_file   # 十六进制偏移
strings -t d binary_file   # 十进制偏移

二、结合逆向分析的常见用法

1. 搜索关键字(函数名、URL、密码、提示语)

strings binary | grep -i "password"
strings binary | grep -i "http"
strings binary | grep -E "encrypt|decrypt|token"

2. 查看程序使用的库(动态链接)

strings binary | grep "\.so"

3. 提取符号名(未 strip 的程序)

strings binary | grep -E "^[a-zA-Z_][a-zA-Z0-9_]*$"

4. 定位字符串在反汇编中的位置

strings -t x binary | grep "error"

得到偏移后,用:

objdump -D binary | less
# 或
gdb binary

搜索对应地址。


三、配合其他工具(很重要)

strings 只是第一步,真正逆向通常配合:

1. file(确认文件类型)

file binary

2. objdump(反汇编)

objdump -d binary | less

3. nm / readelf(符号表)

nm binary
readelf -s binary

4. radare2 / ghidra / gdb

  • r2 binary
  • ghidra
  • gdb ./binary

四、实战例子

例子 1:CTF 中找 flag

strings chall | grep -i flag
strings chall | grep -E "flag\{.*\}"

例子 2:分析恶意程序

strings malware | grep -i "wget\|curl\|/bin/sh\|socket"

例子 3:从固件提取信息

strings firmware.bin | grep -i "root\|password\|telnet"

五、限制与注意

  • strings 只能看明文
  • 加密、压缩、混淆的内容看不到
  • 字符串地址 ≠ 逻辑流程
  • 真正理解程序需要反汇编 + 动态调试

六、一句话总结

strings 是逆向的第一道侦察手段:先找“人话”,再找“代码”。

如果你愿意,可以告诉我:

  • ELF / Windows exe / 固件 / 内存 dump
  • CTF / 恶意分析 / 普通学习

我可以直接给你一套针对性命令。

0