当动态加载Linux内核驱动程序时,我们如何编写C函数来报告驱动程序模块所在的位置(内存地址)?

这对于Windows来说更多,但是,如果我们为Linux驱动程序改编类似的驱动程序,那会起作用吗?

    long sizeOfExe = 0;
    文件* fp;

    fp = fopen(“ ./ Mini.ko”,“ rb”); //阅读本身

    fseek(fp,0L,SEEK_END);
    sizeOfExe = ftell(fp);

    printf(“此驱动程序模块的大小为:%ld个字节\ n”,sizeOfExe);
    int * addressStartOfFile =&fp;
    printf(“此驱动程序模块的位置开始于:0x%x \ n”,addressStartOfFile);
    printf(“此驱动程序模块的位置结束于:0x%x \ n”,(addressStartOfFile + sizeOfExe));

/ *
该驱动程序模块的大小为:18727字节
该驱动程序模块的位置开始于:0x28ff30
该驱动程序模块的位置结束于:0x2a23cc
* /

最佳答案

当动态加载Linux内核驱动程序时,我们如何编写C
  报告驾驶员所在位置(内存地址)的功能
  模块正在驻留?


我们编写它以读取(通过popen()等)shell命令的输出或将其转换为C。

grep'\ [模块名称]'/ proc / k * syms |分类

关于c - 确定驱动程序模块所在的位置(内存地址),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20672524/

10-16 17:38