20135219洪韶武——信息安全系统设计基础第三周学习总结
信息安全系统设计基础第三周学习总结
学习内容:教材第二章/实验楼
学习时长:10 小时
一.教材知识点梳理
1.信息存储
*机器级程序将存储器视为一个非常大的字节数组,成为虚拟存储器;存储器的每个字节都由一个唯一的数字来标识,成为他的地址。
*十六进制表示法/十进制和十六进制转换
*排列表示一个对象的字节的两个通用规则:小端法/大端法
*字节变可见的三种情况
*C语言中字符串被编码为一个以null字符结尾的字符数组
*位级运算/逻辑运算/移位运算
2.整数表示
*整数数据类型表示有限范围的整数
*无符号编码,有符号编码,无符号数和有符号数之间转换
*C语言中无符号有符号数之间的转换原则:底层的位保持不变
*零扩展:在一个无符号数表示的开头添加0
*符号扩展:在表示中添加最高有效位值的副本
*无符号数的截断结果/补码数字的截断结果
3.整数运算
*无符号加法/补码运算
4.浮点数
*从二进制小数理解浮点数
*IEEE浮点格式标准:P70
*根据exp值,被编码的值可以分为三种情况
*舍入的关键问题是在两个可能值的中间确定舍入方向
*浮点运算
二.重点知识点理解(实验楼要求)
1.无符号数、有符号数(2进制补码)、浮点数,从逆向角度考虑为什么会产生漏洞?
任何漏洞产生都必然因为系统不可更改的局限性/无符号数、有符号数、浮点数的局限性/无符号数或者有符号数的表示范围有限,而浮点数虽然编码范围大,但是不精确
2.gcc -m32 可以在64位机上生成32位的代码
3.在C语言中,所有以0X或者0x开头的数字常量都常被认为是十六进制的值
4.字节顺序的两种表示方法:小端是“高对高、低对低”,大端与之相反
5.代码执行一下
6.文本数据比二进制数据具有更好的平台适应性。
7.将有符号数强转成无符号数之后,数字的数值发生改变,然而其位表示不变。
8.怎么样让负数等于正数?
在负数x后加上U,可以使其转换为(2^w+x)
9.零扩展类似于逻辑左(右)移
将一个无符号数转换为一个更大的数据类型,简单地在前面加上0。符号扩展类似于算数左(右)移。即:将一个补码数字转换为一个更大的数据类型,在表示中添加最高有效位值得副本。
10.整数与浮点数表示同一个数字的关系
整数与浮点数表示同一个数字时,化成二进制形式之后,可以看到,整数等于1 的最高有效位之后的数字,与浮点数小数部分的高位是相匹配的。
11.整数与浮点数转换规则
整数转换成二进制表示,然后小数点左移若干位得到规格化表示;取出小数部分的数值,在后面补0使其达到23位; 用frac加上偏置量得到的结果用二进制表示,放在取出的部分前面,再加上一个符号位即可。
三.学习体会
这周学习我看课本更多,相比以往我感觉看课本这种方式比做实验楼要更好理解知识一些,而且跟着老师的问题有重点的看,感觉学起来比之前轻松了一点。