本文作者:binlmmhc
0x01---radare2介绍
最近在看别人的病毒分析报告的时候,看到别人使用了radare2这个开源二进制分析平台,发现这个平台在我们CTF逆向解题中还是很好用的。
radare2刚开始只是一个取证工具,后来逐渐加入了一系列二进制分析和调试工具,就成为了command界面下很好的二进制分析工具了。
0x02---radare2安装以及工具预览
radare2是可移植,在多系统平台上运行,如下
- Rpi3-arm32
- macOS-x86-64
- Termux/Android-arm64
- VoidLinux-x86-64
- Windows-x86-64
如果是在windows上的,我们可以在官网取得安装http://www.radare.org/r/,如果是其他平台的可以直接拉取github上面的仓库,然后根据他的安装方法安装即可,推荐使用sys/install.sh安装。
我两个系统平台都安装了,现在在windows下操作,安装完毕后会有一些列工具,如下,安装完成之后将这个目录添加到系统环境变量下,就可以随时调用了。
- rabin2->查看文件格式的
- radiff2->比较文件不同的
- rahash2->各种密码算法,hash算法集成
- rasm2->汇编和反汇编
- ragg2->开发shellcode工具(radare2自己编写的编译器)
- radare2->整合了所有工具
0x03---工具详细介绍
0x0301---rabin2
这个工具是用来获取文件信息的,我们可以获取二进制文件的架构,平 台,区块等各种信息。
我们可以使用rabin2 -I ./Easy_CrackMe.exe来获取进本的二进制文件 信息,和获取入口点等。如下
0x0302---rahash2各种加密算法和hash函数
这个工具可以让我们快速对文件整体,对部分区块,对字符串等执行加密解密和 hash等各种操作。比如我们在下载一些文件时,需要快速比较文件的Hash,我们可以 用这个工具来快速生成各种hash
支持的算法如下,超级多。
我们给我们的exe来生成sha256和md5的hash,可以说相当方便了。
0x0303----rasm2
这个工具我们可以用来反汇编和汇编用,就用例子来说吧
0x0304---ragg2
这个是radare自己实现的编译器,用来快速开发shellcode等,所以学到后面高级的,还需要学习他的语言格式。
0x04---实战来学习radare2
这次从reversing.kr这个逆向网站上下载了第一个程序来进行学习。
我们逆向的时候基本都是IDA一打开,马上F5,就和代码审计差不多了。。。
拿到程序,我们先了解一下文件的基本信息
得到32位的GUI程序。
然后启动看一下
然后我们使用radare2这个集成工具来逆向这个程序
这个程序有很多的命令,所以使用radare2我们要记住很多命令,但是很多命令都是英
文缩写的。并且他的命令都是树级结构的,可以层层递进。
我们要让它分析一下程序,使用a 系列命令,让他自动分析输入aaa
好了分析完毕,现在我们先使用vv命令来粗略浏览一下函数列表
我们看到了0x401080位置这个地方的函数调用了GetDlgItemTextA这个API,我们先标 记一下这个函数。
但是我们还是先从entryo和main来看一下,entry0这个不用说了,是C/C 程序初始 化入口点。我们看一下main, 使用s 命令可以跳转到某个地址或者已经有了符号的函 数中去。然后我们使用pdf这个命令可以打印main这个函数的汇编代码。
除了汇编代码外,radare2还实现了IDA的类似F5功能,我们可以使用pdc命令来实现
还是挺不错的,然后还有图形界面,我们可以使用大写的VV命令来到图形界面
然后可以使用方向键或者HJKL来移动图形,我们在图形界面下输入$可以得到更清晰的 界面。
我们知道这个是一个GUI程序,我们看到了DialogBoxParamA这个函数,windows的GUI 程序,控件都是和相应的消息处理函数绑定一起的,我们看到了0x401020这个函数
s跳转到一个地址或者你认为的函数时,如果解析不了,可以使用af来分析一下函数
接下来我们看调用了GetDlgTemTextA这个关键信息,然后我们可以使用afx来看一下函
函数调用
可以看到0x00401080就是调用了上面API的函数地址,和我们之前标记的那个时一样
的。确定关键函数就是0x401080了
最后分析这个函数,挺简单的,都是字符串对比
先是对比第2位,然后对比34位,然后对比后面的,最后对比第一位
得到flag Ea5yR3versing
0x05---总结
这次主要是为大家介绍一下这个工具,更多的radare2的特性还需要大家下去挖掘,比如radare2还有web界面的视图,相当酷炫,还有脚本接口等来方便我们分析二进制文件。
Xrefs:https://radare.gitbooks.io/radare2book/content/analysis/code_analysis.html
Xrefs:http://reversing.kr