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


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

    教材学习内容总结

    本章学习内容是汇编语言

    信息安全的核心思维方式是逆向,反汇编是直接的逆向工程。

    - X86 寻址方式经历三代:
    1. DOS时代的平坦模式
    2. 8086的分段模式
    3. IA32的带保护模式的平坦模式
    

    gcc -S xxx.c -o xxx.s 获得汇编代码,也可以用objdump -d xxx 反汇编。
    gcc -Og -S .c命令可将C语言源代码文件编译为.s文件,及汇编文件

    注意: 64位机器上想要得到32代码:gcc -m32 -S xxx.c

    od 命令可以查看二进制文件,也可以用gdb的x命令查看。
    more或less命令可以结合管道查看,也可以使用输出重定向来查看

    • 不同系统的汇编格式:
      1. Linux的汇编格式:ATT格式
      2. Windows的汇编格式:Intel格式

    esi edi可以用来操纵数组,esp ebp用来操纵栈帧。
    对于寄存器,特别是通用寄存器中的eax,ebx,ecx,edx,大家要理解32位的eax,16位的ax,8位的ah,al都是独立的,

    在老师的教材导读中我觉得这个例子能够说明一些问题:

    假定当前是32位x86机器,eax寄存器的值为0x8226,执行完addw $0x8266, %ax指令后eax的值是多少? 
    解析:0x8226+0x8226=0x1044c, ax是16位寄存器,出现溢出,最高位的1会丢掉,剩下0x44c,不要以为eax是32位的不会发生溢出.
    
    操作数的三种类型:
    1. 立即数
    2. 寄存器
    3. 存储器
    

    有效地址的计算方式 Imm(Eb,Ei,s) = Imm + R[Eb] + R[Ei]*s

    MOV相当于C语言的赋值“=”,不能从内存地址直接MOV到另一个内存地址,要用寄存器中转一下。

    ** 注意栈顶元素的地址是所有栈中元素地址中最低的。**

    指针就是地址

    结合C语言理解一下控制部分,也就是分支(if/switch),循环语句(while, for)如何实现的。
    控制中最核心的是跳转语句:有条件跳转,实现if,switch,while,for;无条件跳转,实现goto。

    代码托管

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第一周 75/75 1/1 5/0
    第二周 135/210 1/2 4/9
    第三周 234/444 1/3 6/15
    第四周 486/930 1/4 8/23
    第五周 753/1683 3/7 43/66

    尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
    耗时估计的公式
    :Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。

    参考:软件工程软件的估计为什么这么难软件工程 估计方法

    • 计划学习时间:XX小时

    • 实际学习时间:XX小时

    • 改进情况:

    (有空多看看现代软件工程 课件
    软件工程师能力自我评价表
    )

    参考资料

  • 相关阅读:
    前后端分离后的前端时代
    解决input[type=file]打开时慢、卡顿问题
    es6快速入门
    jsonp的原理和实现
    减少前端代码耦合
    【css技能提升】css高级技巧
    vetur插件提示 'v-for' directives require 'v-bind:key' directives.错误的解决办法
    ES6的开发环境搭建
    netCore webapi Uow实现方式
    netcore webapi统一配置跨域问题
  • 原文地址:https://www.cnblogs.com/bestixx/p/7696415.html
Copyright © 2020-2023  润新知