第1章:二进制分析工具全景

做逆向这么多年,我见过太多新手一上来就扎进代码里,结果被二进制流搞得晕头转向。其实啊,工具选对了,事半功倍。今天我就把压箱底的工具清单拿出来,跟你聊聊这些家伙到底该怎么用。

1.1 Hex编辑器:你的二进制显微镜

Hex编辑器,说白了就是让你直接看文件最原始的样子。我刚开始做逆向时,总觉得这玩意儿就是看看十六进制,没啥技术含量。直到有一次,我在分析一个恶意软件样本时,发现文件头被篡改了——用Hex编辑器一眼就揪出来了。

010 Editor

我个人最常用的就是010 Editor。它有个绝活——模板系统。你可以写一个模板,让编辑器自动解析二进制结构。比如分析PE文件时,加载一个PE模板,所有字段都给你标得清清楚楚。

核心功能:

  • 模板解析:支持自定义二进制结构模板
  • 脚本支持:用C语言风格写脚本处理数据
  • 比较功能:快速对比两个二进制文件的差异

我的小技巧:分析固件时,先用010 Editor的模板功能解析文件头,能省下至少一半的时间。

HxD

HxD是个轻量级选手,但别小看它。我经常用它做快速查看和简单修改。它支持大文件,处理几百MB的二进制文件也不卡顿。

注意:HxD没有撤销功能!我曾经手滑改错了一个字节,结果整个文件废了。改之前一定备份。

1.2 二进制分析框架:真正的重武器

Hex编辑器只能看表面,真要深入分析,还得上框架。这里我重点说两个:Radare2和Ghidra。

Radare2

Radare2是个命令行工具,学习曲线有点陡,但用熟了之后,效率极高。我记得有一次分析一个嵌入式设备的固件,用Ghidra打不开,Radare2硬是给啃下来了。

# 基本用法示例
r2 -A firmware.bin    # 打开并分析文件
[0x00000000]> afl     # 列出所有函数
[0x00000000]> pdf @main  # 反汇编main函数

为什么选Radare2?

  • 支持超过50种架构
  • 完全开源,可定制
  • 脚本能力强,适合自动化分析

Ghidra

Ghidra是NSA开源的逆向工具,图形界面做得不错。我团队里的新人,我一般都推荐先用Ghidra上手。它有个很牛的功能——反编译,能把汇编代码还原成C语言风格。

避坑指南:Ghidra对Java依赖较重,内存占用高。我曾经在8GB内存的机器上分析一个50MB的固件,直接卡死。建议至少16GB内存。

1.3 命令行工具:小而美的瑞士军刀

有时候,你不需要大动干戈。几个命令行工具就能搞定大部分工作。

xxd

xxd是Linux自带的工具,能把二进制文件转成十六进制显示,也能反向操作。我经常用它做快速查看和格式转换。

# 查看文件前100字节
xxd -l 100 firmware.bin

# 把十六进制转回二进制
xxd -r -p hexdump.txt > output.bin

od

od比xxd更灵活,支持多种输出格式。我个人习惯用od查看文件中的字符串和数值。

# 以十六进制显示,每行16字节
od -A x -t x1z -v firmware.bin | head -20

strings

strings这个工具,别看它简单,关键时刻能救命。它从二进制文件中提取可打印字符串。我分析恶意软件时,经常先用strings扫一遍,看看有没有可疑的URL、IP地址或者命令。

实用参数:

  • -n 5:只显示长度大于等于5的字符串
  • -e l:搜索Unicode字符串(很多恶意软件用这个隐藏信息)

1.4 工具选择策略

说了这么多,到底该用哪个?我总结了一个简单的选择逻辑:

场景 推荐工具 理由
快速查看文件头 HxD / xxd 轻量,启动快
分析未知格式 010 Editor + 模板 模板解析能力强
深度逆向分析 Ghidra / Radare2 功能全面,支持反编译
自动化处理 Radare2 + 脚本 命令行友好,可批量处理

1.5 知识体系总览

为了让你更直观地理解这些工具之间的关系,我画了一张图:

二进制分析工具知识体系 Hex编辑器 分析框架 命令行工具 010 Editor HxD Radare2 Ghidra xxd od strings 核心能力 文件结构解析 → 数据提取 → 反汇编/反编译 → 模式识别 → 漏洞分析 工具只是手段,核心是理解二进制数据的组织方式和运行逻辑

这张图把工具分成了三个层次:底层是Hex编辑器,负责最基础的查看和修改;中间是分析框架,提供深度分析能力;顶层是命令行工具,适合快速处理和自动化。三者配合使用,基本能覆盖90%的逆向场景。

我的建议:别贪多,先把一个工具用熟。我个人推荐从HxD和strings开始,上手快,能解决大部分日常问题。等遇到复杂场景了,再上Ghidra或Radare2。

好了,工具就聊到这儿。记住一点:工具是死的,思路是活的。下一章我们聊聊怎么用这些工具去识别二进制文件中的常见模式——那才是真正有意思的部分。


公众号:蓝海资料掘金营,微信deep3321