文档介绍:计算机科学与技术专业的开题报告
计算机科学与技术专业的开题报告
在人们素养不断提高的今天,大家逐渐认识到报告的重要性,我们在写报告的时候要注意涵盖报告的基本要素。那么你真正懂得怎么写好报告吗?下面是我据包进行分析的方法来实现对USB设备的控制。目前。Linux(所支持的主控制器主要有OHC(OpenHostController)和UHC(UniversalHostController)种控制器的驱动程序分别是ohci。0和uhci。o。usbsubruiturb函数就是由这两个模块提供的一般情况下。一台计算机只有一种控制器。Linux考虑了有多种控制器的可能性并为将来扩展更多的控制器提供了方便。
因此,拦截usbsubmiturb函数就是要拦截内核模块的导出函数。Linux采用整体式内核结构。如果要对内核功能进行修改或充。必须重新编译整个内核。这给扩展内核功能带来诸多不便。因此。Linux提供了一种新的机制:动态可加载内核模块内核模块将一些需要扩展的功能先单独编译成一组目标代码。该代码是核心的一分。但并没有编译到内核里面去。可以根据需要在系统启动后动态地加载到系统核心中。当模块不再需要时,可以动态地从系统核心卸载。核心符号表中维护着一个核心资源链表。在加载模块时。它能够解析出模块中对核心资源的引用某个模块对其他模块的服务或资源的需求类似于模块对核心本身资源或服务的请求。不过此时所请求的服务是来自另外一个已加载的模块每当加载模块时核心将把该加载模块输出的所有资源和符号添加到核心符号表中21核心符号表中包含模块导出函数名、变量的名字和其相应的地址通过更改函数地址值的方法可以对函数调用进行拦截。
但这种方法在拦截模块导出函数的时并不适用。如前所述,模块在加载的过程中会使用核心符号表中的信息对引用的函数和变量进行重定向。这种访问是一次性的。系统在内核级中执行时,访问了大量的寄存器,而很多寄存器值是由上层调用者提供的。如果改变这些寄存器值。系统会变得不稳定。很可能出现不可预料的后果。
因此使用hook函数的最佳原则是:在hook函数中调用原函数时。所有寄存器的值与被hook前的信息一样普通的C函数调用都提供了函数堆栈切换操作。而在funl和fun2中要使用原函数的堆栈来获取传人的参数地址。因此这两个函数必须用汇编语言编写这里分析一下拦截代码的稳定性在整个操作系统运行期间。系统服务会经常被调用。当一个进程调用了被hook的系统服务。这时如果发生了进程切换,则另一个进程再次调用相同的系统服务时。就会出现此次调用没有被hook的情况虽然可以通过关闭中断方法加以避免。但对系统性能影响比较大USB子系统的数据传输通常不是提交一次URB就能完成的。
偶尔漏掉了一个URB并不会影响对数据传输的禁用效果。所以这里完全可以忽略这种情况在实际的测试和使用中没有出现禁用失效的情况。
三、监控系统应用价值与基本方法
监控系统在已有研究成果