首页 > 移动平台 > 详细

CSAPP:BOMB LAB

时间:2020-05-24 18:48:12      阅读:49      评论:0      收藏:0      [点我收藏+]

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

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!