Chinaunix首页 | 论坛 | 博客
  • 博客访问: 705806
  • 博文数量: 90
  • 博客积分: 3225
  • 博客等级: 少校
  • 技术积分: 1200
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-20 11:04
个人简介

菩提本无树,明镜变非台 本来无一物,何处惹尘埃

文章分类

全部博文(90)

文章存档

2015年(1)

2014年(12)

2013年(15)

2012年(31)

2011年(8)

2010年(23)

分类: LINUX

2013-09-24 18:35:41

1已知内核符号地址,获取内核符号名

1.1 使用sprint_symbol内核函数

  1. #include <linux/kallsyms.h>
  2. int sprint_symbol(char *buffer, unsigned long address)

函数功能描述:

该函数根据一个内存中的地址address查找一个内核符号,并将该符号的基本信息,如符号名name,它在内核符号表中的偏移offset和大小size ,所属的模块名(如果有的话)等信息连接成字符串赋值给文本缓冲区buffer 。其中所查找的内核符号可以是原本就存在于内核中的符号,也可以是位于动态插入的模块中的符号。

输入参数说明:buffer :文本缓冲区,它用来记录内核符号的信息,它是一个输出型参数。

       address:内核符号中的某一地址,为输入型参数。

返回参数说明:返回值是一个int型,它表示内核符号基本信息串的长度,也即是buffer所表示的字符串的长度。  

2已知内核符号,获取内核符号地址

2.1 使用 kallsyms_lookup_name()
  该函数在kernel/kallsyms.c文件中定义的,要使用它必须启用CONFIG_KALLSYMS编译内核。
   kallsyms_lookup_name()接受一个字符串格式内核函数名,返回那个内核函数的地址。
    kallsyms_lookup_name("函数名");

3通用

   3.1利用System.map
      $ grep “函数名或地址” /usr/src/linux/System.map
   
   3.2使用nm 命令
      $ nm vmlinuz | grep “函数名或地址”
   
   3.3利用 /proc/kallsyms
      $ cat /proc/kallsyms | grep “函数名或地址”

阅读(9399) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~