zoukankan      html  css  js  c++  java
  • 2018-2019-1 20175206《信息安全系统设计基础》第三周学习总结

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

    学习目标

    1.理解逆向的概念
    2.掌握X86汇编基础,能够阅读(反)汇编代码
    3.了解ISA(指令集体系结构)
    4.理解函数调用栈帧的概念,并能用GDB进行调试

    学习PPT和查阅相关资料后,第三章我总结如下:

    两个抽象

    • 指令集体系结构或指令集架构来定义机器级程序的格式和行为,他定义了处理器状态、指令的格式,以及每条指令对状态的影响。

    • 机器级程序使用的内存地址,提供的内存模型看上去是一个非常大的字节数组。

    ISA(指令集体系结构)定义了处理器状态指令的格式,以及每条指令对状态的影响
    PC(程序计数器)指示将要执行的下一条指令在存储器中的地址

    X86-64指令

    • 指令长度:1到15个字节不等
    • 指令格式:OPER[DEST[,SRC]];注释

    生成汇编文件和反汇编

    • 使用GCC编译器 输入 gcc -Og -S *.c即可生成对应的汇编文件

    • 使用OBJDUMP 输入objdump -d mstore.o即可生成对应文件(反汇编)

    处理器的类型

    处理器
    程序计数器
    整数寄存器
    条纹寄存器
    浮点寄存器

    数据格式

    • C语言数据类型对应x86-64中的表示
    C声明 Intel数据类型 汇编代码后缀 大小(字节)
    char 字节 b 1
    short w 2
    int 双字 l 4
    long 四字 q 8
    char* 四字 q 8
    float 单精度 s 4
    double 双精度 l 8

    访问信息

    通用目的寄存器:

    操作数指示符

    • 操作数指示符分为三类
      立即数
      寄存器
      内存引用

    数据传送指令和寻址方式

    movb ——传送字节
    movw——传送字
    movl——传送双字
    movs——符号位扩展
    movz——零扩展

    寻址方式分为立即数寻址方式、寄存器寻址方式和存储器寻址方式,其中还有更为详细的分类:
    如直接寻址方式、基址变址寻址方式、寄存器间接寻址方式、相对基址变址寻址方式、寄存器相对寻址方式等。

    算术和逻辑操作

    一元和二元操作:
    一元操作:
    INC DEC NEG NOT (只有一个操作数,既是源又是目的,可以是一个寄存器,或者存储器位置)
    二元操作:
    ADD SUB IMUL XOR OR AND (第一个操作数可以是立即数,寄存器或者存储器位置;第二个操作数既是源又是目的。可以是寄存器或者存储器位置,但是不同时是储存器位置)
    移位操作:
    SAL SHL SAR SHR (源操作数即移位量是立即数或者放在单字节寄存器元素%cl中;目的操作数是一个寄存器或是一个存储器位置)

    条件码

    CF(进位标志) ZF(零标志) SF(符号标志) OF(溢出标志)

    函数栈帧

    push——把ebp压入栈中
    movebp,esp:ebp=esp——
    sub esp,xxx——在栈上分配XXX字节的临时空间
    push xxx——如果有必要,保存名为XXX的寄存器
    pop xxx——如有必要,恢复保存过的寄存器
    movesp ,ebp——恢复esp同时回收局部变量空间
    ret——从栈取得返回地址,并跳转到该位置。

    指令:
    call Label 过程调用
    call *Operand过程调用
    leave为返回准备栈
    ret从过程调用中返回

    参考文献:
    教材《深入理解计算机系统》
    程序的机器级表示PPT

    程序的转换与机器级表示

  • 相关阅读:
    02-最简C语言程序
    Go学习笔记-GO编程语言手册
    Go学习笔记-Effective Go
    go学习笔记-语法
    机器学习-数据挖掘
    windows下jupyter notebook的安装及配置
    wpf学习笔记
    windows下安装mingW及控制台启用
    nginx
    MFC学习笔记
  • 原文地址:https://www.cnblogs.com/ldc175206/p/11665963.html
Copyright © 2011-2022 走看看