在 Ubuntu 上进行反汇编的常用方法与示例
一 准备与安装
sudo apt-get update && sudo apt-get install binutilssudo apt-get install gdbsudo apt-get install radare2sudo apt-get install nasmsudo apt-get install binutils-aarch64-linux-gnu(AArch64)或 binutils-arm-none-eabi(裸机 ARM)二 使用 objdump 进行反汇编
objdump -d your_binaryobjdump -d -M intel your_binaryobjdump -d -j .text your_binaryobjdump -S your_binaryobjdump -D your_lib.aobjdump -x your_binary、objdump -t your_binaryobjdump -d --start-address=0x400000 --stop-address=0x400100 your_binaryobjdump -d -j .text your_binary | grep -A 20 '<main>'-S 可将源码与汇编混合显示,便于定位三 使用 gdb 交互式反汇编
gdb your_binary(gdb) disassemble(gdb) disassemble function_name(gdb) disassemble 0x400526,0x400580四 其他工具与进阶用法
ndisasm -b 32 your_binaryndisasm -b 64 your_binaryndisasm -b 32 -o 0x100 your_binaryr2 your_binary[0x...]> pdf[0x...]> pdf @ mainaarch64-linux-gnu-objdump -d your_arm64_binaryarm-none-eabi-objdump -d your_arm_binary五 实用建议与常见问题
objdump -M intel--start-address/--stop-address;内核/引导代码或位置无关代码需设置正确偏移(如 -o 于 ndisasm)objdump -S 或 gdb 查看源码+汇编