在 Linux 下“批量反汇编文件”通常有以下几种常见场景和需求,我按使用目的给你一套清晰的做法。
objdump(GNU 工具链)适合 ELF 可执行文件、.o、静态库等。
for f in *.elf; do
echo "=== Disassemble $f ==="
objdump -d "$f" > "$f.asm"
done
常用参数:
objdump -d # 反汇编可执行代码
objdump -D # 反汇编所有段
objdump -M intel # Intel 语法(默认 AT&T)
示例(Intel 语法):
objdump -d -M intel ./a.out > a.asm
find . -type f -exec file {} \; | grep "ELF" | cut -d: -f1 | while read bin; do
objdump -d "$bin" > "$bin.asm"
done
gdb 批量反汇编(适合调试场景)gdb -batch \
-ex "file ./a.out" \
-ex "disassemble main" \
-ex "quit"
批量:
for f in binaries/*; do
gdb -batch -ex "file $f" -ex "disassemble" -ex "quit" > "$f.asm"
done
radare2(强大、适合逆向)sudo apt install radare2
for f in *; do
r2 -q -c "aa; pdf @ main" "$f" > "$f.asm"
done
常用:
r2 -q -c "aaa; pd 100" ./a.out
for f in $(find . -type f); do
if file "$f" | grep -q "ELF"; then
objdump -d "$f" > "$f.disasm"
fi
done
objdump -d ./a.out | less
radare2 更好)file 先确认是 ELF / PE / Mach-O如果你能告诉我:
我可以给你更精准的批量反汇编方案(如 IDA / Ghidra 批处理)。