![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
CSAPP 深入理解计算机系统
文章平均质量分 66
shiyuqing1207
这个作者很懒,什么都没留下…
展开
-
深入理解计算机系统 perflab 程序性能优化实验
自从上次实验3bomb已经过去很久了,昨天周六下午刚刚验收完所带班级的必做实验的最后两个,最近一直很忙,也没有来更新了,其实不是最近应该是每天都好忙,最近一直还在看论文做实验。验收前周五拿出时间来看了一下最后两个必做实验。一个是perflab,性能实验,这个实验主要是考察的课本中的第五章的程序优化的一些知识,通过优化程序的核函数,然后来对比自己和原始函数的CPE和加速比。这个实验主要考虑一原创 2015-05-31 11:04:50 · 17693 阅读 · 0 评论 -
CSAPP深入理解操作系统 课程实验 bomb 反向编译 汇编(3)
第四关: 首先也是栈开辟:然后由第三关以及前面对sscanf函数的分析可知,这里应该也是要输入两个数。参数1从-0xc(%ebp)加载,参数2从-0x10(%ebp)处加载。0x804a23e应该里面的内容也是sscanf的输入格式之类的。返回值要等于2,不然会引爆炸弹。接一下来一段说明输入的第一个参数的范围要在0-14之间接下来,赋初始原创 2015-05-20 16:34:04 · 5532 阅读 · 1 评论 -
CSAPP课程实验 bomb实验 拆炸弹实验(1)
由于内容较长,所以打算分成几个部分来写。实验准备知识:实验三是CSAPP课程中的bomb炸弹实验。一个非常有意思的实验。实验主要提供了2个文件,一个bomb二进制可执行文件,一个bomb.c C源文件。实验主要设置6个关卡phase,要求你每一关输入一个特定的字符串,来拆掉炸弹。主要是考察对汇编语言的熟悉理解程度,反汇编和逆向工程以及gdb调试。感觉datalab主要是对应教材的第二章原创 2015-05-19 20:26:35 · 24956 阅读 · 1 评论 -
CSAPP 深入理解计算机系统课程实验 bomb实验 反向编译 汇编(4)
隐藏关卡。Secretphase这个隐藏关卡还是很难发现的,自己带的班上的学生中,仅有3个学生发现并解除了炸弹。中间也出现了一些小小问题,在给他们验收的时候也有意识的去引导他们发现一些小问题,并讨论解决。首先是隐藏关卡的发现,其实在汇编代码中就有一个secret_phase.就是看怎么跳到隐藏关卡了,搜索发现,是通过phase_defused作为入口点的。其实这里可以不分析这个函数,看到在原创 2015-05-20 20:30:09 · 5104 阅读 · 1 评论 -
CSAPP课程实验 bomb实验 拆炸弹实验 (2)
关卡1-3 phase1-3正式进入关卡1,phase_1首先是关卡1的汇编代码为:可以看到前3句是非常熟悉的栈开辟代码,下面一起来看一下基本的栈调用过程的汇编代码:在gcc下是AT&T格式的,源操作数,目的操作数Push %ebp 保存 ebp原有的值,防止被新调用的函数覆盖修改,在退出函数时通过pop ebp 恢。ebp每次原创 2015-05-19 20:39:52 · 13058 阅读 · 1 评论 -
CSAPP 深入理解计算机系统 Buflab实验,缓冲区溢出攻击实验(3)
Level1Level1是和level0一样调用完getbuf以后我们不返回getbuf的调用者test而是去执行fizz函数,区别就是这个fizz函数要求我们传入参数,而且传入的参数必须是我们的cookie。所以在level0的方法我们轻松的知道了如何去执行fizz,就是用fizz函数的入口地址去覆盖返回地址,这里的关键就是找到fizz函数的参数从栈中的什么地方传入的,然后我们把我们的coo原创 2015-06-01 19:46:30 · 6990 阅读 · 2 评论 -
CSAPP 深入理解计算机系统 Buflab实验,缓冲区溢出攻击实验(2)
Level0首先是test函数和getbuf函数以及smoke函数的c代码如下: Level0 就很简单,就是本来test函数调用getbuf函数,调用完以后还返回test函数,现在我们要做的是调用getbuf函数后,通过输入我们的exploit,使得调用完以后不返回test函数了而是执行smoke函数。这里的实现就很简单,只需要输入超出缓冲区大小的字符串来覆盖到g原创 2015-06-01 19:26:33 · 7972 阅读 · 2 评论 -
CSAPP 深入理解计算机系统 Buflab实验,缓冲区溢出攻击实验(6)
level4前面4个level都是栈基址是固定的,所以我们可以猜测到栈帧的结构进行覆盖篡改,这一关就是引入了缓冲区溢出攻击的一种保护措施,就是栈基址随机化,让栈基址不可以猜测,我们来实施缓冲区溢出攻击,那么我们就要用到nop雪橇了。nop只是执行eip自加1不进行其他的操作。在我们无法猜测的时候,只需要找到最大的地址,然后前面用nop雪橇那么只要在nop段中都会自动划入。这一level用的原创 2015-06-01 21:06:45 · 7085 阅读 · 4 评论 -
CSAPP 深入理解计算机系统 Buflab实验,缓冲区溢出攻击实验(1)
由于实验太长所以还是采用分开其实感觉之前做过那个bomb实验以后,这个实验相对来说还是很容易的,主要是要搞懂缓冲区溢出原理,以及堆栈的过程,函数调用的实现过程,做完这个实验如果认认真真的做完,对于堆栈的过程,还有缓存溢出攻击的原理就会掌握的比较清楚的。个人感觉实验设计的还是非常的好的,非常值得做一做。做这个实验首先是要建立在bomb实验和对函数调用栈过程的基础上,如果你觉得你理解起来有困难原创 2015-06-01 19:18:53 · 18170 阅读 · 0 评论 -
CSAPP 深入理解计算机系统 Buflab实验,缓冲区溢出攻击实验(5)
level3前面的几个实验都是不管是去执行别的函数比如bang还是去执行我们自己的exploit的函数,最后都没有返回就退出了,我们通过我们的漏洞利用代码可以修改内存(比如把全局变量修改为我们的cookie)修改寄存器中的值,比如当前的level3,我们都把原来的恢复现场需要用的返回地址和原test的ebp给破坏了,这一关中,我们将修复这些被我们破坏的栈状态信息,让最后还是回到test中,让被原创 2015-06-01 21:04:52 · 6463 阅读 · 1 评论 -
CSAPP 深入理解计算机系统 Buflab实验,缓冲区溢出攻击实验(4)
level2Level2是更进了一步,也是不返回到test,而是去执行函数bang,但是区别是bang也要传入参数,但是参数是是一个全局变量,这里就是不同于level1那样在栈上覆盖了,因为全局变量要去内存地址中修改了,但是又不能调用个一个可以修改全局变量的函数,这里就只能利用我们的exploit代码了,让我们的exploit代码具有执行这些功能的函数,那么怎么执行起来呢,那就是把区别与之前是原创 2015-06-01 20:19:28 · 8515 阅读 · 0 评论 -
底层理解函数调用实现过程 栈结构 栈过程
首先寄存器使用惯例:eip :指令地址寄存器,保存程序计数器的值,当前执行的指令的下一条指令的地址值,16位中为ip,32位为eip。eip不可以直接赋值,一般都是cpu自动加1来更新,指令call和ret以及jmp可以改变eip的值。另外汇编代码格式有ATT和intel格式,gcc和objdump的默认格式就是ATT。几个小区别,1首先是指令ATT汇编指令后面有一个l,比如intel格式原创 2015-05-31 18:26:25 · 3157 阅读 · 1 评论 -
CSAPP课程与实验
这个学期一直很忙,还没有入学,就预先收到了导师对CSAPP课程助教的邀请,去网上了解了一下CSAPP课程,感觉非常有用的一门课,可惜当年我们读大学的时候没有开。今年这个学期我们学校也是第一次课程改革,将大二的计算机组成这门课换成了CSAPP。教学模式也是完全效仿国外教学制度,大班授课,小班辅导,由11班级的大班,5个授课老师,由于是第一年课改,之前没有学过这门课程,做起来这门课的助教的任务和压力也原创 2015-05-19 11:17:28 · 6117 阅读 · 0 评论