在 CentOS(或任何 Linux) 里,“反汇编指令”通常指 把二进制文件(可执行文件、库、内核模块等)转换成汇编代码。下面按常见场景给你一套实用指南。
objdump 反汇编which objdump
如果没有:
sudo yum install binutils
objdump -d ./a.out
objdump -d ./a.out | grep -A 20 "<main>:"
objdump -S ./a.out
objdump -M intel -d ./a.out
gdb 动态反汇编(调试时最常用)sudo yum install gdb
gdb ./a.out
disassemble main
或指定地址:
disassemble 0x4005b6
set disassembly-flavor intel
disassemble main
ni # 单步执行
disassemble
radare2(专业逆向工具)sudo yum install radare2
或手动安装最新版。
r2 ./a.out
进入后:
aaa # 自动分析
pdf @ main # 反汇编 main 函数
objdump -d /boot/vmlinux | grep -A 30 "<do_sys_open>:"
⚠️ 需要 未压缩、带符号的内核镜像
gcc -g -o test test.c
objdump -M intel -d test
| 需求 | 工具 |
|---|---|
| 静态反汇编 | objdump |
| 调试时反汇编 | gdb |
| 逆向分析 | radare2 |
| 查看符号 | nm, readelf |
| 查看函数地址 | objdump -t |
比如:
我想找
jmp、syscall、ret在哪
objdump -d ./a.out | grep -E "jmp|call|ret"
如果你能具体说:
我可以直接给你精准命令和实战示例。