码迷,mamicode.com
首页 > 移动开发 > 详细

CSAPP:BOMB LAB

时间:2020-05-24 18:08:02      阅读:88      评论:0      收藏:0      [点我收藏+]

标签:直接   code   输入   info   ase   指针   bom   一个   lin   

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储存的字符串。

CSAPP:BOMB LAB

标签:直接   code   输入   info   ase   指针   bom   一个   lin   

原文地址:https://www.cnblogs.com/cupcup/p/12951953.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!