20145317《信息安全系统设计基础》第五周学习总结2

Posted 20145317彭垚

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了20145317《信息安全系统设计基础》第五周学习总结2相关的知识,希望对你有一定的参考价值。

20145317《信息安全系统设计基础》第五周学习总结2

教材学习内容总结

X86 寻址方式经历三代:

DOS时代的平坦模式,不区分用户空间和内核空间,很不安全。
8060的分段模式
IA32的带保护模式的平坦模式

程序编程

1、代码含义

gcc -01 -o p p1.c
  • -01 表示使用第一级优化。优化的级别与编译时间和最终产生代码的形式都有关系,一般认为第二级优化-02 是较好的选择。

  • -o 表示将p1.c编译后的可执行文件命名为p

2、机器级编程的两种抽象

  • 指令集结构ISA

是机器级程序的格式和行为,定义了处理器状态、指令的格式,以及每条指令对状态的影响。

  • 机器级程序使用的存储器地址是虚拟地址

看上去是一个非常大的字节数组,实际上是将多个硬件存储器和操作系统软件组合起来。

执行汇编命令:gcc –s xxx.c –o xxx.s
反汇编命令:objdump –d xxx 
64位处理器得到32代码的命令:gcc –m32 –s xxx.c

访问信息

1、三种操作数:

立即数:常数值。表示为$c标准表示的整数。
寄存器:表示某个寄存器的内容。
存储器:根据计算出来的地址访问某个存储器位置

2、数据传送指令

  • 栈的特点

    a、 遵循“后进先出”的原则
    b、 push压栈,pop出栈
    c、 栈顶:总是从这端插入和删除元素
    d、 栈顶元素的地址是最低的
    e、 栈指针%esp保存着栈顶元素的地址

3、数据传送示例

局部变量通常保存在寄存器中;
寄存器访问比存储器访问要快的多。

1.在栈帧之间切换

frame args 将当前栈帧设置为args(编号或Address)指定的栈帧,并打印该栈帧的简要信息。

up n 向上回退n个栈帧(更外层),n默认为1.

down n 向下前进n个栈帧(更内层),n默认为1.

2.打印栈帧信息(不移动栈帧)

frame 打印当前栈帧的简要信息。

info frame 打印当前栈帧的详细信息。

info frame args 打印指定栈帧的详细信息。

info args 打印函数参数信息。

info locals 打印当前可访问的局部变量的信息。

3.打印调用堆栈

backtrace 打印全部栈帧的简要信息,按Ctrl-c可终止打印。

backtrace n 打印最内层的n个栈帧的简要信息。

backtrace -n 打印最外层的n个栈帧的简要信息。

backtrace full 打印全部栈帧的详细信息。

backtrace full n 打印最内层的n个栈帧的详细信息。

backtrace full -n 打印最外层的n个栈帧的详细信息。

gdb调试

课后作业中的问题

1、P113练习3.1刚开始看题就晕了,很多操作数搞混了,仔细看了表格后,明白了:$Imm是立即数,Imm是存储器位置,Ea是寄存器,(Ea)是存储器位置;此外,比例因子只和变址寄存器的值相乘,最后总结答案如下:

Ox100
OxAB
Ox108
OxFF
OxAB(和第二个等价)
Ox11
Ox13
OxFF
Ox11

2、P155练习3.32题不会做,反复阅读P153~P154后,发现漏看了返回值放在%eax寄存器中这句话,很关键,解答思路如下:

1、代码最后两行:
subl %eax,%edx
movl %edx,%eax
以及return x-c,可确定:%edx为x,%eax为c,注意到有后缀“l”,所以c和x为long int型。
2、看前两行,movsbl、movl命令说明%edx、%eax为双字,第三行代码明显是*p=d,所以,%edx为d,%eax为p,全部为long int型。
3、完整c代码如下:
long int fun(long int d,long int p)
{
    *p=d;
    long int c=p;
    long int x=d;
    return x-c
    }
 

本周代码托管截图

https://git.oschina.net/717py/py-20145317/tree/master

学习进度条

 代码行数(新增/累积)博客量(新增/累积)学习时间(新增/累积)重要成长
目标 5000行 30篇 400小时  
第一周 200/200 1/2 20/20  
第二周 300/500 1/3 18/38  
第三周 200/1000 1/4 22/60  
第五周 200/1300 1/5 20/80  

参考资料

 

以上是关于20145317《信息安全系统设计基础》第五周学习总结2的主要内容,如果未能解决你的问题,请参考以下文章

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

2017-2018-1 20155336 《信息安全系统设计基础》第五周学习总结

2017-2018-1 20155208 《信息安全系统设计基础》第五周学习总结

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

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

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