分析 Linux 下的反汇编(尤其是 ELF 二进制)是一个系统工程,通常包括静态分析和动态分析两个阶段。下面按“从入门到进阶”的思路,给你一套可操作的分析方法。
在分析之前,先搞清楚:
| 工具 | 用途 |
|---|---|
objdump |
反汇编 ELF |
readelf |
分析 ELF 结构 |
nm |
查看符号表 |
strings |
提取字符串 |
file |
判断文件类型 |
gdb |
动态调试 |
radare2 / r2 |
高级逆向 |
Ghidra / IDA |
反编译 |
strace / ltrace |
系统调用 / 库调用 |
file ./target
readelf -h ./target
重点关注:
nm ./target
或:
readelf -s ./target
nm ./target # 几乎为空
objdump -d ./target
常用参数:
objdump -M intel -d ./target # Intel 语法
重点看:
main_startplt / gotreadelf -S ./target
重要段:
.text:代码.data:已初始化数据.bss:未初始化数据.plt / .got:动态链接strings ./target
结合:
gdb ./target
常用命令:
disas main
info functions
break main
run
stepi
info registers
x/10xw $rsp
查看:
strace ./target
ltrace ./target
objdump -R ./target
用于识别:
systemexecveopen/read/writerdi, rsi, rdx, rcx, r8, r9rax关注:
callretjmpje, jne, jg)识别:
upx -d target
r2 ./target
aaa
s main
pdf
file → readelf → strings → objdump → gdb → 逆向工具
分析顺序:
如果你愿意,我可以:
只要把文件或汇编贴出来即可。