逆向工程实战手册 第 2 章

第 2 章 环境搭建与工具链

📍 知识点地图 | 主题:环境搭建与工具链 | 前置:第1章 | 后续:第3章起 | 核心概念:静态/动态/模拟工具、bootstrap自举

2.1 需要的前置知识/软件

依赖 用途
Java / JDK jadx、apktool(Android 工具)
Node.js 22+ JS 工具链、MCP server
Python 3.x Frida、angr、pwntools 等脚本工具
一台 Linux(推荐 Kali / Ubuntu)或 Windows 主力分析环境

2.2 核心工具清单(按用途分组)

静态分析

工具 用途 平台
file 识别文件类型/架构 全平台
strings / rabin2 -z 提取字符串 全平台
objdump / readelf 反汇编、查看节区 Linux
radare2(r2/rabin2/rasm2/radiff2) CLI 全功能分析 全平台
IDA Pro 商业反编译器(最强大) 全平台
Ghidra 免费反编译器(NSA) 全平台
Binary Ninja 现代化二进制分析 全平台
jadx APK → Java 源码 全平台
apktool APK 解包/重打包/smali 全平台
dnSpy .NET 反编译调试 Windows
class-dump / jtool2 iOS Mach-O 分析 macOS
retdec.com / dogbolt.org 在线反编译对比 Web

动态分析

工具 用途
GDB + pwndbg/GEF Linux 调试
x64dbg / OllyDbg Windows 调试
lldb macOS/iOS 调试
ltrace / strace 库调用/系统调用跟踪
Frida 跨平台动态插桩(Android/iOS/桌面)
Objection Frida 的免脚本增强层

符号执行与模拟

工具 用途
angr 符号执行,自动求解
Qiling 跨平台模拟执行(可模拟 PE/ELF/固件)
Unicorn CPU 级模拟执行引擎
Triton 动态符号执行
Manticore 符号执行

Android 动态

工具 用途
adb 设备连接/安装/日志
Frida + frida-server Hook
MobSF 自动化移动安全分析
Objection SSL Pinning/Root 检测绕过

逆向辅助

工具 用途
BinDiff / Diaphora 二进制对比
ROPgadget / Ropper / one_gadget gadget 搜索
libc-database libc 指纹反查
pwntools exploit 编写框架
binwalk / unblob 固件提取
qemu 跨架构仿真
capstone / keystone 反汇编/汇编引擎(库)
z3 约束求解器
lief 二进制格式解析修改库

2.3 一键安装(Windows PowerShell)

仓库自带自举脚本,缺什么自动装什么,不要猜路径:

# 查看支持的能力
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\Users\1\src\reverse-skill\skills\scripts\bootstrap-reverse.ps1" -List

# 按需安装,例如
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\Users\1\src\reverse-skill\skills\scripts\bootstrap-reverse.ps1" -Capability @('jadx','apktool','frida','radare2') -StartServices

# 刷新工具索引(检测本机已装工具)
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\Users\1\src\reverse-skill\skills\scripts\refresh-tool-index.ps1"

Linux / macOS:

bash skills/scripts/bootstrap-reverse.sh --list
bash skills/scripts/refresh-tool-index.sh

2.4 Python 包(逆向核心全家桶)

pip install frida-tools angr qiling uncompyle6 capstone lief z3-solver pwntools ropgadget
# Python 3.9+ 字节码: pycdc 需要从源码编译
# git clone https://github.com/zrax/pycdc && cd pycdc && cmake . && make

2.5 Linux 系统包

apt install gdb radare2 binutils strace ltrace apktool upx binwalk qemu-user qemu-user-static

2.6 环境验证(装完跑一遍)

# 核心工具是否可用
file --version && strings --version
r2 -v && rabin2 -v
gdb --version
frida --version
angr: python3 -c "import angr; print(angr.__version__)"
jadx --version
apktool --version
adb devices

2.7 目录规划建议(学习期)

~/re/
├── tools/        # 工具源码(pwndbg、libc-database 等)
├── challenges/   # CTF 题目、crackme 存档
├── cases/        # 每个分析任务一个文件夹
└── notes/        # 学习笔记(强烈建议!)

仓库实践:每个任务建独立 case 目录(scope / timeline / workitems / artifacts),结束后写报告并沉淀经验。学习期就养成这个习惯。

动手练习

  1. 在本机跑 bootstrap-reverse.ps1 -List,看你的机器支持哪些能力。
  2. 安装至少:radare2 + Frida + angr + jadx,全部 --version 通过。
  3. 建好你的 ~/re/ 学习目录结构。

深入阅读

  • 仓库:skills/tool-index.md(本机工具实际状态:路径、版本、脚本引用)
  • 仓库:skills/scripts/bootstrap-reverse.ps1 / bootstrap-manifest.json(自动安装清单)
  • 仓库:docs/platforms/linux.mdkali/README-kali.md(平台专项安装)
  • 仓库:skills/awesome-re-resources.md(更多工具与学习资源)