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

教材学习内容总结

学习梗概:

了解C语言、汇编代码、机器代码之间的关系;

了解X86-64的相关知识点(实现细节) 越界、溢出攻击等问题

GDB调试技巧

  1. 程序编码
  2. 数据格式
  3. 访问信息
  4. 算术和逻辑操作
  5. 控制
  6. 过程
  7. 数组的分配和访问
  8. 异质的数据结构
  9. 浮点代码

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

  • 问题1:在教材中有提及“后向兼容”这个名词,按字面意思上理解,这个指的是前面的东西可以向后面兼容?不太懂是什么意思,说成“前向兼容”,即后面的东西可以兼容前面的东西,是不是更容易理解一点?
  • 问题1解决方案:对“后向兼容”这个名词可以这么理解,“较早版本上编译的代码可以在较新的处理器上运行”,这样理解可以比较容易消化。

代码调试中的问题和解决过程

  • 问题1:教材上说用编译选项-Og编译程序是在告诉编译器使用会生成符合原始C代码整体结构的及其代码的优化等级,而越高级别的代码得到的及其代码越难理解。那么不同优化等级得出的代码究竟有什么区别呢?
  • 问题1解决方案:我编译了如下代码:
    1057540-20171022213336084-1058453587.png

  • 我分别用优化等级Og和优化等级O2进行比较,发现结果如下:
    1057540-20171022213245959-866929469.png

除去上图中划红圈的地方是多出来的模块以外,在main函数里的.LFB23中,编写的代码也是有不同之处的。

代码托管

1057540-20171022213825506-2030459464.png

上周考试错题总结

  • 1.Linux中()可以列出一个可执行文件在运行时所需的共享库
  • A. nm
  • B. objdump
  • C. strip
  • D. ldd
  • 选D
  • 2.main.c 调用了静态库libmath.a中的函数,编译main.c的命令是()
  • A. gcc -static main.c ./libmath.a -o main
  • B. gcc -static main.c -L. -lmath -o main
  • C. gcc -static main.c -L. -llibmath.a -o main
  • D. gcc -static main.o ./libmath.a -o main
  • 选BD 我的答案 AB 错误原因:没看清.o 和 .c
  • 3.Linux中,目标文件XXX.o中的代码和数据节是从地址0开始的。
  • A. 正确
  • B. 错误
  • 选A 我的答案 B 错误原因:错认为ELF头不属于节

结对及互评

本周结对学习情况

- [20155308](博客链接)

学习进度条

代码行数(新增/累积)博客量(新增/累积)学习时间(新增/累积)重要成长
目标5000行30篇400小时
第一周200/2002/220/20
第二周300/5002/418/38
第三周500/10003/722/60
第四周300/13002/930/90
  • 计划学习时间:5小时

  • 实际学习时间:5小时

参考资料

转载于:https://www.cnblogs.com/protectmonarch/p/7712041.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值