可以,在 CentOS 上批量进行反汇编是完全可行的,常见做法取决于你“批量”的对象是什么。下面按常见场景给你几种方案。
objdump 批量处理objdump 是 CentOS 自带的常用反汇编工具。
for f in /path/to/bin/*; do
echo "=== $f ==="
objdump -d "$f" > "$f.asm"
done
或者只反汇编 .text 段:
objdump -d -j .text file
find ./ -type f -exec file {} \; | grep "ELF" | awk -F: '{print $1}' | while read f; do
objdump -d "$f" > "$f.disasm"
done
如果你知道函数名:
for func in func1 func2 func3; do
objdump -d --disassemble=$func binary
done
gdb ./binary <<EOF
disassemble main
disassemble func1
quit
EOF
批量写法:
gdb -batch -ex "disassemble main" -ex "disassemble func1" ./binary
r2 -q -c "aaa; pdf @ main; pdf @ func1" binary
批量:
for f in *.elf; do
r2 -q -c "aaa; e scr.color=0; pdf @ main" "$f" > "$f.rasm"
done
适合大规模二进制分析,支持脚本批量。
yum install binutils gdb
objdump -d -M intel binary # Intel 语法
我可以给你写一个 可直接用的 CentOS 批量反汇编脚本。