【CSAPP:BOMB LAB】少年意气强不羁,虎胁插翼白日飞。这篇文章主要讲述CSAPP:BOMB LAB相关的知识,希望能为你提供帮助。
Phase 1
objdump -d bomb >
bomb.s
先将bomb反汇编并输出到bomb.s,-d参数为全部反汇编,还有一个-t参数可以输出程序的符号表,不过我不知道这个符号表有什么用。
分析main函数的代码
文章图片
结合bomb.c函数
文章图片
我们能比较容易看出main函数前面的汇编代码主要是做一些初始化和调用输入等功能,不是重点,我们直接关注phase_1开始我们的第一个小实验
文章图片
第一行和最后一行是调整栈指针指向位置,接下来看下面 这里调用了一个 string_not_equal 函数,从函数名就可以发现这个函数肯定是判断字符串是否相等的,感兴趣有时间的同学可以去看这个函数的汇编码。
在调用完这个函数之后,程序检查了返回值是否为0,如果为0则跳转不爆炸。那么我们看是哪两个字符串在比较:
%esi和%edi是头两个参数寄存器,我们看看里面放了什么,%esi中放入了内存地址 0x402400 内的字符串,我们打印看看是什么
文章图片
答案很明显了,我们再看看%edi里面放了什么
文章图片
把read_line的返回值放入%edi中,很明显就是我们的输入字符串。
Phase1的答案即为地址0x402400储存的字符串。
推荐阅读
- web测试与app测试的区别
- Android GraphicBuffer-Fence
- Android应用中如何创建并使用Surface
- android surface to bitmap
- app专项测试(app弱网测试)
- app专项测试(app弱网测试(网络测试流程))
- app专项测试(测试内容)
- Android入门AndroidStudio下的APP目录结构介绍
- append(),prepend(),after(),before()