第二周学习总结

学号20145332 《信息安全系统设计基础》第二周学习总结

教材学习内容总结

·h:左移光标 l:右移光标 k:上移光标 j:下移光标
·:q! <回车>:退出编辑器回到命令行提示符
·x:正常模式下删除字符

·i:插入文本

·A:添加文本(光标不一定要移动到要添加的位置,会自动移动)

·[Esc]:返回正常模式
·[vim tutor]:打开并编辑tutor这个文件(名字可以改变)
·[:wq<回车>]:保存改动过的文件并退出vim
·[dw]:从光标出删除至一个单词的末尾

·[d$]:从光标出删除至当前行末尾
·[nw]:光标向前移动n个单词
·[ne]:光标向前移动到第n个单词的末尾
·[0]:移动光标到行首
·[dnw]:删除n个单词
·[dd]:删除整行 2dd:删除两行
·[u]:撤销最后一次执行的命令 U:撤销当前行的所有命令 多次u:撤销u以及u之前的命令 ctrl+R:撤销掉撤销命令
·[p]:将最后删除的内容粘贴至现在光标位置的上方

·[r+要替换的字符]:将光标位置的字符替换为输入字符

·[cw+要替换的单词]:从光标位置开始以输入的字符替换这个单词

·[c$]:从光标开始至行末尾的都被删除然后重新输入正确单词。

·[ctrl+G]:显示状态信息行,显示现在的光标所在行号 [G]:使光标跳至文件最后一行 [gg]:使光标跳至文件第一行 [前面显示的行号+G]:光标回到当前行
·[/+要查找的字符串]:光标指到最前的该字符串位置 [再输入n]:光标指向下一个该字符串 或[输入N]:光标指向上一个该字符串
[?+要查找的字符串]:光标指向最后的该字符串位置
·[%]:将光标移到一个配对括号处,按下%,光标将移到其配对括号处,在查找程序中括号是否配对很有用
·[:!+外部命令]:执行外部命令
·
·[v]:使vim进行可视模式进行选取
·[:!dir]:将上次选取的内容复制

·[o]:在光标下方打开新的一行并进入插入模式 [O]:在光标上方打开新的一行并进入插入模式

·[a]:在光标后插入文本

·[a]:在光标后插入 [i]:在光标处插入 [A]:光标自动移到插入位置
·[R]:将光标放于要置换的字符,按下R,将其置换为需要字符

·p:复制粘贴文本

·[:help]:使用在线帮助系统 [:q<回车>]:关闭帮助系统

·gcc使用过程:
预处理:gcc –E hello.c –o hello.i;gcc –E调用cpp
编 译:gcc –S hello.i –o hello.s;gcc –S调用ccl
汇 编:gcc –c hello.s –o hello.o;gcc -c 调用as
链 接:gcc hello.o –o hello ;gcc -o 调用ld
·gdb基本命令:
gdb programm(启动GDB)
[b]: 设断点(要会设4种断点:行断点、函数断点、条件断点、临时断点)
[run]: 开始运行程序
[bt]: 打印函数调用堆栈
[p]: 查看变量值
[c]: 从当前断点继续运行到下一个断点
[n]: 单步运行
[s]: 单步运行
[quit]: 退出GDB
·gdb调试命令:
[display]: 跟踪变量值的改变
[until]: 跳出循环
[finish]: 跳出函数
[help]: 帮助
·od -tc -tx1 hello.c:查看源文件
·cpu执行指令的操作:加载,储存,操作,跳转
·储存系统的核心思想:缓存
·操作系统:文件、虚存、进程、虚拟机
·链接器的两个任务:符号解析(目标文件定义和引用符号)
重定位(编译器和汇编器生成从地址0开始的代码和数据节)
·目标文件的三种形式:可重定位目标文件、可执行目标文件、共享目标文件
·目标文件格式:第一个Linux系统(包括现在的可执行目标文件):a.out
System V unix早期版本:COFF
Windows NT:PE(COFF的一个变种)
现代Unix系统:ELF
·处理多重定义符号的规则:1.不允许有多个强符号
2.如果有一个强符号和多个弱符号,选择弱符号
3.有多个弱符号,任意选择一个
·处理目标文件的工具:AR、STRINGS、STRIP、NM、SIZE、READELF、OBJDUMP、LDD

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

·教材导读中p451: ELF文件格式:试试readelf命令,输入命令后出现的没有看懂

解答:在看到后面的教材时,发现教材P473写了关于这个命令的解释:显示一个目标文件的完整结构,包括ELF头中编码的信息。包含SIZE和NM的功能

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

·在打开虚拟机的时候出现:不能为虚拟电脑 lucy 打开一个新任务. Cannot load R0 module D:\XuNiJi/VBoxDDR0.r0: supLoadModule returned VERR_LDR_MISMATCH_NATIVE (VERR_LDR_MISMATCH_NATIVE). Failed to register ourselves as a PCI Bus (VERR_MODULE_NOT_FOUND). 返回 代码:E_FAIL (0x80004005) 组件:Console 界面:IConsole {db7ab4ca-2a3f-4183-9243-c1208da92392}(忘记截图,这是当时复制下来的问题)
解决:打开虚拟机的属性,在兼容性一栏中选择以兼容模式运行这个程序,并选择下面的以管理员身份运行此程序,成功打开虚拟机

·在打实验楼的代码时,第一次直接将所有的代码都打入一个hello.c文件,出现如下问题

然后我将代码分为几个小段分别打入,调试时又显示如下:

本周代码托管截图

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

本周的实验楼中的内容使用实验楼虚拟机完成,后面书中的内容用自己的虚拟机完成,主要以练习为主,在练习过程中渐渐熟悉了一些简单指令,但还是有很多指令没有记住,在练习过程中需要翻看前面的指令介绍才能完成。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第三周 0/0 1/2 25/25
第四周 300/500 1/1 30/30

参考资料

posted @ 2016-09-25 20:48  20145332卢鑫  阅读(220)  评论(4编辑  收藏  举报