在 Linux 下用 strings 做“逆向分析”通常指:从二进制文件(可执行文件、库、固件、内存 dump 等)中提取可读字符串,辅助理解程序功能、定位关键信息。strings 本身不是真正的反汇编工具,但非常实用。
下面按实用流程讲。
strings binary_file
strings -n 6 binary_file
strings -t x binary_file # 十六进制偏移
strings -t d binary_file # 十进制偏移
strings binary | grep -i "password"
strings binary | grep -i "http"
strings binary | grep -E "encrypt|decrypt|token"
strings binary | grep "\.so"
strings binary | grep -E "^[a-zA-Z_][a-zA-Z0-9_]*$"
strings -t x binary | grep "error"
得到偏移后,用:
objdump -D binary | less
# 或
gdb binary
搜索对应地址。
strings 只是第一步,真正逆向通常配合:
file binary
objdump -d binary | less
nm binary
readelf -s binary
r2 binaryghidragdb ./binarystrings chall | grep -i flag
strings chall | grep -E "flag\{.*\}"
strings malware | grep -i "wget\|curl\|/bin/sh\|socket"
strings firmware.bin | grep -i "root\|password\|telnet"
strings 只能看明文
strings是逆向的第一道侦察手段:先找“人话”,再找“代码”。
如果你愿意,可以告诉我:
我可以直接给你一套针对性命令。