unicorn教程二

本文介绍了一种使用UnicornEngine优化慢速Flag计算的方法。面对一个计算Flag极为缓慢的程序,文章详细阐述了如何利用IDAPro反编译代码,识别瓶颈,并通过动态编程优化递归的Fibonacci函数,显著提升Flag的计算速度。

来看看第一道题目
在这里插入图片描述
下载过来后先使用file查看一下
在这里插入图片描述
是64位可执行文件
尝试运行,如下图所示
在这里插入图片描述
我们可以注意到,它会计算并打印我们的Flag,但这个过程非常缓慢,并且Flag的计算过程会随着字节的增多变得越来越慢。从其最开始的输出可以看到flag为hxp{F
这就意味着,我们需要对程序进行优化,以尽快得到Flag。
在IDA Pro的帮助下,我们可以将代码反编译成像C语言一样的伪代码。
使用IDA x64打开
在这里插入图片描述
先看main函数的汇编
在这里插入图片描述
F5查看伪代码
在这里插入图片描述
再看看关键的fibonacci的汇编
在这里插入图片描述
及其伪代码
在这里插入图片描述
解决这个问题的方式有很多种。例如,我们可以使用一种编程语言重新构建代码,并对新构建的代码进行优化。重建代码的过程并不容易,并且有可能会产生问题或错误,而解决问题、修正错误的这个过程是非常煎熬的。但假如我们使用Unicorn Engine,就可以跳过重建代码的过程,从而避免上面提到的问题

在优化之前,我们首先模拟正常的程序,一旦程序成功运行后,我们再在Unicorn Engine中对其进行优化。
新建一个python脚本,注意与fibonacci同样路径
在这里插入图片描述
导入unicorn,以及x86体系结构的unicorn constant

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值