CSAPP:bomblab】的更多相关文章

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 就可以不用自己输入跑实验了. 做实验时记得一定要加一句: b explode_bomb 防止踩雷~ ph…
前言 本篇博客将会展示 CSAPP 之 BombLab 的拆弹过程,粉碎 Dr.Evil 的邪恶阴谋.Dr.Evil 的替身,杀手皇后,总共设置了 6 个炸弹,每个炸弹对应一串字符串,如果字符串错误,炸弹就会被引爆,如下图所示: 字符串的长度未知,所以暴力破解是不可取的,也就是说这个实验就是要逼着拆弹小分队将 bomb 可执行文件反汇编,根据汇编代码推测出每个炸弹对应的字符串.在终端输入 objdump -d bomb > bomb.asm ,就可以将汇编代码写入 bomb.asm 文件中,方便…
CSAPP:第十二章 并发编程 12.1 线程执行模型12.2 多线程之间并发通信12.3 其他并发问题   使用应用级并发的应用程序称为并发程序.现代操作系统提供三种基本的构造并发程序的方法: 进程 I/O多路复用 线程主要介绍下基于线程的并发编程 12.1 线程执行模型   每个进程开始生命周期都是单一线程,这个线程为主线程,在某一时刻,主线程创建一个对等线程,从这个时间点开始,两个线程并发地运行. 12.2 多线程之间并发通信 共享变量 使用信号量同步线程 使用信号量实现互斥 使用信号量来…
CSAPP:第十一章 网络编程 11.1 客户端服务器模型11.2 全球IP因特网11.3 套接字接口 11.1 客户端服务器模型   每个网络应用都是基于客户端-服务器模型.采用这个模型,一个应用是由一个服务器进程和一个或者多个客户端进程组成.  客户端-服务器模型的基本操作是事务.一个客户端-服务器事务由以下四步组成. 当一个客户端需要服务时,它向服务器发送一个请求,发起一个事务. 服务器收到请求后,解释它,并以适当的方式操作它的资源. 服务器给客户端发送一个响应,并等待下一个请求. 客户端…
CSAPP:第十章 系统级I/O 10.1 unix I/O10.2 文件10.3 读取文件元数据10.4 读取目录内容10.5 共享文件10.6 我们该使用哪些I/O函数? 10.1 unix I/O   所有的I/O设备(例如网络.磁盘和终端)都被模块化为文件,而所有的输入和输出都被当作对相应文件的读和写来执行.这种允许Linux内核引出一个简单.低级的应用接口,称为Unix I/O,这使得所有的输入和输出都能以一种统一且一致的方式来执行: 打开文件. 改变当前的文件位置, 读写文件. 关闭…
CSAPP:第九章 虚拟内存 关键点:虚拟内存.物理内存 9.1 物理地址和虚拟地址9.2 地址空间9.3 虚拟内存作为缓存的公工具 9.1 物理地址和虚拟地址   计算机的主存被组织成一个由M个连续的字节大小的单元组成的数组.每个字节都有一个唯一的物理地址(PA).第一个地址为0,接下来为1,再接下来为2,依次类推.CPU访问内存的最自然方式就是使用物理地址.我们把这种方式称为物理寻址.如图所示.   现代处理器使用一种称为虚拟地址的寻址方式.使用虚拟寻址,CPU通过生成一个虚拟地址(VA)来…
CSAPP:第八章 异常控制流2 关键点:进程控制.信号 8.4 进程控制8.5 信号 8.4 进程控制   Unix提供了大量从C程序中操作进程的系统调用.8.4.1 获取进程ID  每个进程都有一个唯一的正数(非零)进程ID(PID).getpid函数返回调用进程的PID,getppid函数返回它父进程的PID 1#include <sys/types.h>2#include <unistd.h>3pid_t getpid(void);4pid_t getppid(void);…
CSAPP:第八章 异常控制流1 关键点:异常 8.1 异常8.2 进程   现代系统通过使控制流发生突变来对这些情况做出反应,一般而言,我们把这些突变称为异常控制流(Exceptional Control Flow,ECF).异常控制流发生在计算机系统的各个层次. 8.1 异常   异常是异常控制流的一种形式,它的一部分由硬件实现,一部分由操作系统实现.异常就是控制流中的突变,用来响应处理器中的一些变化.如图所示,当处理器状态发生一个重要的变化时,处理器正在执行某个当前指令Icurr.在处理器…
CSAPP:程序的机器级表示1 关键点:数据格式.操作数指示符. 数据格式访问信息操作数指示符举例说明 数据格式   术语字(word)表示16位数据类型,32位数为双字(double words),64位数为四字(quad words).图3-1给出了c语言的数据类型在x86-64中的大小.在64位机器中标准int为双字,指针为8字.  不通数据类型产生的汇编代码后缀如图所示.movb(传送字节).movw(传送字).movl(传送双字).movq(传送四字) 访问信息   一个x86-64的…
CSAPP:信息的表和处理2 关键点:浮点数.浮点数运算. 二进制小数IEEE浮点数表示浮点数转换(单精度)参考 二进制小数   形如表示的二进制数,其中每个位的取值范围位0和1.这种表示方式的定义如下:  符号.变为二进制点,点的左边的位的权是2的正幂,右边的位的权是2的负幂.例如.  小数的二进制表示法只能表示那些能够被写成的数,其他的数值只能近似的表示,增加二进制的长度可以提高表示的精度. IEEE浮点数表示   IEEE浮点标准用的形式来表示一个数: 符号(sign)s,决定正负,1表示…