这个问题需要分几种常见场景来说,因为 CentOS 本身没有一个叫“反汇编脚本”的标准工具,通常是指 用脚本调用反汇编工具(如 objdump、gdb、radare2、IDA 等)来批量分析二进制文件。下面给你几种 在 CentOS 上常用、可直接照着用的方案。
objdump 写反汇编脚本(最常用)objdump -d ./test_binary > test_disasm.asm
✅ 适合 CentOS 6/7/8 ✅ 适合 ELF 可执行文件 / .o 文件
#!/bin/bash
TARGET_DIR="./binaries"
OUT_DIR="./disasm"
mkdir -p "$OUT_DIR"
for file in "$TARGET_DIR"/*; do
if [ -f "$file" ]; then
filename=$(basename "$file")
echo "Disassembling $filename ..."
objdump -d "$file" > "$OUT_DIR/${filename}.asm"
fi
done
echo "Done."
使用方法:
chmod +x disasm.sh
./disasm.sh
.text 段(更干净)objdump -d -j .text ./test_binary
如果二进制带 -g:
objdump -S ./test_binary > test.asm
-S 会 源码 + 汇编混合显示。
gdb 写反汇编脚本(适合函数级分析)gdb -batch -ex "disassemble main" ./test_binary
#!/bin/bash
gdb -batch \
-ex "set disassembly-flavor intel" \
-ex "disassemble main" \
./test_binary
radare2(更专业,强烈推荐)yum install -y radare2
r2 -A -c 'pdf @ main' -q ./test_binary
#!/bin/bash
for bin in ./binaries/*; do
echo "=== $bin ==="
r2 -A -c 'pdf @ main' -q "$bin"
done
#!/bin/bash
objdump -d ./test_binary | \
awk '/^0/ { if ($2 ~ /<.*>:$/) print $2 }'
输出示例:
<main>:
<func1>:
<func2>:
yum install -y binutils
objdump -M intel -d ./test_binary
objdump -d --no-show-raw-insn ./test_binary
你可以告诉我:
我可以直接帮你写一个 完整可用的 CentOS 反汇编脚本。