Chinaunix首页 | 论坛 | 博客
  • 博客访问: 62567
  • 博文数量: 6
  • 博客积分: 500
  • 博客等级: 下士
  • 技术积分: 146
  • 用 户 组: 普通用户
  • 注册时间: 2006-03-23 14:35
文章分类
文章存档

2012年(3)

2009年(3)

我的朋友

分类: LINUX

2012-05-02 20:58:30

  程序中有个地方想获取内核符号表,本来通过systemmap文件可以查询到,不过要都写文件,闲麻烦,就采用直接extern全局变量的方法来获取,编译OK,执行OK,可惜执行结果,全局变量为0,郁闷。
  然后就是查询资料,发现通过/proc/kallsyms文件也可以查询到内核符号表,于是打开看看,可以得到的结果却是:
lotusswan@lotusswan-TH61U3:~$ cat /proc/kallsyms |grep "kallsyms_lookup_name"
0000000000000000 T module_kallsyms_lookup_name
0000000000000000 T kallsyms_lookup_name
0000000000000000 r __ksymtab_kallsyms_lookup_name
0000000000000000 r __kcrctab_kallsyms_lookup_name
0000000000000000 r __kstrtab_kallsyms_lookup_name
lotusswan@lotusswan-TH61U3:~$ 
  又是0,再次郁闷;在网上闲逛,发现有篇文章说,为了防止攻击,对/proc/kallsyms文件做了限制,不允许普通用户去读,于是采用root用户去读,呵呵,居然有了:
lotusswan@lotusswan-TH61U3:~$ sudo cat /proc/kallsyms |grep "kallsyms_lookup_name"
ffffffff810a6590 T module_kallsyms_lookup_name
ffffffff810a6cf0 T kallsyms_lookup_name
ffffffff81a87bc0 r __ksymtab_kallsyms_lookup_name
ffffffff81a968f0 r __kcrctab_kallsyms_lookup_name
ffffffff81a9c563 r __kstrtab_kallsyms_lookup_name
lotusswan@lotusswan-TH61U3:~$ 
  有了,可是仍然郁闷,因为察看源代码,这个文件的权限是0444,查看文件权限:
-r--r--r--   1 root       root                     0  5月  2 21:04 kallsyms
  普通用户也是有读权限的啊,可为什么读到的地址为0呢?
  还有为什么EXPORT_SYMBOL的全局变量在模块中使用,返回的地址为0呢?
  看来内核的水很深啊,得加把劲,否则就淹死了。继续,希望早日解决这两个问题。
阅读(4428) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~