首页
社区
课程
招聘
[翻译]radare2高阶
2018-7-2 10:21 4564

[翻译]radare2高阶

2018-7-2 10:21
4564

radare2高阶

预备知识

关于Radare2:

radare2是一个开源的逆向工程和二进制分析框架,包括反汇编、分析数据、打补丁、比较数据、搜索、替换、虚拟化等等,同时具备超强的脚本加载能力,它可以运行在几乎所有主流的平台(GNU/Linux, .Windows *BSD, iOS, OSX, Solaris…)并且支持很多的cpu架构以及文件格式。 radare2工程是由一系列的组件构成,这些组件可以在 radare2 界面或者单独被使用–比如我们将要在接下来实验中使用到的rahash2, rabin2, ragg2三个组件,所有这些组件赋予了 radare2 强大的静态以及动态分析、十六进制编辑以及溢出漏洞挖掘的能力。

Kali已经自带radare2

通过radare2来解决GameBoy ROM挑战的一个项目:simple.gb


1.1  实验任务一

任务描述:模拟器中运行,熟悉二进制文件。

Kali:

首先我们在radare2打开二进制文件,检查它的架构、格式


(i命令给出关于二进制文件的信息,~是r2内部的grep命令)

由上图可以看出这是一个GameBoy的ROM,那么在阅读了它的一些指令集之后我们该去完成这次挑战了

Win:

第一件事情就是在GameBoy模拟器中打开这个ROM

首先需要安装模拟器










这是一个简单的游戏,通过使用箭头键,可以分别增加/减少5位数。我们只需要找到正确的密码就可以了

随机选择数字,然后按回车键,会发现提示fail


接下来我们开始分析代码并搜索检查输入的函数

实验任务二

任务描述:分析二进制文件

切换到kali


(izzq会打印出存在于整个二进制文件中的字符串)


现在我们知道了fail的地址,接下来我们找到引用它的地方。我们使用grep搜索查找


(pd代表打印出反汇编代码print disassembly)

我们可以看到在0x2e4引用,所以我们搜索这个地址,并打印该函数:


(s用于搜索地址,pdf用于打印出反汇编函数)

我们可以看到,radare2识别出我们的函数从0x274开始。在底部有一些比较操作,然后跳转到失败的消息或者其他消息(字符串在0x02ee),我们去那儿看看。


(ps意思是打印字符串,@是一个临时搜索)

我们找到了win

那么我们给0x274重命名为check_input,然后开始分析

依次输入


(afn意思是分析函数名称,VV将会打开视图图形化模式)

进入视图界面


可以看到,函数结合了很多跳转和if条件语句

我们发现函数检查每个数字,并将其与正确的比较。在左边我们可以看到有效数字。让我们快速查看这些块。我们使用p在不同视图之间再次切换,直到达到常规图形模式。


简单地看了一下,大概地明白程序的意思了:二进制程序检查是否每个位置上的数字都与特定的值相等。使用cmp imm命令按照这个顺序:3,7,5,1,9检查。

1.2  实验任务三

任务描述:模拟器中运行成功

切换到win:

我们在模拟器中输入看看


或者


都不行

那我们还是仔细看看函数吧

切换到kali:


我们分析下在第一个块中的汇编代码:

在第一个块中,0x4被移动到hl(ld指令),而hl又移动到寄存器bc,然后bc中引用的值与0x3进行比较。bc指向我们的输入,因此此处的检查功能检查bc+4是否等于0x3。在下一个块中,我们可以看到返回到其原始值的bc现在增加了两次(Inc)(bc+2),它所引用的值与0x7进行了比较。在示例的最后一个块中,bc返回其初始值,然后递增一次,其引用值与0x5比较。

那么逻辑就应该是这样的:

def check_password (guess):   

 if guess[4]==3 and guess[2]==7 and guess[1]==5 andguess[3]==1 and guess[0]==9:

    print "WIN!"

 else:

     print "FAIL!"

由上述代码代码逻辑可以看出,输入的数字作为数组排列的话,应该为95713

切换到win,输入95713,可以看到成功输出win


自行学习radare2的其他高阶用法,并用radare2自行分析、破解其他程序

参考链接:

radare2官网:

www.radare.org

r2高阶玩法:

https://www.megabeets.net/reverse-engineering-a-gameboy-rom-with-radare2/


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

最后于 2019-1-24 13:35 被admin编辑 ,原因:
上传的附件:
收藏
免费 1
打赏
分享
最新回复 (1)
雪    币: 38385
活跃值: (19325)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
kanxue 8 2018-7-2 11:32
2
0
图片没有了,建议直接在论坛本地帖一份。
游客
登录 | 注册 方可回帖
返回