20145319 《信息安全系统设计基础》期中总结

20145319 《信息安全系统设计基础》期中总结

一 期中内容总结

linux 命令复习

  • man -k
    • 根据关键字搜索联机帮助,是一种模糊搜索
    • 结果后的数字表明该解释是对应相应区段的内容,且总共有八个不一样区段分类
    • 1,使用者在shell中能够操做的指令或可执行档
    • 2,系統核心可呼叫的函数与工具等
    • 3,库函数,大部分是C的函数库(libc)
    • 4,装置档案的说明,一般在/dev下的档案
    • 5,设定档或者是某些档案的格式
    • 6,游戏,屏保
    • 7,杂项
    • 8,系統管理員可用的管理指令
    • 也能够直接搜寻相应分类的命令解释,例如man 3 printf
  • cheat:
    • cheat xxx给出命令xxx的简短解释,而且列出xxx的相关使用范例给用户参考
  • grep:
    • 是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来
    • grep -nr xxx /usr/include查找xxx的值,例如查找宏 STDOUT_FILENO 的值的命令是grep -nr STDOUT_FILENO /usr/include
  • vi
    • 分为三种状态,分别是通常模式、编辑模式和命令行模式
    • 通常模式:进入文件后即为通常模式,你可使用h,j,k,l(也可使用方向键)按键来移动光标,你可使用删除字符或删除整行来处理文件内容, 也可使用复制、粘贴来处理你的文件数据
    • 编辑模式:按下i, I, o, O, a, A, r, R会进入相应编辑模式,此时才能够进行编辑。按下Esc便可退出编辑模式
    • 命令行模式:输入: / ?进入命令行模式,完成退出,保存等操做
    • 同时编辑两个文件;vim 1.c 2.c
  • gcc
    • 编译:gcc hello.c -o hello
    • 详细的来讲上述编译过程是分为四个阶段进行的,即预处理(也称预编译,Preprocessing)、编译(Compilation)、汇编 (Assembly)和链接(Linking),(生成文件后缀分别是iso)。java

    • 预处理:gcc –E helloworld.c –o helloworld.ilinux

    • 编译:gcc –S helloworld.i –o helloworld.s正则表达式

    • 汇编:gcc –c helloworld.s –o helloworld.oshell

    • 连接:gcc helloworld.o –o helloworldvim

    • 多模块编译:例如gcc hello1.c hello2.c -o hello数组

    • 检错:gcc -Werror hello.c -o hello
  • gdb
    • l:查看文件安全

    • b:设置断点函数

      • 函数断点:b main:在main函数下设置断点工具

      • 行断点:b num:在第num行下设置断点性能

      • 临时断点:tb num:在第num行下设置临时断点(断点使用一次以后消失)

      • 条件断点:b num if i=8:

    • r:run,运行函数,r num从第num行开始运行

    • p:print,输出查看变量值,p i输出i的值

    • n & s:next & step,单步执行,s会进入函数,n将会一步执行完函数

其余内容总结

  • 计算机中有符号数,无符号数,浮点数的编码表示
  • 栈帧结构
    • 在调用子程序时,汇编中会有callret两条指令,在实际计算机运行中即在call以后将返回地址压入栈中,并跳转到调用程序的起始地址,ret即弹出地址,程序回到本来进程
    • 而针对计算机这一特性,且c语言中对数组可以使用长度并无限制,能够经过往程序的缓冲区写超出其长度的内容,形成缓冲区的溢出,从而破坏程序的堆栈,执行攻击代码达到取得系统权限等目的,这就是缓冲区溢出漏洞攻击
  • 程序想要运行的越快就要从其局部性入手,要引用临近于其余最近引用过的数据项的数据项,或者最近引用过的数据项自己
    • 重复引用同一个变量的程序有良好的时间局部性
    • 对于具备步长为k的引用模式的程序,步长越小,空间局部性越好
    • 对于取指令来讲,循环有好的时间和空间局部性。循环体越小,循环迭代次数越多,局部性越好

二 自身总结

  • 收获
    • 学习了代码编译过程,以及计算机的存储结构,程序的栈帧结构,局部性等,起先对于计算机构成、工做以及程序运行都只有一个模糊的概念,知其然不知其因此然。如今就有了一个初步的印象,以前学习c语言所要求的“高内聚,低耦合”如今看来其实就是一种局部性的体验,在写代码的时候也大概有了改进程序运行速度,性能的方向
    • 在仔细看了课上说的缓冲区溢出漏洞攻击,之前strcpy函数还用的挺多的,也压根没想过其中的一个细节上的疏忽可能会致使系统权限被他人修改这种结果,感受在学计算机这种行业上,漏洞的存在仍是很致命的,之后感受在对于这种细节的问题上仍是要多琢磨一下,说不定能够有意想不到的收获
  • 不足
    • 这门课比起上一学期的java程序语言来讲,感受如今所作的一直都是理解书上各类概念,而动手实践的部分就少了不少,代码敲的很少,可是想要弄懂的话我以为仍是要多本身在电脑上经过代码实践,这样理解的很更透彻,印象我以为也会更深入一点,不大会容易忘
  • 建议
    • 但愿老师在讲课的时候可以给咱们介绍,或者让有准备的同窗给咱们展现,或者讲解一些相似于缓冲区溢出漏洞攻击的实验,以为这种类型的实验颇有意思,真正动手作完以后感受也能学到不少东西

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 0/0 1/1 20/20 学习经常使用linux命令
第二周 100/100 1/2 20/40 学习vim,gdb等用法
第三周 100/200 1/3 15/55
第四周 0/300 0/3 10/65
第五周 100/400 1/4 15/80 重温了汇编相关知识
第六周 0/400 1/5 15/95 学习了Y86
第七周 100/500 1/6 15/110 学习了存储器相关知识
第八周 0/500 2/8 20/130 复习
相关文章
相关标签/搜索