• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

20145208蔡野

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

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

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

教材学习内容总结

  • 本章学习内容是汇编语言,现在直接写汇编的机会不多了,但一定要能读懂,信息安全的核心思维方式“逆向”在这有很好很直接的体现,反汇编就是直接的逆向工程。

  • 本章重点是3.7,但没有3.1-3.6的基础也是不行,如果想真正的提高动手能力,3.11如何用GDB调试汇编要好好练习一下,不过大多GDB技巧大家都会了。

  • 3.1-3.7中练习,重点:3.1,3.3,3.5,3.6,3.9,3.14,3.15,3.16,3.22,3.23,3.27,3.29,3.30,3.33,3.34

  • 实验练习的结果

  • 我的实验练习的c语言代码如下:

  • 去掉以.开头的语句后的汇编代码:

  • 注释了栈帧情况的汇编代码:

  • 通过gdb调试可执行文件查看eip, ebp, esp 等寄存器内容如何变化。
  • 一开始调试的时候总是出问题,查阅资料后了解,在linux中gdb调试汇编文件需要先用gcc -g3 -o * *.c的命令来将c语言文件编译成可调试汇编的可执行文件。
  • 在64位中rip就是eip,rbp就是ebp,rsp就是esp。
  • 通过调试过程中的stepi和print /x $***可以查询到相应寄存器的内容:

  • 由上图可以看到三个寄存器的初始值

  • 由上图可以看到三个寄存器在执行完第一条指令之后的内容的变换

  • 内容再次改变,如果想观察三个寄存器的每一步的变化可以重复上述步骤。

  • 通过上图不难发现rip寄存器(也就是eip),他身为程序计数器的内容就是下一条指令的地址。

教材学习中的问题和解决过程

  • 将C语言文件编译成汇编文件并查看汇编文件内的内容

  • 将C语言文件编译成可执行文件并查看可执行文件的二进制内容

  • 将可执行文件反编译成汇编代码:

课后作业中的问题和解决过程

问题一

  • 教材第113页习题3.1中对操作数260(%ecx,%edx)的求值遇到了问题
  • 按照公式算出来是(264),在这里卡住了,再看了下一个空的时候才反应过来换算成16进制计算是(0x108),得出答案0x13。

问题二

  • 教材121页的习题3.9,和前面的习题3.5类似,都是汇编代码转成c语言代码,但是有所不同,稍稍复杂一点,涉及到了算数和逻辑操作,一开始做起来不适应。
  • 前后对照并且动手做了两遍之后就会觉得顺手多了,上一条语句的值直接用在下面的语句中,一开始可能看不习惯,但是动手很重要,做了两次就可以将看到的汇编代码代入到C语言的相应位置了,相比较C语言翻译成汇编语言来说,汇编语言反翻译成C语言相对容易一点,可能是因为更习惯C语言的原因。

问题三

  • 教材148页的习题3.29,因为前面对于switch语句在汇编中的示例没有仔细阅读,在做题的时候找不到对应的跳转表序号
  • 仔细阅读之后了解C语言中case对应的序号对应着跳转表中的序号,需要注意的时候跳转表中的序号从0开始的。

代码托管

代码托管链接

  • 代码托管链接

代码及托管截图

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 0/0 1/2 20/20 学会了虚拟机安装和Ubuntu的基本操作
第二周 56/56 1/3 20/40 学会了Ubuntu终端下的C语言编写
第三周 110/166 1/4 30/70 熟悉了gdb的基本操作,了解了计算机信息表示和处理
第四周 110/166 1/4 10/80 复习了前几周的知识
第五周 42/208 1/4 10/80 复习了前几周的知识

参考资料

  • 2016-2017-1 《信息安全系统设计基础》教学进程
  • 代码托管链接

posted on 2016-10-15 22:13  20145208蔡野  阅读(351)  评论(3)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3