温馨提示×

如何反汇编so文件linux

小樊
46
2026-10-24 00:39:54
栏目: 智能运维

在 Linux 下“反汇编 .so(共享库)文件”通常分为几种目的:

  • 看汇编代码(反汇编)
  • 看符号 / 函数名
  • 做逆向分析(配合反编译)
  • 定位崩溃或性能问题

下面按常用工具 + 实战命令给你一个清晰指南。


一、最常用:objdump(基础反汇编)

1. 反汇编整个 .so

objdump -d libxxx.so > disasm.txt

2. 反汇编并同时显示源码(若有调试信息)

objdump -S libxxx.so

3. 只看某个函数

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

4. 查看符号表

objdump -T libxxx.so   # 动态符号
nm -D libxxx.so        # 动态符号

二、查看结构与信息(辅助分析)

1. 文件基本信息

file libxxx.so

2. ELF 段信息

readelf -S libxxx.so

3. 动态依赖

ldd libxxx.so

4. 导出函数

readelf -d libxxx.so

三、更强大的反汇编 / 逆向工具

1. gdb(动态 + 静态结合)

gdb ./app
(gdb) info sharedlibrary
(gdb) disassemble func_name

适合:

  • 调试 .so
  • 看运行时地址
  • 配合 core dump

2. IDA Pro(强烈推荐,逆向首选)

  • 支持 ARM / x86 / x64
  • 自动识别函数
  • F5 反编译为 C 伪代码
File → Open → libxxx.so

3. Ghidra(免费、强大)

NSA 开源逆向工具

ghidraRun
  • 支持反汇编 + 反编译
  • 适合没有 IDA 的情况

4. radare2(命令行逆向神器)

r2 libxxx.so
[0x00000000]> aaa
[0x00000000]> afl
[0x00000000]> pdf @ sym.func_name

四、ARM / Android .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

六、建议学习路径

  1. objdump + readelf(理解 ELF)
  2. gdb(动态)
  3. IDA / Ghidra(逆向)

如果你愿意,可以告诉我:

  • .so 是 x86 还是 ARM
  • 你是 调试 / 逆向 / 学习汇编
  • 是否 有符号 / 无符号

我可以直接给你“最合适的命令组合”。

0 踩