linux内核分析和应用技术内容摘要:

:使用汇编或特权指令 • 使用 rdtsc指令获取 CPU主频计数器 unsigned long low, high。 asm (rdtsc : =a (low), =d (high))。 printf(rdtsc=%lu,%lu\n, high, low)。 • 使用 IO指令 –在用户空间不能执行 in/out指令,在内核里可以 • “segmentation fault” –尝试在模块里用 in/out指令读取开机 CMOS信息 • (如果有的说 ) • 也可以破坏 CMOS校验和,从而绕过开机口令 asm(“inb $0x70”) Γ В 题目:试验一个 timer • ./include/linux/ 23 extern void add_timer(struct timer_list * timer)。 24 extern int del_timer(struct timer_list * timer)。 • 添加计时器,在动作函数中打印 hello信息 • 如果不删除计时器,或者还没到时间就卸载模块会怎样。 – 注意可能会死机,要注意文件存盘先 Γ В 题目: gcc和 glibc • glibc • gcc Γ В • C RunTime Libraries in Windows • printf(), memcpy(), fopen(), … – .h • , , , – .lib – .dll • Standard C++ Library Γ В 题目:键盘支持 • 键盘是最基本的输入支持设备 • 分析内核中是如何管理键盘设备的 • 键盘是字符设备 • ./drivers/char/ – handle_scancode() • ctrl_alt_del是怎样实现的。 Γ В 题目:扩充一个系统调用 • 找一个空闲的调用号 k –查看你的内核源代码的源程序 –得针对你正所用的内核版本 • 把 syscall表中的 k位置指向你的调用函数 –不必编译完整的内核 –在模块初始化中做即可 • 在用户程序发起一个对 k的调用 –使用 int80h,调用号放在 ?中 • 如果模块卸载了,用户还调用会怎样。 Γ В 题目:截获一。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。