温馨提示×

怎样批量反汇编linux

小樊
46
2026-09-24 17:21:28
栏目: 智能运维

在 Linux 下“批量反汇编”通常指对一批二进制文件(或一批函数/段)自动进行反汇编并导出结果。下面按常见场景给你几种实用做法。


一、对多个二进制文件批量反汇编(最常用)

1️⃣ 使用 objdump(最基础)

mkdir -p disasm
for f in *.elf; do
    objdump -d "$f" > "disasm/$f.dis"
done

常用参数:

objdump -d          # 反汇编代码段
objdump -D          # 反汇编所有段
objdump -M intel    # Intel 语法(默认 AT&T)
objdump -S          # 源码+反汇编(需带调试信息)

2️⃣ 使用 gdb(少量文件、交互式)

gdb ./a.out
(gdb) disassemble main

批量方式(脚本):

gdb -batch -ex "disassemble main" ./a.out

二、对目录中所有可执行文件自动识别并反汇编

for f in /usr/bin/*; do
    if file "$f" | grep -q "ELF"; then
        objdump -d "$f" > "$f.dis"
    fi
done

三、使用专业反汇编工具(推荐)

✅ 1. radare2(强烈推荐,适合批量)

r2 -q -c 'pdf @ main' ./a.out

批量脚本:

for f in *.elf; do
    r2 -q -c 'aaa; pdf @ main' "$f" > "$f.r2"
done

常用命令:

  • aaa:自动分析
  • pdf:反汇编函数
  • afl:列出函数
  • e asm.bytes=false:关闭字节显示

✅ 2. Ghidra(GUI + 批量)

  • 新建 Project
  • 批量 Import 文件夹
  • 写脚本(Java / Python)自动反汇编导出

适合:

  • 大量固件
  • 需要伪代码(Decompiler)

✅ 3. IDA Pro(最强,但贵)

  • 命令行:
ida64 -B -P+ *.elf

四、只反汇编某些函数(高级批量)

用 nm + objdump

nm a.out | grep ' T ' | awk '{print $3}' | while read fn; do
    objdump -d --disassemble=$fn a.out
done

五、内核 / 模块批量反汇编

objdump -d vmlinux
objdump -d *.ko

六、常见坑提醒

  • ELF stripping 后函数名丢失 → 用 radare2 / IDA
  • ARM / MIPS 要指定架构
  • 不要直接反汇编 .o 未链接文件(地址无效)

七、如果你能说清楚:

  • ✅ 是 ELF / PE / 固件?
  • ✅ x86 / ARM / RISC-V?
  • ✅ 要 汇编 / 伪代码 / 控制流?
  • ✅ 文件数量级(几十 / 上千)

我可以直接给你一套可复制的批量脚本。

0 踩