在 Linux 下“反汇编 .so(共享库)文件”通常分为几种目的:
下面按常用工具 + 实战命令给你一个清晰指南。
.soobjdump -d libxxx.so > disasm.txt
objdump -S libxxx.so
objdump -d libxxx.so | grep -A 50 "func_name"
objdump -T libxxx.so # 动态符号
nm -D libxxx.so # 动态符号
file libxxx.so
readelf -S libxxx.so
ldd libxxx.so
readelf -d libxxx.so
gdb ./app
(gdb) info sharedlibrary
(gdb) disassemble func_name
适合:
.soFile → Open → libxxx.so
NSA 开源逆向工具
ghidraRun
r2 libxxx.so
[0x00000000]> aaa
[0x00000000]> afl
[0x00000000]> pdf @ sym.func_name
.so 特殊处理如果是 Android so:
# ARM 反汇编
objdump -d -m arm libxxx.so
# 或用 aarch64
aarch64-linux-gnu-objdump -d libxxx.so
推荐直接用 IDA / Ghidra
| 目的 | 命令 |
|---|---|
| 看汇编 | objdump -d |
| 看函数 | nm -D |
| 崩溃定位 | gdb + bt |
| 逆向分析 | IDA / Ghidra |
| ARM | objdump -m arm |
objdump + readelf(理解 ELF)gdb(动态)IDA / Ghidra(逆向)如果你愿意,可以告诉我:
.so 是 x86 还是 ARM我可以直接给你“最合适的命令组合”。