zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    win7系统宽带自动断开怎么解决【系统天地】
    Win10系统修复受损文件教程【系统天地】
    win10如何加快开机速度【系统天地】
    Netty核心概念(5)之Channel
    Netty核心概念(4)之Bootstrap
    漫谈NIO(3)之Netty实现
    漫谈NIO(2)之Java的NIO
    漫谈NIO(1)之计算机IO实现
    机器学习实战(二)决策树
    机器学习实战(一)k-近邻算法
  • 原文地址:https://www.cnblogs.com/bonjourvivi/p/5510243.html
Copyright © 2011-2022 走看看