Linux及安全——页表实践
Posted 一勺水也做了海
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux及安全——页表实践相关的知识,希望对你有一定的参考价值。
Linux及安全——模块
一、模块的编译、生成、测试、删除
1.编写模块代码
编写:gedit test.c
查看:cat test.c
2.查看版本信息
3.编写Makefile
obj-m :这个变量是指定你要声称哪些模块模块的格式为 obj-m := <模块名>.o modules-objs :这个变量是说明声称模块modules需要的目标文件 格式要求 <模块名>-objs := <目标文件> 切记:模块的名字不能取与目标文件相同的名字。如在这里模块名不能取成 mymod; KDIR :这是我们正在运行的操作系统内核编译目录。也就是编译模块需要的环境 M= :指定我们源文件的位置 PWD :这是当前工作路径$(shell )是make的一个内置函数。用来执行shell命令。
4.make
5.加载、测试模块
6.删除模块
二、页表
对64位的CPU来说,两级页表仍然太少,一个页表会太大,这会占用太多宝贵的物理内存。Linux采用了通用的四级页表。实际采用几级页表则具体受硬件的限制。
上图中展示的4种页表分别是:
• 页全局目录(Page Global Directory)
• 页上级目录(Page Upper Directory)
• 页中间目录(Page Middle Directory)
• 页表(Page Table)
1.编写代码
2.编写Makefile
3.make
以root权限执行make指令
回到用户权限,查看page.c,得以分配相应进程
4.找到gedit的进程号
4.查看gedit相应地址与相应信息
根据十六进制数8062448找到该进程线性地址。
5.转换为十进制,加载模块
6.测试
使用tail 查看kern.log 文件或者dmesg指令(显示开机信息,查看日志)可以看到我们在函数里输出的部分或全部内容
输出内容一致。
最后要卸载的话输入:sudo rmmod page
以上是关于Linux及安全——页表实践的主要内容,如果未能解决你的问题,请参考以下文章