20135328-信息安全系统设计基础第五周学习总结(程序的机器级表示)

第五周(10.05-10.11):
学习计时:共小时
读书:
代码:
做业:
博客:
1、学习目标安全

  1. 理解逆向的概念以及
  2. 掌握X86汇编基础,可以阅读(反)汇编代码
  3. 了解ISA(指令集体系结构)
  4. 理解函数调用栈帧的概念,并能用GDB进行调试
    2、学习资源
  5. 教材:第三章《程序的机器级表示》,详细学习指导见这:重点是3.7,3.11
  6. 课程资料:https://www.shiyanlou.com/courses/413 实验四,课程邀请码:W7FQKW4Y
  7. 教材中代码运行、思考一下,读代码的学习方法见这。
    3、学习方法
  8. 进度很重要:必须跟上每周的进度,阅读,练习,问答,项目。我会认真对待每一位同窗,请你不要由于困难半途而废。
  9. 问答很重要:遇到知识难点请多多提问,这是你的权利更是您对本身负责的义务。问答到博客园讨论小组:http://group.cnblogs.com/103791/
  10. 实践很重要:解决书中习题,实践书中实例,完成每周项目,才算真的消化了这本好书。经过实验楼环境或本身安装的虚拟机在实践中进行学习
  11. 实验报告很重要:详细记录你完成项目任务的思路,得到老师点评和帮助本身复习。学习完成后在博客园中(http://www.cnblogs.com/)把学习过程经过博客发表,博客标题“学号-信息安全系统设计基础第五周学习总结

4、学习任务函数

  1. 阅读教材,完成课后练习(书中有参考答案)
    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
  2. 考核:练习题把数据变换一下
  3. 实验:须要动手的到实验楼中练习一下
  4. 深化、实践题目,额外加分

5、后续学习预告(可选):
第四章《处理器体系结构》
6、学习过程
(提示:此处由学生填写,学习过程,学习笔记,代码编译,运行结果,思考等)
3.1历史观点oop

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算术和逻辑操做
四种整数操做:code

加载有效地址:实际是将有效地址写入目的操做数,目的操做数必须是寄存器。

一元操做:只有一个操做数,能够是寄存器也但是存储器位置。

  • 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-栈指针
7、遇到的问题及解决
感受跟上个学期的汇编联系很大,但汇编没学好.....如今看这个比较难过

8、其余 (提示:此处由学生填写,灵感,领悟等)

相关文章
相关标签/搜索