在 CentOS 上反汇编 动态库(.so),通常就是使用 GNU Binutils 或 LLVM/Clang 提供的工具。下面按常见场景给你一个完整、实用的指南。
sudo yum install -y binutils gdb objdump readelf
如果需要更强的反汇编(如 Intel 语法、控制流分析):
sudo yum install -y nasm radare2
file libxxx.so
示例输出:
ELF 64-bit LSB shared object, x86-64
ldd libxxx.so
readelf -S libxxx.so
objdump -d libxxx.so > libxxx.asm
objdump -M intel -d libxxx.so
objdump -M intel -d libxxx.so | grep -A 30 "<function_name>"
nm -D libxxx.so
nm -D libxxx.so | grep " T "
gdb libxxx.so
disassemble function_name
set disassembly-flavor intel
disassemble function_name
r2 libxxx.so
aaa
afl
pdf @ sym.function_name
objdump -d libxxx.so | grep -E "_init|_fini"
| 类型 | 特点 |
|---|---|
| Debug | 有符号表、未优化的汇编 |
| Release | 被优化、难读 |
| Strip | 无符号表 |
判断是否被 strip:
file libxxx.so
nm -D libxxx.so
或
objdump -T libxxx.so
说明被 strip,需要 逆向分析 + 动态调试
✅ 快速分析
objdump -M intel -d libxxx.so
✅ 函数定位
nm -D libxxx.so
✅ 深度逆向
r2 libxxx.so
如果你愿意,可以告诉我:
.so 是 x86 / x64 / ARM我可以给你 针对性的反汇编示例和解读。