CSAPP — BombLab Bomb Lab 实验任务 是“拆炸弹”。所谓炸弹,其实就是一个二进制的可执行文件,分为六个阶段每个阶段要求输入一个字符串。如果字符串输入错误,系统就会输出 BOOM!!!。 实验目的 通过观察用汇编语言描述的程序行为来猜测符合条件的
bomblab是计组里面我做的最认真的一个实验了 折腾汇编两三个小时最后过关的感觉很有成就感! 这边给上我做的时候的一些过程,可以给大家参考 main函数分析 首先是找到main函数,发现它调用了从phase_1到phase_6这六个函数。这应该就是每一关需要看懂的函数了。 第一关: 入门 找
做完了第一个ROP来看看第二个,当然这个显然很难。 显然这个和touch3一样,但是无法注入,所以只能用ret来连接gadget,我刚开始看第一个建议很疑惑,为啥要复习movl。直到我从farm这个函数反汇编后所能用到的指令真是少的可怜。如图类似grep抓取关键字然后对照下图表发现能用的指令太
完成了Part1前三个缓冲区注入代码改变返回地址的实验,现在来看看Part2.因csdn新手,所以上传pdf并不会。直接截图把 这里是介绍部分,大致说明了因为两个原因不能进行代码注入而写shellcode,一个是ALSR栈上地址随机化,一个是NX就是栈没有执行的权限。这样怎么攻击呢?有些聪明的人
思维导图 预计阅读时间:30min 阅读书籍 《深入理解计算机系统 第五版》 参考视频 【精校中英字幕】2015 CMU 15-213 CSAPP 深入理解计算机系统 课程视频 参考文章 《深入理解计算机系统(2.1)---信息的存储与值的计算》 《深入理解计算机系统(2.2)---布尔代数以及C语言上的位运算》 《
CSAPP 5 - 优化程序性能 1. 概述 首当其冲的,还是要编写出好的算法和数据结构,优化内部结构 其次才是编写出能让编译器 易优化的,高效的可执行代码。这点在特定的机器上可能有着特定的不同的优化,但有一些基本的优化仍然是相同的。 消除不必要的工作,让代码消耗时间在期望执行的任务
BOMBLAB实验总结 CSAPP实验BOMB,很头疼,看不懂,勉强做完了。 答案是这样的: Border relations with Canada have never been better. 1 2 4 8 16 32 2 707 7 0 9?>567 4 3 2 1 6 5 在bomb文件夹新建一个文件input.txt,再在gdb下运行如下指令: run < input.txt 就可以不用自己输入跑实
一、实验要求 实现如下几个问题: 对于int的问题,只能使用基本的位运算,对于float的,可是使用额外的控制语句。 二、预备知识 整型的表示方法: 无符号数: 有符号数: 无符号数和有符号数直接相互转换: 浮点数表示方法: 一般浮点数采用IEEE 754标准表示 V=。 S为符号位,占1bit。 E
Phase 1 objdump -d bomb > bomb.s 先将bomb反汇编并输出到bomb.s,-d参数为全部反汇编,还有一个-t参数可以输出程序的符号表,不过我不知道这个符号表有什么用。 分析main函数的代码 结合bomb.c函数 我们能比较容易看出main函数前面的汇编代码主要是做一些初始化和调用输入等功能,不
上周末到这周六,花了一周的时间看完了《CSAPP_3e》 chp07 Linking,疫情还在持续也不好出门运动,呆在家里把这周的学习做个梳理和总结。 不得不说,CSAPP这本书真的是非常之经典,不光是他的内容–计算机的底层基础知识,是每个从事计算机软件工作必须修炼的内功,对于身边的人特别是刚
This lab I have finished once, so this article is just for fun. Phase-1 0000000000400ee0 <phase_1>: 400ee0: 48 83 ec 08 sub $0x8,%rsp 400ee4: be 00 24 40 00 mov $0x402400,%esi 400ee9: e8 4a 04 00 00 ca
经典重温,冲冲冲。 Integer bitXor /* * bitXor - x^y using only ~ and & * Example: bitXor(4, 5) = 1 * Legal ops: ~ & * Max ops: 14 * Rating: 1 */ int bitXor(int x, int y) { return ~(~(~x & y) & ~(~y & x)); } 解题思路:布尔代数。对于异或,从定义式
阅读实验手册,开始做Attacklab. CTARGET Phase 1 第一个Attack Phase要求调用存在的函数touch1.这个简单,自需要将touch1的首地址覆盖栈中的返回地址就行。 首先使用gdb调试ctarget,反汇编出getbuf的汇编代码: 可以发现这里分配了0x28(十进制是40)Bytes的栈帧。由于栈是低地址方
《CSAPP》号称程序员圣经,虽然中文译名为《深入理解计算机系统》,但其实没那么“深”,只是覆盖面很广,一般用作计算机专业大一导论课的教科书。早就听闻书上配套的实验十分经典,这次重温新版(第三版),打算把所有的实验都做一下,也写个系列博文,好记录实验过程。实验可以在书本配套网站CSAPP:
p716~p757, 分两次, 716~733, 733~757. 摘要 这一章要讲到网络编程中著名的select模式, epoll模式等. 概述 应用级并发的作用 访问慢速I/O设备. 当应用等待慢速I/O设备将数据写入内存时, 可以将CPU交出去执行其他任务, 保持CPU的使用率. 与人交互. 例如人可以一边听歌, 一边打游
基于socket 使用教材的csapp.h csapp.c,实现daytime(13)服务器(端口我们使用13+后三位学号)和客户端 服务器响应消息格式是 客户端IP:XXXX 服务器实现者学号:XXXXXXXX 当前时间: XX:XX:XX 上方提交代码 提交一个客户端至少查询三次时间的截图测试截图 提交至少两个客户端查询时间的截图测
转载请注明出处:https://www.cnblogs.com/ustca/p/11790314.html 写程序最主要的目标就是使它在所有可能的情况下都正确工作,另一方面,在很多情况下,让程序运行得很快也是一个重要的考虑因素。 编写高效程序需要做到以下两点: 选择一组合适的算法和数据结构 编写编译器能够有效优化以
目录 实验要求 实现代码 1、pow2plus1 2、pow2plus4 3、bitXor 4、tmin 5、isTmax 6、allOddBits 7、negate 8、isAsciiDigit 9、conditional 10、isLessOrEqual 11、logicalNeg 12、howManyBits 13、floatScale2 14、floatFloat2Int 15、floatPower2 @(位操作实现简单函数
逆向工程【缓冲区溢出攻击】 任务描述 掌握函数调用时的栈帧结构,利用输入缓冲区的溢出漏洞,将攻击代码嵌入当前程序的栈帧中,使程序执行我们所期望的过程。 主要方法 溢出的字符将覆盖栈帧上的数据,会覆盖程序调用的返回地址,这赋予了我们控制程序流程的能力。通过构造溢出字符串,程序
目录 0 基础概念及摘要 1 信息存储 1.1 十六进制表示法 1.2 字数据大小 1.3 寻址和字节顺序 0 基础概念及摘要 (1) 基础概念: 现代计算机存储和处理的信息以二进制信号表示 —— 0 | 1, 是非有无、非黑即白, 代表计算机是精确的. 计算机的表示法是 用有限数量的位(bit)来对
缘由 两个月前的一天深夜,熟睡的我被呼啦啦的一声惊醒,正要往床底下钻,透过皎洁月光看见了散落一地的书,原来是书架塌了。 作为只能租住小房间的北漂儿,当初只买了个便宜的塑料书架放书,原本就习惯于等亚马逊活动囤书,再加上单位时不时发放的当当购书卡,每次三本两本的,不知不觉就买书如山
虚拟内存的概念: 我的理解:虚拟内存是一种对主存的抽象概念,虚拟内存由虚拟地址标记,虚拟内存一般比实际物理内存大,但其实它并不是真正的物理内存,对外部来说,似乎内存很大,实际上虚拟地址标记是与磁盘上的文件关联的,实现了对物理内存的“感官性的放大”,实际要使用关联的文件时再把它
练习题2.1 完成下面的数字转换: A. 将0x39A7F8转换位二进制 B. 将二进制1100100101111011转换为十六进制 C. 将0xD5E4C转换二进制 D. 将二进制1001101110011110110101转换为十六进制 解: A. 0011-1001-1010-0111-1111-1000 B. 0xC97B C. 1101-0101-1110
一、字长:虚拟地址通过一个字来编码,字长为32位,则可以标识2^32个地址空间,每个空间为一个字节,故为4G 二、字节序:当解释多个字节类型时,存在大小端字节序问题 0x1234567,在大小端表示法下的内存模型 三、整数表示 1.无符号数编码 2.负数编码 三、测试大小端字
CSAPP:第十一章 网络编程 11.1 客户端服务器模型11.2 全球IP因特网11.3 套接字接口 11.1 客户端服务器模型 每个网络应用都是基于客户端-服务器模型。采用这个模型,一个应用是由一个服务器进程和一个或者多个客户端进程组成。 客户端-服务器模型的基本操作是事务。一个客户端