在 CentOS(或其他 Linux 发行版)下进行反汇编(disassembly)和逆向分析,通常依赖一套工具链和实战技巧。下面从工具选择、常用技巧、实战流程、注意事项几个方面系统讲一下。
CentOS 自带或可用 yum 安装:
yum install binutils
常用命令:
objdump:反汇编、查看段信息readelf:ELF 结构分析nm:符号表strings:提取字符串示例:
objdump -d ./a.out
readelf -h ./a.out
yum install gdb
技巧:
disassemble main
layout asm
info registers
x/10i $pc
配合:
set disassembly-flavor intel(Intel 语法)catch syscallyum install radare2
file ./binary
readelf -h ./binary
关注:
objdump -M intel -d binary
或 GDB:
set disassembly-flavor intel
main 开始,而不是入口特别是 stripped 程序:
objdump -d binary | grep -A 50 "<main>:"
如果是 stripped:
main 的调用点(__libc_start_main)strings -a binary | less
然后:
objdump -d binary | grep -B 20 "地址"
cmp + je/jne → ifcall → 函数lea → 取地址mov [rbp-xx], xxx → 局部变量break main
run
stepi
disassemble
x/20xw $rsp
strings + cross-referencecatch loadSELinux
getenforce
setenforce 0
缺少调试符号
debuginfo-install glibc
旧版本 GCC
-fomit-frame-pointerobjdump + gdb如果你愿意,可以:
我可以直接按你的场景给针对性反汇编思路。