温馨提示×

如何用ida反汇编linux

小樊
32
2026-10-24 00:43:03
栏目: 智能运维

下面给你一个从零到能用的 IDA 反汇编 Linux 程序的实用流程说明(以 IDA Pro / IDA Free 为例,适用于 ELF 文件)。


一、准备环境

1. 系统要求

  • Linux(Ubuntu / CentOS / Arch 等)或 Windows + 远程 Linux
  • IDA Pro(付费)或 IDA Free(官方免费版,功能足够反汇编)

2. 安装 IDA

  • 官方下载:https://hex-rays.com/ida-free/
  • Linux 版一般为 .run 文件:
chmod +x idafree.run
sudo ./idafree.run

二、准备要分析的 Linux 程序

1. 编译一个测试程序(可选)

// test.c
#include <stdio.h>
int main() {
    printf("Hello Linux\n");
    return 0;
}
gcc test.c -o test
file test
# test: ELF 64-bit LSB executable, x86-64

三、用 IDA 打开 Linux ELF 文件

方法一:图形界面

ida64 ./test

或

ida ./test   # 32 位

IDA 会自动:

  • 识别 ELF 格式
  • 识别架构(x86 / x64 / ARM 等)
  • 加载符号(如果有)

四、IDA 中常见视图(重点)

1. 反汇编视图(Disassembly)

  • 默认进入
  • 显示汇编代码
  • 函数名(如 main)可直接双击进入

2. 伪代码视图(F5)

最重要功能

  • 按 F5 → 生成 C 伪代码
  • 可读性强,适合理解逻辑

示例:

int __cdecl main(int argc, const char **argv)
{
  puts("Hello Linux");
  return 0;
}

五、常见分析技巧

1. 查看字符串

  • Shift + F12 → Strings 窗口
  • 双击字符串跳转到引用位置

2. 查看导入函数

  • Imports 窗口
  • 常见:
    • open, read, write
    • system, execve

3. 查看导出函数

  • Exports 窗口
  • 常用于分析 so 文件

4. 重命名变量 / 函数

  • N 重命名
  • 提高可读性

5. 添加注释

  • ; 添加注释

六、分析无符号的 Linux 程序( stripped )

1. 识别 main

  • 从 entry 找 _start
  • 找 call main 的位置

2. 恢复函数

  • 在代码处按 P 创建函数
  • IDA 会尝试分析栈和参数

3. 使用 FLIRT

  • IDA 自带库签名
  • 可识别 libc 函数

七、调试 Linux 程序(进阶)

方法 1:本地调试(Linux 上)

  • Debugger → Select debugger → Local Linux
  • F9 运行
  • 支持断点、单步

方法 2:远程调试

  • Linux 上运行:
./linux_server64
  • Windows IDA 连接

八、常见坑

问题 解决
IDA 打不开 确认是 ELF,不是脚本
无 main stripped,手动找
F5 失败 代码不完整,先按 P
架构不对 用 file 确认

九、推荐学习路径

  1. 会用 file, objdump, readelf
  2. 熟练 IDA 的:
    • 汇编视图
    • F5 伪代码
  3. 配合:
    • gdb
    • strace
    • ltrace

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

  • 你是 逆向 / CTF / 漏洞分析 / 学习汇编
  • 目标是 32 位 / 64 位 / ARM
  • 是否 有符号 / stripped

我可以直接给你针对性教程或实战示例。

0 踩