Radare2进阶之破解

文章重点基于[CrackerMe03]。这是R2 CrackerMe系列的典型的一个,算是CrackerMe系列的一个分水岭。在前面介绍破解,主要是通过修改字节码的方式,当然所有的CrackerMe都可以使用此方式。不过,这篇文章介绍一些其他的方式,主要是基于代码逻辑进行破解以及使用Emulator进行破解。

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 aei
  2. 初始化ESIL VM Memory(Stack) aeim
  3. 初始化 ESIL VM IP aeip
  4. 运行 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个的破解过程更新上。

公众号

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

helloworddm

你的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值