深入理解计算机系统
文章平均质量分 93
共读《深入理解计算机系统》。
Ryanw丶
.
展开
-
CSAPP - Bomb Lab
该lab还是花了不少时间去阅读汇编代码,在各种跳转中有些眩晕。通过使用gdb调试工具,查看反汇编代码,分析汇编代码和内存分布来找到解题答案。加强了对汇编语言的理解,寄存器的使用,栈空间的使用等。原创 2023-03-09 15:40:17 · 487 阅读 · 0 评论 -
CSAPP - Attack Lab深思
Attack Lab介绍对2个有不同安全漏洞的程序进行5次攻击,完成后你将会收货:学会针对缓冲区溢出漏洞进行攻击。学会如何将程序写的更加安全,了解操作系统和编译的特征使程序出现更少的漏洞。对x86-64机器代码的堆栈和参数传递有更深的理解。对x86-64机器指令解码有更深的理解。对gdb工具的熟练使用。实验帮助文档Part I: Code Injection Attacks前三个阶段利用漏洞利用字符串攻击CTarget。Level1阶段1不需要代码注入,相反使用漏洞利用字符串就可原创 2021-01-02 11:06:40 · 334 阅读 · 1 评论 -
CSAPP-Bobm Lab深思
Bobm Lab介绍“二进制炸弹”是作为目标代码文件提供给学生的程序。 运行时,它提示用户输入6个不同的字符串。 如果其中任何一个不正确,炸弹就会“爆炸”,学生必须通过拆卸和逆向工程程序来“消散”自己独特的炸弹,以确定6个字符串应该是什么。该实验室教会学生理解汇编语言,并强迫他们学习如何使用调试器。实验地址README文档实验指导实验步骤使用GDB逆向工程推断6个字符串。设置断点,一步一步调试,找到explode_bomb的跳转命令,结合逻辑和寄存器的值进行判断字符串的值。[外链图片转存失败原创 2020-12-27 21:17:59 · 319 阅读 · 0 评论 -
CSAPP-Data Lab深思
详情移步GithubData Lab介绍学生实现简单的逻辑,二进制补码和浮点函数,但使用C语言运算符受限。例如,可能会要求他们仅使用位级运算和直线代码来计算数字的绝对值。本实验可帮助学生理解C数据类型的位表示形式以及对数据进行操作的位级别行为。实验地址README文档实验指导实验步骤阅读bits.c文件的注释,在函数处填入合适的代码。命令行使用./dlc bits.c命令,检查实验编码规范是否符合。使用make命令进行编译文件。使用./btest程序检查函数的正确性。使用./dri原创 2020-12-25 21:50:32 · 327 阅读 · 0 评论 -
CSAPP实验深思录
详情移步GitHub目录项目背景下载实验列表实验环境搭建实验进度开源协议项目背景记录《深入理解计算机系统》的实验记录和学习思考。下载在命令行中运行以下命令。unix> git clone https://github.com/ChinaWxq/CSAPP-Lab.git实验列表Data LabBomb LabAttack LabBuffer LabArchitecture LabCache LabPerformance LabShell LabMal原创 2020-12-25 21:51:49 · 307 阅读 · 0 评论 -
CSAPP-Floating Point
Floating PointIEEE浮点标准用V = (-1)s x M x 2E表示一个浮点数:符号sign:s决定符号。负数(s=1),正数(s=0)尾数significant M是一个二进制小数,范围是1 ~ 2-t,或者0 ~ 1-t。阶码exponent E的作用对浮点数加权,权重是2的E次幂[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cwwdlS6O-1589201031969)(Floating Point.assets/截屏2020-05-11原创 2020-05-11 20:45:01 · 318 阅读 · 0 评论 -
CSAPP-Bits Bytes and Integer
Bits Bytes and Integer1.1 Information is Bits in Context比特(binary digit),是表示信息的最小单位,状态0和1。源程序是一个由0和1组成的位序列(也称为比特序列),8个位被组织为1组,称为字节。每个字节代表程序中的某些文本字符。大部分现代计算机使用ASCII标准来表示文本字符,用单字节整数值来区分每个字符。只有ASCII字符组成的文件称为文本文件,所有其他类型的文件称为二进制文件。为了在系统上运行hello.c程序,每一条C语句必须原创 2020-05-11 10:15:10 · 271 阅读 · 0 评论 -
CSAPP-Course Overview
Course Overview数组下标越界访存#include <stdio.h>typedef struct { int a[2]; double d;} struct_t;double fun(int i) { volatile struct_t s; s.d = 3.14; s.a[i] = 1073741824; return s.d;}int main() { for (int i = 0; i < 100; ++i) { printf("fun原创 2020-05-09 11:04:10 · 401 阅读 · 0 评论