获得内核函数地址的四种方法 

 本文以获取内核函数 sys_open()的地址为例。

   1)从System.map文件中直接得到地址

      $ grep sys_open /usr/src/linux/System.map

   

   2)使用 nm 命令

      $ nm vmlinuz | grep sys_open

   

   3)从 /proc/kallsyms 文件获得地址

      $ cat /proc/kallsyms | grep sys_open

   

   4)使用 kallsyms_lookup_name() 函数

      是在kernel/kallsyms.c文件中定义的,要使用它必须启用CONFIG_KALLSYMS编译内核。

      kallsyms_lookup_name()接受一个字符串格式内核函数名,返回那个内核函数的地址。

        kallsyms_lookup_name("sys_open");