2018-2019-1 20165214 《信息安全系统设计基础》第三周学习总结

20165214 2018-2017-1 《信息安全系统设计基础》第三周学习总结

教材学习内容总结

1、实际上gcc命令调用了一系列程序,将源代码转化成可执行代码。

2、存储器系统的实际实现是将多个硬件存储器和操作系统软件组合起来。

3、ISA:指令集体系结构,它定义了处理器状态、指令的格式、以及每条指令对状态的影响。

4、程序计数器(在IA32中,通常称为“PC”,用%eip表示),指示将要执行的下一条指令在存储器中的地址。

5、操作系统负责管理虚拟地址空间,将虚拟地址翻译成实际处理器存储器中的物理地址。

6、如果我们想要在64位机器上得到32位代码,可以使用指令gcc -m32 -S xxx.c

7、IA32使用栈帧结构来支持过程调用。为单个过程分配的那部分栈称为栈帧。栈指针可以移动,因此大多数信息的访问都是相对于栈帧的。注意,假设过程P(调用者)调用过程Q(被调用者),那么Q的参数放在P的栈帧中。同时,P的返回地址被压入栈中。

8、和我们平常学习的栈有些不同:在栈帧中,栈向低地址方向增长。所以,如果我们想要增大栈的空间,要做的是将栈指针的值减小而不是增大。

9、关于汇编的相关指令,在上学期的汇编课程中我们已经总结完毕,在此就不再重复总结。

10、关于C语言的指针运算:如果p是一个指向类型为T的数据的指针,p的值为x,那么表达式p+i的值为x+L*i,其中L是T的大小。单操作符&用来产生地址,*用来间接引用地址。

11、在看了课本第三章之后,再次使用第一章时所用到的指令来对课上的测试代码进行汇编,得到如下:

这里的汇编代码跟我们之前学的汇编代码有着一些不同。

12、数据对齐:为了能够让数据能够更好地进行对接,很多系统都对数据进行了对齐处理,规定每种类型的数据都会有自己的字节数,这样能够提高计算机的工作效率。

13、缓冲区溢出:有时候,我们在C语言中的输入是可以任意输入的,比如函数gets()等。但是这样有可能造成数据溢出,因为gets函数是以空格为界定来划分一行的。如果我们给一个字符数组规定了一定的数量x,而我们使用gets函数来输入,输入超过x个字符后,再按回车,就会发现缓冲区溢出,对程序造成不良影响,甚至让程序执行原本不会执行的函数。这是最常见的一种通过计算机网络攻击系统安全的方法。

14、区分病毒和蠕虫的概念。

15、缓冲区溢出攻击通常要知道目标系统的栈地址。为了防止缓冲区溢出攻击,一些系统采取将栈的位置每次运行都进行变化的策略。然而这个方法并不是绝对安全的,使用爆破攻击也是可以攻击成功的。所以,进一步的,GCC加入了“金丝雀值”,通过运行代码时随机产生一个数值,最后根据这个数值有没有发生变化来判断函数是否被修改。

教材学习中的问题和解决过程

  • 问题1:IEEE浮点数的意义是什么?
  • 问题1解决方案:IEEE浮点数规范了数字的表示方式。比如100,有1100的一次方、1010的一次方等表达方式。为了规范数字表示,采用了统一的一套表示方式,那就是IEEE浮点数
  • 问题2:蠕虫是怎么样通过计算机自我复制从而影响计算机的?
  • 问题2解决方案:还没解决该问题。

代码托管

不知道为何,我的代码数量都统计不出来。还没有找到原因。

其他

这节课开课之前,我以为它仍然是对JAVA的延伸,后来发现它更多的是跟C语言相关的,同时我也认识到了自己在C语言上的一些不足。接下来应当着重补一下自己在这块的不足,让接下来的学习更加顺畅一些。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 63/63 1/1 7/7
第二周 100/163 1/2 15/22
第二周 2/4 16/38
  • 计划学习时间:18小时
  • 实际学习时间:16小时

原文地址:https://www.cnblogs.com/zhuwenyuan/p/9750344.html

时间: 2024-10-09 21:27:27

2018-2019-1 20165214 《信息安全系统设计基础》第三周学习总结的相关文章

信息安全系统设计基础第三周学习总结

要点概括: 一.三种最重要的数字表示:    无符号数,有符号数(二进制补码),浮点数 从逆向考虑为什么产生漏洞: 结果太大不能表示时产生溢出,得到了负的结果.   二.信息存储 1.进制转换:以二进制作为桥梁. 2.字长:32位 64位 3.数据大小:单精度(4字节),双精度(8字节) 4.声明指针: 对于任何数据类型T,声明 T *p: 表明p是一个指针变量,指向一个类型为T的对象. 5.gcc –m32 可以在64位机上生成32位的代码. 6.寻址和字节顺序:    字节顺序是网络编程的基

20135223何伟钦—信息安全系统设计基础第三周学习总结

信息的表示和处理 2.0三种数字表示 无符号:编码基于传统的二进制表示法,表示大于或者等于零的数字. 补码:编码是表示有符号整数的最常见的方式,有 符号整数就是可以为正或者为负的数字. 浮点数:编码是表示实数的科学记数法 的以二为基数的版本. 溢出(overflow)的例子:使用 32 位来表示数据类型int,计算表达式200*300*400*500会得出结果 -884 901 888. 这违背了整数运算的特性,计算一组正数的乘积不应产生一个为负的结果. 2.1信息存储 机器级程序将存储器视为一

20135327郭皓——信息安全系统设计基础第三周学习总结

第2章 信息的表示和处理 三种重要的数字表现形式: 1. 无符号数:编码基于传统的二进制表示法,表示大于或等于零的数字. 2. 补码:编码是表示有符号整数的最常见方法,有符号整数就是可以为正或者是负的数字. 3. 浮点数:编码是表示实数的科学计数法的以二位基数的版本 2.1 信息储存 大多数计算机使用8位块,或者字节,作为最小的可寻址的储存器单位,而不是在储存器中访问单独的位. 虚拟储存器:机器级程序将储存器视为一个非常大的字节数组. 地址:储存器的每个字节的唯一的数字标识. 虚拟地址空间:所有

信息安全系统设计基础第三周学习总结 ---20135334 赵阳林

第2章 信息的表示和处理 三种最重要的数字表示: * 无符号 * 补码 * 浮点数 运算: * 整数运算 * 浮点运算 对比: 整数运算只能编码相对较小的范围,但是是精确的: 浮点运算可以编码一个较大的范围,但是是近似的:浮点运算不可结合. 注意:溢出——运算位数的限制 第一节 信息存储 计算机最小的可寻址的存储器单位——字节 一个字节的值域:00H-FFH 一.十六进制表示法 1. C表示法 以0x或0X开头的数字常量为十六进制 2. 进制转换 常用进制:二进制(B),十进制(D),八进制(O

20135210程涵——信息安全系统设计基础第三周学习总结

本次学习任务:仔细研读<深入理解计算机系统>第二章内容,掌握整数表示.浮点数表示及其运算 一.学习过程 三种重要的数字表现形式: 无符号数:编码基于传统的二进制表示法表示大于或等于零的数字. 补码:编码是表示有符号整数的最常见方法,可以是正或者是负的数字. 浮点数:编码是表示实数的科学计数法的以二位基数的版本 溢出:计算机的表示法是用有限数量的位来为一个数字编码,因此当结果太大就会导致某些运算溢出. 整数和浮点数会有不同的数学属性是因为处理数字表示有限性的方法不同. (整数是编码相对较小的数值

信息安全系统设计基础第三周学习总结—20135227黄晓妍

一.Vim编辑器 1.Vim的六种模式 2.Vim三种常用模式的使用方式,以及三者的切换.打开Vim即默认进入普通模式,按i进入插入模式,按esc从插入模式退出普通模式,再按:进入命令行模式. 普通模式下游标的移动 按键 说明 h 左 l 右(小写L) j 下 k 上 w 移动到下一个单词 b 移动到上一个单词 普通模式进入插入模式的方式 命令         说明 i        在当前光标处进行编辑 I        在行首插入 A       在行末插入 a       在光标后插入编辑

信息安全系统设计基础第三周学习总结-吕松鸿

第2章 信息的表示和处理 (一).三种重要的数字表示 无符号数:编码基于传统的二进制表示法(大于或者等于零的数字). 补码:编码是表示有符号整数的最常见方式(为正或者为负的数字). 浮点数:编码是表示实数的科学记数法的以二为基数的版本. 整数的表示虽然只能编码一个相对较小的数值范围,但是是精确的:而浮点数虽然可以编码一个较大的数值范围,但是这种表示是近似的表示. 大量的计算机安全漏洞都是由于计算机运算的微妙细节引发的. (二).信息存储 计算机最小的可寻址的存储器单位——字节 一个字节的值域:0

20135219洪韶武——信息安全系统设计基础第三周学习总结

学习过程总结 一.gcc 编译 使用C99特性时 gcc -std=c99 xxx.c 实验楼环境为64位,编译为32位机器码: gcc -m32 xxx.c 二.重点注意知识点 p20: 三种数字:无符号数.有符号数(2进制补码).浮点数,信息安全系同学从逆向角度考虑为什么会产生漏洞 p22: 进制转换,注意拿二进制作中间结果就好转了 p25: gcc -m32 可以在64位机上(比如实验楼的环境)生成32位的代码 p26: 字节顺序是网络编程的基础,记住小端是“高对高.低对低”,大端与之相反

20145216 史婧瑶《信息安全系统设计基础》第一周学习总结

20145216 <信息安全系统设计基础>第一周学习总结 教材学习内容总结 Linux基础 1.ls命令 ls或ls .显示是当前目录的内容,这里“.”就是参数,表示当前目录,是缺省的可以省略.我们可以用ls -a .显示当前目录中的所有内容,包括隐藏文件和目录.其中“-a” 就是选项,改变了显示的内容.如图所示: 2.man命令 man命令可以查看帮助文档,如 man man : 若在shell中输入 man+数字+命令/函数 即可以查到相关的命令和函数:若不加数字,那man命令默认从数字较

20145311 《信息安全系统设计基础》第一周学习总结

20145311 <信息安全系统设计基础>第一周学习总结 教材学习内容总结 常用的部分命令 CTRL+SHIFT+T:新建标签页,编程时有重要应用: ALT+数字N:终端中切换到第N个标签页,编程时有重要应用: Tab:终端中命令补全,当输入某个命令的开头的一部分后,按下Tab键就可以得到提示或者帮助完成: CTRL+C:中断程序运行 Ctrl+D:键盘输入结束或退出终端 Ctrl+S: 暂定当前程序,暂停后按下任意键恢复运行 Ctrl+A: 将光标移至输入行头,相当于Home键 Ctrl+E