温馨提示×

CentOS反汇编脚本怎么写

小樊
34
2026-08-30 10:31:07
栏目: 智能运维

这个问题需要分几种常见场景来说,因为 CentOS 本身没有一个叫“反汇编脚本”的标准工具,通常是指 用脚本调用反汇编工具(如 objdump、gdb、radare2、IDA 等)来批量分析二进制文件。下面给你几种 在 CentOS 上常用、可直接照着用的方案


一、最简方案:用 objdump 写反汇编脚本(最常用)

1️⃣ 单文件反汇编(示例)

objdump -d ./test_binary > test_disasm.asm

2️⃣ 批量反汇编脚本(Shell 脚本)

适合 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

3️⃣ 只反汇编 .text 段(更干净)

objdump -d -j .text ./test_binary

二、带符号表 / 调试信息(推荐)

如果二进制带 -g

objdump -S ./test_binary > test.asm

-S源码 + 汇编混合显示


三、用 gdb 写反汇编脚本(适合函数级分析)

示例:反汇编 main 函数

gdb -batch -ex "disassemble main" ./test_binary

批量脚本示例

#!/bin/bash

gdb -batch \
  -ex "set disassembly-flavor intel" \
  -ex "disassemble main" \
  ./test_binary

四、用 radare2(更专业,强烈推荐)

安装(CentOS)

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>:

六、常见 CentOS 注意事项

1️⃣ 安装 objdump

yum install -y binutils

2️⃣ 64 位 vs 32 位

objdump -M intel -d ./test_binary

3️⃣ 防止反汇编被截断

objdump -d --no-show-raw-insn ./test_binary

七、你可以再具体一点,我可以给你「定制脚本」

你可以告诉我:

  1. 二进制类型(ELF / 可执行文件 / so / 内核模块)
  2. 目的(漏洞分析 / 逆向 / 学习汇编 / CTF)
  3. 是否需要自动化分析(函数、字符串、控制流)

我可以直接帮你写一个 完整可用的 CentOS 反汇编脚本

0