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

Posted zyzgl

tags:

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

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

学习目标

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

实验楼学习内容总结

要点:

1.X86 寻址方式经历三代:
DOS时代的平坦模式,不区分用户空间和内核空间,很不安全。
8060的分段模式
IA32的带保护模式的平坦模式
2..p114: MOV相当于C语言的赋值”=“,注意ATT格式中的方向,另外注意不能从内存地址直接MOV到另一个内存地址,要用寄存器中转一下。能区分MOV,MOVS,MOVZ,掌握push,pop:
没有MOVS这条指令,只有MOVSB、MOVSW、MOVSD等,串操作需要明确数据类型,B表示BYTE,W表示WORD,D表示DWORD。MOVS符号位扩展,MOVZ零扩展(高位0填充)。
3.p150/p151: call/ret:
call指令:
call指令有一个目标,即指明被调用过程起始的指令地址。
call指令的效果是将返回地址入栈。并跳转到被调用过程的起始处。
ret指令:
ret指从栈中弹出地址,并跳转到这个位置。
ret指令返回到call指令后的那条指令。
4.p123: 结合C语言理解一下控制部分控制中最核心的是跳转语句:有条件跳转p128(实现if,switch,while,for),无条件跳转jmp(实现goto)
while循环
while语句的通用形式:
while (test-expr) body-statement
GCC采用的方法,是使用条件分支,需要时省略循环体的第一次执行::

    goto done;
do
    body-statement
    while(test-expr);
done:```
for循环
for循环的通用形式:

for(init-expr;test-expr;update-expr)
body-statement
switch语句 根据一个整数索引值进行多重分支,执行switch语句的关键步骤是通过跳转表来访问代码位置,使结构变得更加高效。 5.p174: bt/frame/up/down :关于栈帧的gdb命令 关于栈帧的gdb命令:backtrace/bt n打印当前的函数调用栈的所有信息。 n是一个正整数,表示只打印栈顶上n层的栈信息。 -n表一个负整数,表示只打印栈底下n层的栈信息。frame nn为栈中的层编号,是一个从0开始的整数 该指令是移动到n指定的栈帧中去,并打印选中的栈的信息。 如果没有n,则打印当前帧的信息。up n表示向栈顶移动n层down n```
表示向栈底移动n层


实验楼练习:

1.使用gcc -s -o main.s main.c -m32编译为汇编代码
技术图片
技术图片
技术图片

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

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

2019-2020-1 20175204 《信息安全系统设计基础》第二周学习总结

20175204 张湲祯 2018-2019-2《Java程序设计》第十一周学习总结

数据结构-排序(选做) 20175204

实现mypwd——20175204张湲祯

2018-2019-2 20175204 张湲祯 实验三《敏捷开发与XP实践》实验报告