在 CentOS 上做反汇编,通常就是使用 binutils 提供的工具(如 objdump、gdb)或者 ndisasm、radare2、gdb 等。下面按常见场景给你一个实用指南。
CentOS 一般自带:
which objdump
如果没有:
sudo yum install binutils
objdump -d ./a.out
objdump -d ./a.out | grep -A 30 "<main>:"
gcc -g test.c -o test
objdump -S test
objdump -d -m i386:x86-64 test
安装:
sudo yum install gdb
gdb ./a.out
disassemble main
disas
layout split
安装:
sudo yum install nasm
ndisasm -b 64 test.bin
安装:
sudo yum install radare2
r2 ./a.out
[0x000000]> aaa
[0x000000]> pdf @ main
// test.c
int main() {
return 0;
}
gcc test.c -o test
objdump -d test | less
objdump -d ./a.out | grep syscall
readelf -h ./a.out
| 架构 | objdump 参数 |
|---|---|
| x86_64 | -m i386:x86-64 |
| i386 | -m i386 |
| ARM | -m arm |
objdump -dgdb 单步执行gcc -S 看编译器生成的汇编如果你愿意,可以告诉我:
我可以直接给你对应的最佳命令组合。