一、学习目标 |
1. 理解二进制在计算机中的重要地位 2. 掌握布尔运算在C语言中的应用 3. 理解有符号整数、无符号整数、浮点数的表示 4. 理解补码的重要性 5. 能避免C语言中溢出,数据类型转换中的陷阱和可能会导致的漏洞 |
二、学习资源 |
(提示:可选项,如有其他相关资源请在此说明): 1. 教材:第二章《信息的表示和处理》,详细学习指导见这。 2. 课程资料:https://www.shiyanlou.com/courses/413 实验三,课程邀请码:W7FQKW4Y 3. 教材中代码运行、思考一下,读代码的学习方法见这。
|
三、学习方法 |
(提示:为提高学生的学习效果,请在此处为学生提出微课程学习的具体要求或建议)
1. 进度很重要:必须跟上每周的进度,阅读,练习,问答,项目。我会认真对待每一位同学,请你不要因为困难半途而废。 2. 问答很重要:遇到知识难点请多多提问,这是你的权利更是您对自己负责的义务。问答到博客园讨论小组:http://group.cnblogs.com/103791/ 3. 实践很重要:解决书中习题,实践书中实例,完成每周项目,才算真的消化了这本好书。通过实验楼环境或自己安装的虚拟机在实践中进行学习 4. 实验报告很重要:详细记录你完成项目任务的思路,获得老师点评和帮助自己复习。学习完成后在博客园中(http://www.cnblogs.com/)把学习过程通过博客发表,博客标题“信息安全系统设计基础第三周学习总结” |
四、学习任务 |
(提示:请将要求学生完成的任务、测验或思考题列在此处) 1. 阅读教材,完成课后练习(书中有参考答案) 2. 考核:练习题把数据变换一下 3. 加分题:课后作业最多两人一组,互相不能重复,1星题目每人最多加一分,2星题目每人最多加二分,3星题目每人最多加三分,4星题目每人最多加四分。
|
五、后续学习预告(可选): |
教材第三章《程序的机器级表示》 |
六、学习过程 |
第二章 信息的标识和处理
计算机存储和处理信息以二值信号表示。 三种最重要的数字表示法无符号:基于传统的二进制表示法,大于等于0 补码:有符号整数 浮点数:实数的科学计数法的以二进制为基数的版本 缓冲区溢出漏洞:计算机的表示法是用有限数量的位来对应一个数字编码,当结果太大不能表示时就会发生溢出。人为的溢出是有一定企图的,攻击者写一个超过缓冲区长度的字符串,植入到缓冲区这时可能会出现两种结果:一是过长的字符串覆盖了相邻的存储单元,引起程序运行失败,严重的可导致系统崩溃;另一个结果就是利用这种漏洞可以执行任意指令,甚至可以取得系统root特级权限。 2.1 信息的储存 1.存储器的每个字节都由唯一字节来标识,成为它的地址。所有可能地址的集合成为虚拟地址空间。其实现时间随机访问存储器(RAM)、磁盘存储器、特殊硬件和操作系统软件结合起来。 2.十六进制表示法 以0x或0X开头表示,字符A-F可大写可小写。 !掌握二进制和十六进制之间的转换,二进制四位与十六进制一位相对应。 小窍门: 3.字 字长:指明整数和指针数据的标称大小.字长决定的最重要的系统参数就是虚拟地址空间的最大大小。对一个字长为w位的机器,虚拟地址的范围为0-2^(w-1),程序最多访问2^w个字节。 4.数据大小 5.寻址和字节顺序 小端法:在存储器中按照从最低有效字接到最高有效字节的顺序存储对象; 大端法:在存储器中按照从最高有效字接到最低有效字节的顺序存储对象; 举例:变量x十六进制值为0x01234567,则: 6.表示字符串、代码 a-z的ASC||码为0x61-0x7A。 7.布尔代数 用0、1表示真假,以研究逻辑推理的基本原则。 有:~=NOT;&=AND;|=OR;^=异或。 8.C语言中的位级运算 !!确定一个位级表达式的结果最好的方法,就是将十六进制的参数扩展成二进制标识并执行二进制运算,然后再转换回十六进制。 9.C语言中的逻辑运算 有:||、&&、!,分别对应于OR、AND和NOT运算。 !注意:逻辑运算认为所有非零的参数都表示TRUE,而参数0表示FALSE。 10.C语言中的移位运算 右移运算:x>>k;左移运算:x<<k。 !对于无符号数据,右移必须是逻辑右移。对于有符号数据,则也可以使算术右移。 2.2整数表示 1. 无符号数编码 2.补码编码 3.扩展一个数字的位表示 零扩展——将一个无符号数转换为一个更大的数据类型,在开头添加0。 符号扩展——将一个补码数字转换为一个更大的数据类型,在表示中添加做高有效位置的副本。 4.截断数字 2.3整数运算 包括无符号加法、补码加法、补码的非、无符号乘法、补码乘法、乘以常数、除以2的幂。 1. 无符号加法是一种模运算形式。 2. 补码加法,两个数的w位补码之和与无符号之和又完全相同的位级表示。定义字长为w的、运算数x、y上的补码加法为: 因此,可以得出结论: 3. 补码的非 4. 无符号乘法 5. 补码乘法 6. 乘以常数 !!注意:无论是无符号运算还是补码运算,乘以2的幂都可能导致溢出。但即使溢出,通过移位得到的结果也是一样的。 7. 除以2的幂 除以2 的幂通过逻辑或者算术右移来实现。但这种方法不能推广到除以任意常数。 2.4浮点数 1.二进制小数 小数的二进制表示,二进制点左边的权形如2^i,而右边的数字的权形如1/2^i。 2.IEEE浮点表示 3.浮点运算 IEEE标准定义了一些合理规则。定义1/-0将产生-∞,而定义1/+0会产生+∞。 IEEE标准中指定浮点运算行为方法的一个优势在于,它可以独立于任何具体的硬件或者软件实现。 浮点加法不具有结合性,这是缺少的最重要的群属性;浮点加法满足了单调性属性——如果a>=b,那么对于任何a\b以及x的值,除了NaN,都有x+a>=x+b。无符号或补码加法不具有这个实数(和整数)加法的属性。 浮点乘法满足下列单调性: 4.C语言中的浮点数 所有的C语言版本提供了两种不同的浮点数据类型:float和double。在支持IEEE浮点格式的机器上,这些数据类型就对应于单精度和双精度浮点。 较新版本的C语言,包括ISO C99,包含第三种浮点数据类型long double。对于许多机器和编译器来说,这种数据类型等价于double数据类型。不过对于Intel兼容机来说,GCC用80位“扩展精度”格式来实现这种数据类型,提供了比标准64位格式大得多的取值范围和精度。 三种不同的浮点数据类型:float、double、long double(对于许多机器和编译器,与double等价)。 !当int、float和double格式之间进行强制转换时,程序改变数之和位模式的原则如下(假设int是32位的):
|
七、遇到的问题及解决 |
|
八、其他 |
(提示:此处由学生填写,灵感,领悟等)
|
Linux实验3
时间: 2024-12-17 22:24:55
Linux实验3的相关文章
linux实验三:ShellShock 攻击实验
ShellShock 攻击实验 20125113 赵恺 一. 实验描述 2014年9月24日,Bash中发现了一个严重漏洞shellshock,该漏洞可用于许多系统,并且既可以远程也可以在本地触发.在本实验中,学生需要亲手重现攻击来理解该漏洞,并回答一些问题. 二. 预备知识 1. 什么是ShellShock? Shellshock,又称Bashdoor,是在Unix中广泛使用的Bash shell中的一个安全漏洞,首次于2014年9月24日公开.许多互联网守护进程,如网页服务器,使用bash来
用VMwareWorkstation搭建linux 实验
搭建32位的linux实验 选择好硬件的兼容性 要不然安装的硬件不匹配 选择好LINUX 32位 虚拟的LINUX 存放的位置 LINUX设置2048MB的内存 选择仅主机模式,这样以后好方便做实验 下面选择默认的就行了 给LINUX的磁盘60个G 要不然 LINUX玩不起了 LINUX磁盘文件存放的位置 设置LINUX的镜像文件 考虑到有的人英文不好 就安装中文版的吧 设置输入法 清除储存设备里面可能含有的数据 设置LINUX在网络上的主机名 设置离本地最近的城市 设置LINUX的 登录密码
Linux实验报告-构建一个LVS的DR模型
Linux实验报告-构建一个LVS的DR模型 实验背景: 学习笔记,构建一个LVS的DR模型 实验目的: 了解LVS的DR模型工作原理 实现一个LVS的DR模型的实验 实验环境: Vmware Workstation 9,CentOS 6.4 实验步骤: 1,实验目的规划如下模型,CIP.VIP.DIP与RIP在同一网段 2.RS1上配置如下: 配置内核参数: #echo 1 > /prco/sys/net/ipv4/conf/lo/arp_ignore
Linux实验一
一.Linux 简介 实验介绍 本节主要介绍 Linux 的历史,Linux 与 Windows 的区别等入门知识.如果你已经有过充分的了解,可以跳过本节,直接进入下一个实验. 一.Linux 为何物 Linux 就是一个操作系统,就像你多少已经了解的 Windows(xp,7,8)和 Max OS ,至于操作系统是什么,就不用过多解释了,如果你学习过前面的入门课程,应该会有个基本概念了,这里简单介绍下操作系统在整个计算机系统中的角色. 我们的 Linux 也就是系统调用和内核那两层,当然直观的
Linux实验二报告
北京电子科技学院(BESTI) 实 验 报 告 课程:信息安全系统设计基础 班级: 201352 姓名:池彬宁 贺邦 学号:20135212 20135208 成绩: 指导教师: 娄嘉鹏 实验日期:2015.11.17 实验密级: 预习程度: 实验时间:15:30~18:20 仪器组次:
Linux实验——缓冲区溢出漏洞实验
一. 实验描述 缓冲区溢出是指程序试图向缓冲区写入超出预分配固定长度数据的情况.这一漏洞可以被恶意用户利用来改变程序的流控制,甚至执行代码的任意片段.这一漏洞的出现是由于数据缓冲器和返回地址的暂时关闭,溢出会引起返回地址被重写. 二. 实验准备 实验楼提供的是64位Ubuntu linux(系统用户名shiyanlou,密码shiyanlou),而本次实验为了方便观察汇编语句,我们需要在32位环境下作操作,因此实验之前需要做一些准备. 1.输入命令安装一些用于编译32位C程序的东
Linux实验二
一 第一个实验 Linux基础 1 通过娄老师关于分析学霸学渣的前言 明白了真正的学习一门功课应该是思考本质 而不是纯属记忆 2 全部的命令如下 Linux命令格式:command [options] arguments man命令 man man man-k cheat命令 (不是Linux自带的命令,使用其可以作弊) 其他命令 find locate grep whirese which 二 第二个实验 Linux下C语言编程基础 vim :文本编辑器 大写K: 查找函
Linux实验四报告
张文俊 + 原创作品转载请注明出处+ <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.学习内容 系统调用:操作系统为用户态进程与硬件设备进行交互提供了一组接口 API:应用编程接口,是一个函数定义. 操作系统提供API和系统调用的关系. Libc库定义的一些API引用封装例程(wrapper routine).一般每个系统调用对应一个封装例程.库再用这些封装例程定义给用户的API. 返回值: 1.大部分封装
操作系统是如何工作的--------Linux 实验二
操作系统是如何工作的? 作者:20135108 李泽源 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 mykernel实验指导(操作系统是如何工作的) 运行并分析一个精简的操作系统内核,理解操作系统是如何工作的 使用实验楼的虚拟机打开shell cd LinuxKernel/linux-3.9.4 qemu -kernel arch/x86/boot/bzImage 然后cd mykernel 您可以看到qe
linux实验二:SET-UID程序漏洞实验
SET-UID程序漏洞实验 20125113 赵恺 一.实验描述 Set-UID 是Unix系统中的一个重要的安全机制.当一个Set-UID程序运行的时候,它被假设为具有拥有者的权限.例如,如果程序的拥有者是root,那么任何人运行这个程序时都会获得程序拥有者的权限.Set-UID允许我们做许多很有趣的事情,但是不幸的是,它也是很多坏事情的罪魁祸首. 因此本次实验的目标有两点: 1.欣赏好的方面,理解为什么Set-UID是需要的,以及它是如何被执行的. 2.注意坏的方面,理解它潜在的安全性问题.