在 Linux 下反汇编 .so(共享库)文件,常用的方法有以下几种,按使用频率和易用性给你介绍:
objdump(最常用、系统自带).soobjdump -d libxxx.so
objdump -d -T libxxx.so
-T:显示动态符号表objdump -d libxxx.so | grep -A 50 "function_name"
objdump -d -S libxxx.so
gdb(动态分析、调试反汇编)gdb libxxx.so
disassemble function_name
disassemble
适合:
readelf(查看结构,非直接反汇编)readelf -h libxxx.so # 文件头
readelf -S libxxx.so # 段表
readelf -s libxxx.so # 符号表
nm(查看符号)nm -D libxxx.so
-D:动态符号# 下载后直接打开 .so 文件
r2 libxxx.so
进入后:
aaa # 自动分析
pdf @ main # 反汇编函数
.so(NDK / ARM)如果是 Android 的 so:
# 用交叉工具链
arm-linux-androideabi-objdump -d libxxx.so
或直接使用 IDA / Ghidra
| 目的 | 推荐工具 |
|---|---|
| 快速看汇编 | objdump |
| 调试运行 | gdb |
| 逆向分析 | Ghidra / IDA |
| ARM so | Ghidra / r2 |
如果你愿意,可以告诉我:
.so 是 x86 / x64 / ARM?我可以给你更具体的命令和示例。