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及安全——页表实践的主要内容,如果未能解决你的问题,请参考以下文章

Linux及安全实践二

内核模块编译实践

20135336王维臻模块实践报告

20135306黄韧模块实践报告

编译安装kernel 5.1.10及删除内核

知识普及:关于Fuzzing模糊测试入门原理及实践的讨论