深入理解操作系统
麓山君陌
在校科研生
展开
-
深入理解操作系统实验——buflab(level 4)
第五关(level 4):最后一关的要求和上一关一致,不过需要加上-n参数运行bufbomb,此时会进入testn和getbufn函数而不是test和getbuf函数。下面是getbufn函数的源码:getbufn源码:int getbufn(){ char buf[512]; Gets(buf); return 1;}这个函数与getbuf所不同的是,分配了512字...原创 2019-11-25 13:57:01 · 2251 阅读 · 0 评论 -
深入理解操作系统实验——buflab(level 3)
第四关(level 3):之前的攻击都是导致程序跳转到其他函数的代码,然后程序执行完之后才退出,所以使用破坏堆栈的开发字符串是可以接受的,因为它就是覆盖一下我们保存的值而已。最复杂的缓冲区溢位攻击导致程序执行一些代码会改变程序的寄存器或者内存状态,使程序返回到我们原始的调用函数。这道题就是这样。我们需要将机器代码放到堆栈上面,另外就是将返回指针设置为该代码的开始,最后就是咱们要撤销对堆栈状态的任...原创 2019-11-25 13:55:14 · 1419 阅读 · 1 评论 -
深入理解操作系统实验——buflab(level 2)
第三关(level 2):第三关让我们做的是一种更加复杂的缓冲区攻击形式,包括提供一个编码实际机器指令的字符串。然后,在堆栈上用这些指令的起始地址重写返回指针。当getbuf执行它的ret指令时,程序就开始在堆栈上执行指令,而不是返回。用这种形式的攻击,程序基本上可以做任何事情,但同样也会比较的困难,因为我们需要直接将机器代码放到推栈中,并且将返回指针设置为这段代码的开始。实际上也就是说get...原创 2019-11-25 13:53:58 · 1819 阅读 · 0 评论 -
深入理解操作系统实验——buflab(level 1)
第二关(level 1):这道题和第一级有类似的地方,都是通过缓冲区溢出,对原本的函数返回地址进行覆盖修改。这里是跳到fizz执行,但程序不会真正调用fizz,它只会执行fizz的代码,从说明文档的代码可以发现,这里的函数参数就是我们之前得到的cookie,所以这里也是参数化的,我们需要做到的是让val这个参数和我的cookie一致,从而才能得到正确的调试结果。下面是fizz函数的源码:vo...原创 2019-11-25 13:52:26 · 1291 阅读 · 1 评论 -
深入理解操作系统实验——buflab(level 0)
基础知识:首先我们可以看到有三个程序:bufbomb:是我们主要攻击的对象makecookie:根据用户id生成一个“cookie”//并没有什么用,实际上在调用bufbomb之后还会告诉你hex2raw:一个转换字符串格式的较为实用的程序,将16进制表示的字节转换成二进制字节数据。//很有用,用来将我们的文件流输入中的十六进制转换为二进制这里可以看到我的cookie是0x6ad32b9...原创 2019-11-25 13:51:05 · 2355 阅读 · 0 评论 -
深入理解操作系统实验——bomb lab(作弊方法2)
2、作弊方法2:上面的作弊方法可以看到,没有密码的思路是可以的,但还是对数据的输入个数有要求,而且对于每个炸弹都要修改太过繁琐,那么接下来就是对这一点进行优化。可以想到如果我们把炸弹进行修改,相当于弄一个“哑弹”,那么不管密码对不对,都不会引爆炸弹,这样就可以想到对explode_bomb进行修改,源代码为:可以将从179~198全部进行修改,全部改为0,最终改为:基本上将所有的全部去掉...原创 2019-11-24 09:38:18 · 1019 阅读 · 0 评论 -
深入理解操作系统实验——bomb lab(作弊方法1)
1、作弊方法1:实际上这个实验有一个更加有趣的作弊方法,下面是对作弊方法的讲解:这道题只是给了一个可执行程序,看上去并没有什么可以作弊的情况,非常的安全,我们没有办法通过修改c语言源代码或者汇编语言代码达到直接修改代码的目的,但实际上,我们可以通过hexedit语句对可执行程序进行直接的修改,这样就不用管你的代码是什么,你的密码是什么,你的算法是什么,我直接从函数头跳转到函数尾部,跳过整个函数...原创 2019-11-24 09:36:43 · 1474 阅读 · 0 评论 -
深入理解操作系统实验——bomb lab(secret_phase)
7、隐藏炸弹secret_phase破解得到secret_phase的汇编代码push %ebxsub $0x18,%espcall 804919d <read_line>movl $0xa,0x8(%esp)movl $0x0,0x4(%esp)mov %eax,(%esp)call 80488e0 <strtol@plt>...原创 2019-11-24 10:49:33 · 3055 阅读 · 0 评论 -
深入理解操作系统实验——bomb lab(phase_6)
6、对phase_6破解得到phase_6的汇编代码,进行破解push %esipush %ebxsub $0x44,%esplea 0x10(%esp),%eaxmov %eax,0x4(%esp)mov 0x50(%esp),%eaxmov %eax,(%esp)call 80492ab <read_six_numbers>...原创 2019-11-24 10:48:05 · 2392 阅读 · 0 评论 -
深入理解操作系统实验——bomb lab(phase_5)
5、对phase_5破解得到phase_5的汇编代码,进行破解push %ebxsub $0x18,%espmov 0x20(%esp),%ebxmov %ebx,(%esp)call 804904b <string_length>cmp $0x6,%eaxje 8048e07 <phase_5+0x1a>call ...原创 2019-11-24 10:48:52 · 2923 阅读 · 3 评论 -
深入理解操作系统实验——bomb lab(phase_4)
4、对phase_4破解得到phase_4的汇编代码,进行破解sub $0x2c,%esplea 0x1c(%esp),%eaxmov %eax,0xc(%esp)lea 0x18(%esp),%eaxmov %eax,0x8(%esp)movl $0x804a483,0x4(%esp)mov 0x30(%esp),%eaxmov %...原创 2019-11-24 10:48:31 · 2696 阅读 · 0 评论 -
深入理解操作系统实验——bomb lab(phase_3)
3、对phase_3破解得到phase_3的汇编代码,开始破解sub $0x3c,%esplea 0x28(%esp),%eaxmov %eax,0x10(%esp)lea 0x2f(%esp),%eaxmov %eax,0xc(%esp)lea 0x24(%esp),%eaxmov %eax,0x8(%esp)movl $0x804...原创 2019-11-24 09:28:41 · 2178 阅读 · 0 评论 -
深入理解操作系统实验——bomb lab(phase_2)
2、对phase_2破解:得到phase_2的汇编代码,开始破解push %espush %ebxsub $0x34,%esplea 0x18(%esp),%eaxmov %eax,0x4(%esp)mov 0x40(%esp),%eaxmov %eax,(%esp)call 0x80492ab <read_six_numbers&...原创 2019-11-24 09:27:20 · 1041 阅读 · 0 评论 -
深入理解操作系统实验——bomb lab(phase_1)
实验内容及操作步骤:一、实验基本内容:二进制炸弹是作为一个目标代码文件,运行时会提示用户输入6个不同的字符串,如果其中任何一个不正确,炸弹就会爆炸,打印出一条错误信息。我们需要通过反汇编和逆向工程来确定是哪六个字符串,以此来破解炸弹的密码。六个密码分别存在与phase_1、phase_2、phase_3、phase_4、phase_5和phase_6中,需要对给出的可执行文件bomb进行反汇编...原创 2019-11-24 09:26:20 · 1814 阅读 · 0 评论 -
深入理解操作系统——datalab-handout
实验目的:1.替换bits.c中各个函数中的return,格式要求如下所示:int Funct(arg1, arg2, …) {/* brief description of how your implementation works */int var1 = Expr1;…int varM = ExprM; varJ = ExprJ; ... varN = ExprN;...原创 2019-11-20 15:05:19 · 7075 阅读 · 4 评论 -
深入理解操作系统——windows下用debug编写程序
程序一1.程序汇编代码如下:(注意前面的0AE9:0100暂时不需要去管他,每台电脑都不一样,只要输入后面的mov等语句即可)-a1000AE9:0100 mov dl,10AE9:0102 mov ah,20AE9:0104 int 210AE9:0106 int 200AE9:01082.代码分析:程序很简单,第一条将1保存在DX寄存器的低8位中,第二条和第三条语句调用21...原创 2019-11-19 21:11:28 · 2103 阅读 · 0 评论 -
深入理解操作系统——再windows中配置debug环境
在Windos系统中配置debug环境1.去网上下载DosBox以及debug.exe,准备配置环境。2.安装DosBox并将debug.exe放到E盘根目录下的debug文件夹:3.打开DosBox本应该输入mount C E:\debug,回车后输入c:,再次回车后输入debug进入debug模式,但由于我之前已经运行过debug程序,所以已经直接进入了debug模式,具体步骤如下...原创 2019-11-19 21:07:23 · 1062 阅读 · 0 评论 -
深入理解操作系统——vim程序编辑&gdb程序调试
使用vim进行简单程序编辑1.可以使用ls指令先进行查看当前目录下的文件,标注蓝色字体的是文件夹,任选一个作为我们文件的放置地点:2.由cd 音乐进入一个文件夹(此处选择音乐文件夹,其实任选一个即可,之后在该文件夹中创建程序,注意由于我已经使用的是Ubuntukylin系统,并已经设置了中文,所以文件名是中文,可以在systems setting里面进行更改,这里不再赘述修改方法):3....原创 2019-11-19 21:05:00 · 874 阅读 · 0 评论 -
深入理解操作系统——在VMware中安装linux镜像
我是根据网络上的教程进行下载,安装了VMware12.0.1,教程地址为:https://blog.csdn.net/qq1326702940/article/details/82322079,然后从同学手中获得VMware15的安装包进行原有基础上的更新,并获得了Ubuntukylin-16.04的镜像文件1.首先运行VMware,对VMware进行安装(安装过程一直点下一步,将其放入一个内存...原创 2019-11-19 21:01:07 · 1245 阅读 · 1 评论