首页
社区
课程
招聘
[分享]使用Radare2进行破解-实战篇
发表于: 2020-11-29 15:19 3732

[分享]使用Radare2进行破解-实战篇

2020-11-29 15:19
3732

文章重点基于[CrackerMe03]。这是R2 CrackerMe系列的典型的一个,算是CrackerMe系列的一个分水岭。在黑客攻击-软件破解(1) 中对破解进行了简单的介绍,主要是通过修改字节码的方式,当然所有的CrackerMe都可以使用此方式。不过,这篇文章介绍一些其他的方式,主要是基于代码逻辑进行破解以及使用Emulator进行破解。

工具

Radare2,基本的使用在这里进行了介绍。

需要Radare2电子书文档的,可以直接去github搜索,当然了,如果上网不方便,可以单独私信我。本文部分内容也来自这个文档。

CrackerMe00

现说一个最简单的CrackeMe00。 查看字符串信息 rabin2 -z crackme0x00在这里插入图片描述通过字符串信息,大概推断密码是250382。运行程序,输入250382,Pass!在这里插入图片描述

CrackerMe01

继续CrackeMe01。 查看字符串信息 rabin2 -z ./crackme0x01,没有什么有价值的信息。在这里插入图片描述使用Radare2进行反汇编main函数:pdf @ sym.main在这里插入图片描述分析汇编代码可知就是对0x149a和输入内容进行比较。Pass!在这里插入图片描述看汇编可能不太方便,那就使用decompiler,类似IDA中的F5功能pdg @ sym.main在这里插入图片描述这里使用了radare2ghidra插件,还有pdz使用的插件是retDec。当然还有radare默认的decompiler命令pdc,这个效果不太好。在这里插入图片描述

CrackerMe02

继续CrackeMe02。 查看字符串信息 rabin2 -z ./crackme0x02,没有什么有价值的信息。在这里插入图片描述使用Radare2进行反汇编main函数:pdf @ sym.main在这里插入图片描述这个看起来比较麻烦了。使用decompiler看一下 pdg @ sym.main在这里插入图片描述目测密码是0x52b24。Pass!在这里插入图片描述再介绍一种破解方法,基于Radare2里面的一个非常强大的功能ESIL and Emulation。后面文章会详细介绍这个强大的功能,在很多情况下上可以取代动态调式。

ESIL stands for 'Evaluable Strings Intermediate Language'. It aims to describe a Forth-like representation for every target CPU opcode semantics. ESIL representations can be evaluated (interpreted) in order to emulate individual instructions For partial emulation (or imprecise full emulation) radare2 uses its own ESIL intermediate language and virtual machine

1.初始化ESIL VM aei2.初始化ESIL VM Memory(Stack) aeim3.初始化 ESIL VM IP aeip4.运行 aesu addrerss

在这里插入图片描述通过最后的结果可以判断出var_ch的值是338724,也就是密码。这是在基本不知道逻辑的情况下获取到最终的结果。加密解密不正符合这种情况!

CrackerMe03

查看功能

典型的crackeMe003类型题目,输入密码,判断密码是否正确。前面的So easy,来个有难度的。在这里插入图片描述

查看字符串信息

使用rabin2使用rabin2 -z crackme0x03

在这里插入图片描述好像没有什么特别有用的信息。

使用Radare2进行分析

通过分析,主要的判断逻辑放在了sym.test这个函数。pdf @ sym.test在这里插入图片描述查看sym.shift函数 pdf @ sym.shift在这里插入图片描述可以看出,最终的输出是在这个函数进行打印的。

decompiler看一下. pdg @ sym.shift。推测这个函数是通过输入参数,构造最终的打印结果。核心算法是sub al, 0x3在这里插入图片描述通过以上的代码,大致可以对断除在sym.test中的两个判断必然有一个会打印密码正确的信息。于是可以推测,如果传能给sym.test的两个参数一致,则会打印密码正确的信息。从decompiler中可以知道其中一个参数是0x52b24,于是可以就此推断密码是0x52b24。换成十进制的试下,Pass在这里插入图片描述

写在最后

CrackerMe系列总共有10个,后续会把剩余的6个的破解过程更新上。

公众号

更多逆向方面的内容,欢迎关注我的微信公众号:无情剑客。在这里插入图片描述



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

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 1515
活跃值: (4416)
能力值: ( LV10,RANK:170 )
在线值:
发帖
回帖
粉丝
2
radare2ghidra插件怎么安装呢....
2020-12-7 23:00
0
雪    币: 443
活跃值: (1157)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3

r2pm -ci r2ghidra

最后于 2021-4-7 23:17 被无情剑客_bur编辑 ,原因:
2020-12-7 23:19
0
游客
登录 | 注册 方可回帖
返回
//