BUUCTF easyre

1.需要用到的软件

1.1IDA

IDA是一款非常实用的多用于静态分析反编译软件,在CSDN上搜“IDA”就会有一大堆IDA的教程和安装教程,这里就不多赘述了。IDA分为32位和64位,32位版本用来打开32位软件,64位用来打开64位软件(具体为什么不太清楚,可能是因为32位和64位对应的寄存器有所改变吧)

1.2exeinfope

下载链接: link
exeinfope是一款自动查壳软件,暂时还没学手动脱壳的同学直接在这个软件里打开要查壳的软件就可以看到相应的信息了。

2.开始做题

![呵呵](https://img-blog.csdnimg.cn/1c661315816342a787b92228aaf3a3a4.png

2.1 查壳

在这里插入图片描述
下载这个zip文件到你专门用来存buuctf题的文件夹里(个人习惯),解压到同文件夹,得到一个名为easyre.exe的二进制文件
在这里插入图片描述
看到一个文件首先得知道它有没有壳,所谓加壳就是改变该程序的入口,使cs:ip指向另外一段代码,执行完额外的代码后再回到程序本来的入口,这样反编译软件就不能轻易进行反编译。因此我们用exeinfope来查看它是否有壳。
点最右排第一个文件按钮,打开你要查询的PE文件
在这里插入图片描述
可以看到高亮字体显示它是64位exe文件,下一行的信息说数据库签名没有找到,这软件貌似确定不了有没有壳。

2.2使用IDA打开EXE文件

那我们将计就计直接用64位IDA打开来看看,霸蛮一下。
打开IDA,连续点两个OK之后,来到这个界面。

点“new”反编译一个新文件,选择你要操作的exe。
在这里插入图片描述
直接点“OK”。
在这里插入图片描述
选“NO”,然后就进入了IDA的主界面
在这里插入图片描述

在这里插入图片描述
左边红色框表示的是函数窗口(function window),显示了这个文件调用的所有函数。右边是IDA自动反汇编的图形形式窗口,相应的还有反编译的文本形式窗口(点击右侧红色框框区域然后按空格就可以来回切换)。
我们可以看到如果jnz short loc_40152F不成立的话,程序会继续执行下一个指令

lea     rcx, aFlagThisIsAEas ; "flag{this_Is_a_EaSyRe}"
lea     rcx, aFlagThisIsAEas ; "flag{this_Is_a_EaSyRe}"

lea指令将目的操作数的地址传给源操作数,‘;’右边的注释显示了貌似是真的flag,为了知其所以然,我不直接将它视为答案,双击aFlagThisIsAEas,看看这个变量对应的内存空间到底存放了什么。
在这里插入图片描述

.rdata:0000000000429005 aFlagThisIsAEas db 'flag{this_Is_a_EaSyRe}',0
.rdata:0000000000429005 aFlagThisIsAEas db 'flag{this_Is_a_EaSyRe}',0

很显然,这段内存空间存放的值就是赤裸裸的flag。

要看懂这些汇编指令得至少了解8086汇编甚至win32汇编,达到刷ctf层次的同学绝大多数应该是都具备了这样的基础了的,看不懂的同学的话还是乖乖去补基础吧。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

chneft

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

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

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

打赏作者

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

抵扣说明:

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

余额充值