BombLab Phase-1 & Phase-2

本文详细解析了BombLab的Phase-1和Phase-2,包括栈帧结构分析、字符串比较函数strings_not_equeal、read_six_numbers函数以及斐波那契序列计算。在Phase-1中,需使输入字符串与特定地址的字符串相等;Phase-2涉及读取六个数字并进行斐波那契序列计算。遇到的问题包括cmp和test指令的区别、lea与mov指令的用法以及字符串存储方式的理解。
摘要由CSDN通过智能技术生成

导航

BombLab Phase-3 & Phase-4 &Phase-5

 

BombLab phase-6 & secret_phase

Phase_1

1.观察源代码,看一下输入有哪些

通过观察,我们知道每个phase前面都有一个输入,并且为string类型,我们会将这个string传入phase_1中,所以栈帧中phase_1帧前面应该只有一个参数。

 

2.反汇编phase_1函数。

我们可以看到,在栈顶的顶8个字节存储了两个东西,第一个是将常量 $0x804a15c存入了(esp)+4的位置,第二个是将ebp+8存入了(esp),这第二个就是我们传入phase_1的参数,可以看出应该就是我们输入的字符串的地址,那么可以猜测第一个就是被比较的字符串的地址了。

 

3.画出phase_1的栈帧结构图

 

4.分析strings_not_equeal作用 

从名字上来看,我们猜得到这个函数是对两个字符串比较是否相等,从调用时机来看——在调用前将字符串地址传入了栈顶,更加印证我们的猜想,当然这些都是猜测,我们还是具体来看下反汇编代码来分析一下。

查看strings_not_equeal函数汇编代码

我们可以看到,上面两个箭头分别跳到如下两个箭头的位置:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值