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

来自个人维基
2015年5月6日 (三) 16:23Hovercool讨论 | 贡献的版本

(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转至: 导航搜索

本文以获取内核函数 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");


本文来自ChinaUnix博客:http://blog.chinaunix.net/u2/67414/showart_1763547.html