20135328-信息安全系统设计基础第五周学习总结(程序的机器级表示)
2015-10-09 17:27
387 查看
第五周(10.05-10.11):
学习计时:共小时
读书:
代码:
作业:
博客:
一、学习目标
理解逆向的概念以及
掌握X86汇编基础,能够阅读(反)汇编代码
了解ISA(指令集体系结构)
理解函数调用栈帧的概念,并能用GDB进行调试
二、学习资源
教材:第三章《程序的机器级表示》,详细学习指导见这:重点是3.7,3.11
课程资料:https://www.shiyanlou.com/courses/413 实验四,课程邀请码:W7FQKW4Y
教材中代码运行、思考一下,读代码的学习方法见这。
三、学习方法
进度很重要:必须跟上每周的进度,阅读,练习,问答,项目。我会认真对待每一位同学,请你不要因为困难半途而废。
问答很重要:遇到知识难点请多多提问,这是你的权利更是您对自己负责的义务。问答到博客园讨论小组:http://group.cnblogs.com/103791/
实践很重要:解决书中习题,实践书中实例,完成每周项目,才算真的消化了这本好书。通过实验楼环境或自己安装的虚拟机在实践中进行学习
实验报告很重要:详细记录你完成项目任务的思路,获得老师点评和帮助自己复习。学习完成后在博客园中(http://www.cnblogs.com/)把学习过程通过博客发表,博客标题“学号-信息安全系统设计基础第五周学习总结”
四、学习任务
阅读教材,完成课后练习(书中有参考答案)
3.1-3.7中练习,重点:3.1,3.3,3.5,3.6,3.9,3.14,3.15,3.16,3.22,3.23,3.27,3.29,3.30,3.33,3.34
考核:练习题把数据变换一下
实验:需要动手的到实验楼中练习一下
深化、实践题目,额外加分
五、后续学习预告(可选):
第四章《处理器体系结构》
六、学习过程
(提示:此处由学生填写,学习过程,学习笔记,代码编译,运行结果,思考等)
3.1历史观点
Intel处理器俗称X86,经历了长期的、不断进化的发展过程。
8086—〉Core i7(处理器版本后向兼容)
3.2程序编码
编译代码:gcc =O1 -o p p1.c p2.c
实际上gcc命令调用了一系列程序,将源代码转化成可执行代码。
3.2.1机器级代码
指令集体系结构ISA:定义了处理器状态、指令的格式,每条指令对状态的影响。
3.3数据格式
char b-字节
short w-字
int l-双字
数据传送指令:
MOV S,D
movb 传送字节
movw 传送字
movl 传送双字
(上述gcc生成的汇编代码指令都有一个字符后缀,表明操作数的大小)
3.5算术和逻辑操作
四种整数操作:
加载有效地址:实际是将有效地址写入目的操作数,目的操作数必须是寄存器。
一元操作:只有一个操作数,可以是寄存器也可是存储器位置。
INC 加1
DEC 减1
NEG 取负
NOT 取补
二元操作:源操作数是第一个,可以是立即数、寄存器、存储器 目的操作数是第二个,可以是寄存器、存储器 两个不能同时为存储器。
ADD 加
SUB 减
IMUL 乘
XOR 异或
OR 或
AND 与
使用规则: 第二个操作数 操作符 第一个操作数
移位:了解源操作数和目的操作数
SAL 左移
SHL 左移(等同于SAL)
SAR 算术右移
SHR 逻辑右移
源操作数:移位量——立即数或CL
目的操作数:要移位的数值——寄存器或存储器
3.6控制
翻译条件分支
将条件表达式和语句从c语言翻译成机器语言,最常用的方式就是结合有条件和无条件跳转。
do循环
do
loop:
while循环
while (test-expr)
if(!test-expr)
do
for循环
for(init-expr;test-expr;update-expr)
body-satament
翻译条件分支
将条件表达式和语句从c语言翻译成机器语言,最常用的方式就是结合有条件和无条件跳转。
1.寄存器的使用
调用者——%eax、%edx、%ecx
被调用者——%ebx%esi%edi
寄存器%ebp-帧指针
寄存器%esp-栈指针
七、遇到的问题及解决
感觉跟上个学期的汇编联系很大,但汇编没学好.....现在看这个比较难过
八、其他
(提示:此处由学生填写,灵感,领悟等)
学习计时:共小时
读书:
代码:
作业:
博客:
一、学习目标
理解逆向的概念以及
掌握X86汇编基础,能够阅读(反)汇编代码
了解ISA(指令集体系结构)
理解函数调用栈帧的概念,并能用GDB进行调试
二、学习资源
教材:第三章《程序的机器级表示》,详细学习指导见这:重点是3.7,3.11
课程资料:https://www.shiyanlou.com/courses/413 实验四,课程邀请码:W7FQKW4Y
教材中代码运行、思考一下,读代码的学习方法见这。
三、学习方法
进度很重要:必须跟上每周的进度,阅读,练习,问答,项目。我会认真对待每一位同学,请你不要因为困难半途而废。
问答很重要:遇到知识难点请多多提问,这是你的权利更是您对自己负责的义务。问答到博客园讨论小组:http://group.cnblogs.com/103791/
实践很重要:解决书中习题,实践书中实例,完成每周项目,才算真的消化了这本好书。通过实验楼环境或自己安装的虚拟机在实践中进行学习
实验报告很重要:详细记录你完成项目任务的思路,获得老师点评和帮助自己复习。学习完成后在博客园中(http://www.cnblogs.com/)把学习过程通过博客发表,博客标题“学号-信息安全系统设计基础第五周学习总结”
四、学习任务
阅读教材,完成课后练习(书中有参考答案)
3.1-3.7中练习,重点:3.1,3.3,3.5,3.6,3.9,3.14,3.15,3.16,3.22,3.23,3.27,3.29,3.30,3.33,3.34
考核:练习题把数据变换一下
实验:需要动手的到实验楼中练习一下
深化、实践题目,额外加分
五、后续学习预告(可选):
第四章《处理器体系结构》
六、学习过程
(提示:此处由学生填写,学习过程,学习笔记,代码编译,运行结果,思考等)
3.1历史观点
Intel处理器俗称X86,经历了长期的、不断进化的发展过程。
8086—〉Core i7(处理器版本后向兼容)
3.2程序编码
编译代码:gcc =O1 -o p p1.c p2.c
实际上gcc命令调用了一系列程序,将源代码转化成可执行代码。
3.2.1机器级代码
指令集体系结构ISA:定义了处理器状态、指令的格式,每条指令对状态的影响。
3.3数据格式
char b-字节
short w-字
int l-双字
数据传送指令:
MOV S,D
movb 传送字节
movw 传送字
movl 传送双字
(上述gcc生成的汇编代码指令都有一个字符后缀,表明操作数的大小)
3.5算术和逻辑操作
四种整数操作:
加载有效地址:实际是将有效地址写入目的操作数,目的操作数必须是寄存器。
一元操作:只有一个操作数,可以是寄存器也可是存储器位置。
INC 加1
DEC 减1
NEG 取负
NOT 取补
二元操作:源操作数是第一个,可以是立即数、寄存器、存储器 目的操作数是第二个,可以是寄存器、存储器 两个不能同时为存储器。
ADD 加
SUB 减
IMUL 乘
XOR 异或
OR 或
AND 与
使用规则: 第二个操作数 操作符 第一个操作数
移位:了解源操作数和目的操作数
SAL 左移
SHL 左移(等同于SAL)
SAR 算术右移
SHR 逻辑右移
源操作数:移位量——立即数或CL
目的操作数:要移位的数值——寄存器或存储器
3.6控制
翻译条件分支
将条件表达式和语句从c语言翻译成机器语言,最常用的方式就是结合有条件和无条件跳转。
do循环
do
body-statement while(test-expr);
loop:
body-statement t = test-expr; if(t) goto loop;
while循环
while (test-expr)
body-statement
if(!test-expr)
goto done;
do
body-statement while(test-expr);
for循环
for(init-expr;test-expr;update-expr)
body-satament
翻译条件分支
将条件表达式和语句从c语言翻译成机器语言,最常用的方式就是结合有条件和无条件跳转。
1.寄存器的使用
调用者——%eax、%edx、%ecx
被调用者——%ebx%esi%edi
寄存器%ebp-帧指针
寄存器%esp-栈指针
七、遇到的问题及解决
感觉跟上个学期的汇编联系很大,但汇编没学好.....现在看这个比较难过
八、其他
(提示:此处由学生填写,灵感,领悟等)
相关文章推荐
- 大头儿子和隔壁老王
- 基于bootstrap实现分页
- 小议:如何提供Friendly URL,方便End User访问信息?
- ArcGIS教程:含障碍的等值线
- 网站架构模式
- jquery post请求来实现参数传递
- java new Date() 变成GMT&& GMT时间与CST时间转换
- UVA - 12657 Boxes in a Line
- Theano入门——Logistic回归
- qwqd
- HDU 3374 String Problem(最大最小表示)
- 浅谈 zookeeper 原理,安装和配置
- 安装oralce11g后创建监听失败,缺失监听配置文件,也无法生成,提示TNS-04415
- Android短信的发送和接收监听
- 用Maven打包成EAR部署JBoss
- html创建视频网页背景
- Android性能专项测试之Heap Snapshot工具
- C++设计模式——原型模式
- 为UICollectionView的每个section设置footerView和headerView
- 八皇后