首页 > 代码库 > 20145301 《信息安全系统设计基础》第5周学习总结

20145301 《信息安全系统设计基础》第5周学习总结

    • X86 寻址方式经历三代:

      • 1 DOS时代的平坦模式,不区分用户空间和内核空间,很不安全
      • 2 8086的分段模式
      • 3 IA32的带保护模式的平坦模式
    • CPU包含一组8个存储32位值的寄存器
      • 存整数数据和指针:eax,ecx,edx,ebx,esi,edi,esp,ebp。
      • 大多数情况下前六个都用作通用寄存器,eax,ecx,edx的存储和恢复惯例不同于ebx,edi,esi(前三者为被调用者保存,后三者为调用者保存)。最后两个用于存储指针,由于在过处理中非常重要,分别指向栈帧的顶部和底部,必须保持。
    • gcc -S xxx.c -o xxx.s 获得汇编代码,也可以用objdump -d xxx 反汇编

    • 注意: 64位机器上想要得到32代码:gcc -m32 -S xxx.c
      Ubuntu中 gcc -S code.c (不带-O1) 产生的代码更接近教材中代码(删除"."开头的语句)

    • 二进制文件可以用od 命令查看,也可以用gdb的x命令查看。 有些输出内容过多

    • 当一个源文件生成了‘.o‘的目标二进制文件后,无法直接查看。

    • 但是还是有个查看目标代码文件内容的方法,就是对‘.o‘目标文件使用反汇编器。它的输出还是二进制文件,但是,反汇编器将这些二进制按照指令进行了分段。让我们知道哪一段是一个指令(格式上与汇编器产生的汇编文件一样,分行的)

20145301 《信息安全系统设计基础》第5周学习总结