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

教材学习内容总结

  • 本周主要学习了第二章信息表示和处理,很多东西在假期学习C的时候都有一些了解或者在汇编课程中学习过,有的已经在使用了,对很多内容已经有了一部分了解和应用。但还是有些内容有疑惑。
程序的可移植性
  • 原因:

由于操作系统的差异,同一种操作系统本身版本的差异,编译器产品不是完全兼容等问题,使得我们在移植大型应用程序的时候往往会出现很多难以解决的问题

  • 可移植性做的不好会引起很多奇奇怪怪的问题,例如程序不能正常运行。

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

  • 问题1:以前我认为信息的表示和处理会用就行了,为什么这里拿一章内容来写原理,和让我们知道为什么
  • 问题1解决方案:在阅读书的第二章内容时,旁注中很多讲由于算术运算细节所引起的安全漏洞。所以我们应该彻底的了解和掌握信息表示和处理的每一个细节。
  • 问题2:程序的可移植性问题。
  • 问题2解决方案:在假期学习C的过程中也碰见过这个问题,但是只是了解了一下,前两天又碰见了这个名词,在这次看书的过程中又看见了这个词,感觉很重要就深入的学习了一下。
  • ...

Myod系统调用

  • 上课实践 急于着手写代码,会错老师意图,我所用的fgets() fopen()等等都是开发者基于计算机内核的系统函数写出来的系统函数,而老师是希望我们使用上课内容 用man指令查询,然后用 open 等系统内核函数调用,写出myod。
  • 在课下在同学的指导下再一次读了老师的《别出心裁的Linux系统调用学习法》博客中,完成了此次代码。
myod的是做什么的
  • myod的功能是把文本文件中的每一个字符的十六进制表达形式打印出来。
  • 知道myod是做什么的就好办了,接下来我们可以写出伪代码
1. 打开文件
2. 读取文件
3. 关闭

-学会使用man命令进行收索。
-使用 man -k system |grep call 命令了解系统调用相关信息。结果如下:
2017-2018-1 学号20155329 《信息安全系统设计基础》第4周学习总结
2017-2018-1 学号20155329 《信息安全系统设计基础》第4周学习总结

  • syscalls(2)介绍了什么是系统调用;所以接下来我们使用man 2 syscalls来了解,里面有很多函数。结果如下图所示:
    2017-2018-1 学号20155329 《信息安全系统设计基础》第4周学习总结
2017-2018-1 学号20155329 《信息安全系统设计基础》第4周学习总结

  • 内核提供了很多函数,但是函数具体功能都不是很清楚,这时我们就需要下一步的收索了。

  • 我们使用man -k key1| grep key2| grep key3| ...进行收索。分别使用man -k read | grep file | grep 2和man -k open | grep file | grep 2,通过提示找到内核函数open()和read()满足要求。

  • 再通过man 2 open和man 2 read分别了解内核函数的用法,结果如下:
    2017-2018-1 学号20155329 《信息安全系统设计基础》第4周学习总结
2017-2018-1 学号20155329 《信息安全系统设计基础》第4周学习总结

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

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

其他(感悟、思考等,可选)

在课堂学习的系统调用中,感觉自己听懂了一部分,但是在课堂实践中实现myod的调用时完全没用想到用课堂上的所学习的内容来写,自己想当然的自己用C中的命令行参数来写这个代码,在运行的时候也出现了一些问题。当时没有意识到自己是从出发点就是错误的,在看了同学写的博客后,发现自己的出发点就是错误的,所以在课下又麻烦了同学一段时间来给我讲解课堂内容,和怎么运用。

同时在此次课堂实践写代码的时候也暴露出了一些问题,代码量还是太小了,在没有很多小问题还是重复出现,很多函数不记得 还是得查书,百度来寻找。

码云链接

参考资料