第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编辑器,负责最基础的查看和修改;中间是分析框架,提供深度分析能力;顶层是命令行工具,适合快速处理和自动化。三者配合使用,基本能覆盖90%的逆向场景。
我的建议:别贪多,先把一个工具用熟。我个人推荐从HxD和strings开始,上手快,能解决大部分日常问题。等遇到复杂场景了,再上Ghidra或Radare2。
好了,工具就聊到这儿。记住一点:工具是死的,思路是活的。下一章我们聊聊怎么用这些工具去识别二进制文件中的常见模式——那才是真正有意思的部分。
公众号:蓝海资料掘金营,微信deep3321