温馨提示×

linux如何反汇编so文件

小樊
56
2026-09-15 15:01:20
栏目: 智能运维

在 Linux 下反汇编 .so(共享库)文件,常用的方法有以下几种,按使用频率和易用性给你介绍:


一、使用 objdump(最常用、系统自带)

1. 反汇编整个 .so

objdump -d libxxx.so

2. 反汇编并查看符号

objdump -d -T libxxx.so
  • -T:显示动态符号表

3. 反汇编指定函数

objdump -d libxxx.so | grep -A 50 "function_name"

4. 查看汇编 + 源码(如果有调试信息)

objdump -d -S libxxx.so

二、使用 gdb(动态分析、调试反汇编)

1. 用 gdb 打开 so

gdb libxxx.so

2. 查看某函数反汇编

disassemble function_name

3. 查看当前函数

disassemble

适合:

  • 动态调试
  • 查看运行时行为

三、使用 readelf(查看结构,非直接反汇编)

readelf -h libxxx.so      # 文件头
readelf -S libxxx.so      # 段表
readelf -s libxxx.so      # 符号表

四、使用 nm(查看符号)

nm -D libxxx.so
  • -D:动态符号

五、使用专业反汇编工具(强烈推荐)

1. Ghidra(NSA 开源,免费)

# 下载后直接打开 .so 文件
  • 支持 ARM / x86 / x64
  • 有伪代码(Decompile)

2. IDA Pro(免费版 / 付费版)

  • 最强反汇编器
  • 支持so、ELF、Android so

3. radare2(r2)

r2 libxxx.so

进入后:

aaa        # 自动分析
pdf @ main # 反汇编函数

六、Android 的 .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?
  • 是 Linux 原生 还是 Android?
  • 是 学习汇编 还是 逆向分析?

我可以给你更具体的命令和示例。

0 踩