07版-《LINUX及安全》实验指导书-新版_第1页
07版-《LINUX及安全》实验指导书-新版_第2页
07版-《LINUX及安全》实验指导书-新版_第3页
07版-《LINUX及安全》实验指导书-新版_第4页
07版-《LINUX及安全》实验指导书-新版_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《Linux及安全》实验指导书北京电子科技学院信息安全系

实验一:Linux系统信息编程:(验证性)实验目的proc是Linux下的一个虚拟文件系统,通过它,用户可以访问各种各样的内核数据。作为核心态与用户态通讯的主要接口,通过本题目,同学不仅可以理解proc文件系统,也会学习到用户态与核心态通信的手段的思想和方法。实验所涉及知识点C语言,Linux应用程序编制,/proc原理实验环境Fedora6或者更新版。文本编辑工具,gcc,gdb。内核源代码。实验内容编程一个程序,可以输出当前系统的内核版本号、CPU型号、主机名、系统时间等信息。实验步骤1、熟悉/proc文件系统2、编写程序按实验要求输出内容3、写实验报告实验要求1. 掌握使用gcc2. 使用gdb进行调试3. 读取/proc文件系统的内容4. 掌握Linux文件操作编程接口5.写出实验报告,总结实验中碰到的问题及解决方案。考核方式预习报告占2分,程序源代码和运行结果占3分,实验报告规范性1分(包括实验目的,实验步骤,源代码,实验中遇到的各种问题及解决办法,收获和启示),实验总结占4分严禁拷贝,抄袭,以答辩方式确定,对程序的结构,作用不清楚,不能做出相近改动者,每次成绩不高于3分。在实验日之前完成实验者,可以不交预习报告.对每次实验前几个完成实验要求的,可以给满分.没有按时完成实验,以后补交实验程序和实验报告的,可以酌情扣除1-3分.10分:实验准备充分,上机准时,操作熟练,能独立调试程序,按时完成,报告内容齐全,结果正确。8分:实验准备良好,上机准时,操作比较熟练,能在教师指导下顺利调试程序,按时完成,报告内容比较齐全,结果正确。6分:实验准备较好,上机准时,操作比较熟练,基本完成实验任务,报告内容基本齐备,结果基本正确。0-5分:实验准备不足,上机不准时,不能完成实验要求者。

实验二:系统调用扩展实验(综合性)实验目的Linux系统调用是Linux内核与用户的分界线,是用户程序进入内核态的主要渠道,本题目要求学生理解操作系统在处理每个系统调用的时候如何切入核心态,如何返回数据到用户态等,通过本题目真正理解操作系统系统内核的实质。实验所涉及知识点涉及到的基本知识:Linux下的C编程,Linux内核编译与安装,Linux应用程序编制,Linux系统调用的概念,C与汇编混合编程。实验环境Fedora6或者更新版。文本编辑工具,gcc,gdb。内核源代码。实验内容在2.6.x内核中,linux支持两种系统调用方式,:int/iret和sysenter/sysexit指令分别对应这两种方式。同学们可以自己根据自己学习和理解的程度来决定选用哪一个方式进入系统调用,也可以两种方式都进行试验。实验步骤1、写出预习报告。2、下载内核源代码,并解压到/usr/src目录。(附G)3、修改内核文件:添加系统调用服务程序、为新添加的程序配置系统调用号、配置系统调用表(附B)4、编译内核(附A)5、安装内核并启动到新内核。6、查看新增加的系统调用是否已在内核中。如果没有,重复以上几步。7、编写测试程序,调用新添加的系统调用。8、总结实验中遇到的问题即解决方案,写出实验报告。实验要求1、修改Linux内核,增加Linux系统调用:返回所有进程信息到调用者,返回所有加载模块到调用者(同学也可自行设计不同功能、难度相当的系统调用服务程序)。2、 编写调用库,用C言语接口封装新增加的Linux系统调用,3、 编写用户程序,测试新增加的系统调用功能。4、 写出实验报告考核方式预习报告占2分,程序源代码和运行结果占3分,实验报告规范性1分(包括实验目的,实验步骤,源代码,实验中遇到的各种问题及解决办法,收获和启示),实验总结占4分严禁拷贝,抄袭,以答辩方式确定,对程序的结构,作用不清楚,不能做出相近改动者,每次成绩不高于3分。在实验日之前完成实验者,可以不交预习报告.对每次实验前几个完成实验要求的,可以给满分.没有按时完成实验,以后补交实验程序和实验报告的,可以酌情扣除1-3分.10分:实验准备充分,上机准时,操作熟练,能独立调试程序,按时完成,报告内容齐全,结果正确。8分:实验准备良好,上机准时,操作比较熟练,能在教师指导下顺利调试程序,按时完成,报告内容比较齐全,结果正确。6分:实验准备较好,上机准时,操作比较熟练,基本完成实验任务,报告内容基本齐备,结果基本正确。0-5分:实验准备不足,上机不准时,不能完成实验要求者。思考题1、系统调用是否可以动态调整,在内核运行时指向其他系统调用服务程序?九、附录鉴于大部分同学对Linux操作不是很熟悉,很容易在一些具体的指令如何使用上,花费太多的精力而影响做实验的进度。所以提借供本部分内容,作为该实验中用到的指令及操作的一个参考,以让同学投入更多的精力到实验的核心逻辑上。附A:编译内核配置编译选项#makeoldconfig编译与安装#makebzImage#makemodules#makemodules_install#makeinstall下面简要介绍关于以上使用到的指令,关于编译内核的详细说明请同学自己参阅linux帮助文件或查阅网上信息。配置编译选项,用来配置置内核功能,通过以下四条指令都可以进行配置:#makeconfig(基于文本的最为传统的配置界面,不推荐使用)#makemenuconfig(基于文本选单的配置界面,字符终端下推荐使用)#makexconfig(基于图形窗口模式的配置界面,Xwindow下推荐使用)#makeoldconfig(如果只想在原来内核配置的基础上修改一些小地方)它们的目的是一样的,那就是生成一个.config文件这三个命令中,makexconfig的界面最为友好,如果可以使用Xwindow,就用这个好了,这个比较方便,也好设置。但有如果系统的没有安装图形库,可能不能使用Xwindow,那么就使用makemenuconfig好了。界面虽然比上面一个差点,总比makeconfig的要好多了。选择相应的配置时,有三种选择,它们分别代表的含义如下:Y--将该功能编译进内核N--不将该功能编译进内核M--将该功能编译成可以在需要时动态插入到内核中的模块这些内容,同学们进行一下实践操作,自然就会理解。附B:修改内核文件示例添加系统调用服务程序kernel/sys.c新添加的系统调用服务程序,可以位于内核中的任意位置。linux自身的系统调用服务程序也是根据功能,分散在不同的文件中的。以下例子,添加了一个新系统调用服务程序“sys_getprocess”在内核文件kernel/sys.c中,同学们在实际操作中,可以添加到其他文件中,或单独写一个文件(需要修改Makefile)。该系统调用服务程序,没有具体实现内容,只是当被调用时会输出一行信息,表示自己被调用过了。 修改系统调用号include/asm-i386/unistd.h在linux-2.6.20.3内核中Linux已经定义了320个系统调用,我们新添加一个,_NR_getprocess,共321个,所以将NR_syscalls修改为321。如下图箭头所示,即为修改内容。修改系统调用表arch/i386/kernel/syscall_tabls.S将sys_getprocess系统调用服务程序的入口地址,填到系统调用表的第320项上。 附C:封装与测试 sys_callX宏 syscall(2)库附D:测试程序示例本测试程序,直接使用API“systcall”,它接收两个参数,第一个是系统调用号,第二个是传递给系统调用的参数,在本例中buf对应sys_getprocess中的输入参数。附E:使用dmesg进行调试。在调试内核程序输出调试信息时,人们经常使用到一个和用户态printf功能类似的函数printk。不同在于printk的输出信息一般不能直接显示在终端设备上,而是输出到一个系统缓冲区中。如果想查看printk的输出,可以使用dmesg指令,它会显示整个printk缓冲的内容。附F:使用/proc文件系统,查看内核符号,以判

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论