可以的,在 CentOS 上完全可以使用脚本来做“反汇编”相关的工作。下面我分几种常见场景给你说明,并附上示例。
objdump(最常用,系统自带)objdump -d ./a.out
反汇编某个函数:
objdump -d ./a.out | grep -A 20 "main>:"
gdb(调试 + 反汇编)gdb ./a.out
(gdb) disassemble main
脚本化:
gdb -batch -ex "disassemble main" ./a.out
readelf(查看符号、节区)readelf -S ./a.out
readelf -s ./a.out
#!/bin/bash
for f in "$@"; do
echo "===== $f ====="
objdump -d "$f"
done
使用:
chmod +x disasm.sh
./disasm.sh a.out b.out
#!/bin/bash
FILE=$1
objdump -d "$FILE" | awk '
/main>:/{flag=1}
flag{print}
/^$/{if(flag) exit}
'
#!/bin/bash
gdb -batch \
-ex "set pagination off" \
-ex "disassemble main" \
"$1"
很多 CentOS 默认就有 objdump,如果没有:
sudo yum install -y binutils
sudo yum install -y gdb
你也可以:
例如(Python + capstone):
from capstone import *
md = Cs(CS_ARCH_X86, CS_MODE_64)
code = open("a.out", "rb").read()
for i in md.disasm(code, 0x1000):
print(f"{i.address:#x}: {i.mnemonic} {i.op_str}")
安装:
pip install capstone
✅ CentOS 可以:
objdump 写 shell 脚本gdb 批量反汇编如果你能告诉我:
我可以给你更针对性的脚本。