温馨提示×

linux下如何逆向分析二进制

小樊
38
2026-10-03 11:37:44
栏目: 智能运维

在 Linux 下进行二进制逆向分析,通常分为静态分析和动态分析两大类。下面给你一个比较系统、实用的入门到进阶指南。


一、准备环境

1. 基础工具安装

sudo apt update
sudo apt install -y gdb radare2 objdump file strings binutils

常见工具:

  • file:判断文件类型
  • strings:提取字符串
  • objdump:反汇编
  • gdb:动态调试
  • radare2 / rizin:强大逆向框架
  • IDA Free / Ghidra:图形化逆向(可选)

二、静态分析(不运行程序)

1. 查看基本信息

file ./target

确认是:

  • ELF 32/64 位
  • 动态 / 静态链接
  • 是否 stripped(去符号)

2. 提取字符串

strings ./target | less

常用于:

  • 查找提示信息
  • 关键函数名
  • 加密字符串

3. 反汇编(基础)

objdump -d ./target | less

常用选项:

objdump -d -M intel ./target   # Intel 语法

重点看:

  • main
  • printf / scanf
  • strcmp / memcpy

4. 使用 radare2 / rizin(推荐)

r2 ./target
# 或
rizin ./target

常用命令:

aa          # 自动分析
aaa         # 深度分析
afl         # 列出函数
s main      # 跳到 main
pdf         # 反汇编当前函数
izz         # 字符串

图形视图:

V           # 文本图形
VV          # 流程图

5. 符号与结构分析

如果是 stripped:

rabin2 -i ./target   # 导入函数
rabin2 -z ./target   # 字符串

三、动态分析(运行程序)

1. 使用 GDB

gdb ./target

常用:

break main
run
disassemble
stepi
info registers
x/10x $rsp

插件推荐:

  • pwndbg
  • peda
  • gef

安装 pwndbg:

git clone https://github.com/pwndbg/pwndbg
cd pwndbg
./setup.sh

2. 使用 strace(系统调用)

strace ./target

看:

  • open
  • read
  • write
  • execve

3. 使用 ltrace(库函数)

ltrace ./target

观察:

  • strcmp
  • malloc
  • printf

四、常见逆向场景

1. CrackMe(注册机)

步骤:

  1. strings
  2. 找 strcmp
  3. 下断点
  4. 动态分析输入与比较

2. 恶意样本分析

  • file
  • strings
  • strace
  • ltrace
  • 沙箱运行(谨慎)

⚠️ 不要直接运行未知二进制


3. 协议 / 加密分析

  • 找 memcpy / xor / aes
  • 动态断点
  • Dump 内存

五、图形化工具(可选)

Ghidra(免费)

# 下载后运行
./ghidraRun

优点:

  • 反编译 C 伪代码
  • 函数识别强

IDA Free(有限)

  • 仅 x86_64
  • 功能比 Pro 少

六、学习路线建议

  1. 熟悉汇编(AT&T / Intel)
  2. 会用 gdb + pwndbg
  3. 掌握 radare2
  4. 尝试 CrackMe
  5. 学 ELF 结构
  6. 学 pwn / malware 分析

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

  • 是 CTF / 安全研究 / 恶意分析 / 协议还原
  • 二进制是 ELF / 64位 / stripped
  • 是否有 源码或目标行为

我可以给你更针对性的分析步骤。

0 踩