免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: caravsapm70
打印 上一主题 下一主题

如何使用未被EXPORT_SYMBOL_GPL()导出的符号 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2008-12-13 12:05 |只看该作者
原帖由 scutan 于 2008-12-13 00:50 发表


没有EXPORT的内核函数确实不能够被外面的模块调用。
除了重新编译内核之外,确实是想不出什么好方法了。

我用了一个距恶心无比的办法。从/boot/System.map-XXX里面找出符号的地址,然后传到模块里面去。

论坛徽章:
0
12 [报告]
发表于 2008-12-13 12:07 |只看该作者
原帖由 scutan 于 2008-12-13 00:50 发表


没有EXPORT的内核函数确实不能够被外面的模块调用。
除了重新编译内核之外,确实是想不出什么好方法了。

我用了一个具恶心无比的办法。

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
13 [报告]
发表于 2008-12-13 13:00 |只看该作者
原帖由 scutan 于 2008-12-13 00:50 发表


没有EXPORT的内核函数确实不能够被外面的模块调用。
除了重新编译内核之外,确实是想不出什么好方法了。


我记得之前一个同事说,只要内核没有明确说明该函数不导出,不可用于其他模块。其它函数不管有没有EXPORT都是可以被使用的。

但是我测试了一下,好像是不行的。是不是原先内核代码中已有的是可以这样的呢。

论坛徽章:
0
14 [报告]
发表于 2008-12-13 13:45 |只看该作者
原帖由 caravsapm70 于 2008-12-13 12:05 发表

我用了一个距恶心无比的办法。从/boot/System.map-XXX里面找出符号的地址,然后传到模块里面去。


噢,这个方法也行?

学习了。哈哈。

论坛徽章:
0
15 [报告]
发表于 2008-12-13 13:47 |只看该作者
原帖由 Godbach 于 2008-12-13 13:00 发表


我记得之前一个同事说,只要内核没有明确说明该函数不导出,不可用于其他模块。其它函数不管有没有EXPORT都是可以被使用的。

但是我测试了一下,好像是不行的。是不是原先内核代码中已有的是可以这样的呢。


我对以前的代码不太熟悉,不过2.6的内核我测试过,只能是EXPORT的才能够被其它模块使用。

你再看看LDD 2.5节呢。对这个有讲解。

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
16 [报告]
发表于 2008-12-13 18:16 |只看该作者
原帖由 scutan 于 2008-12-13 13:47 发表


我对以前的代码不太熟悉,不过2.6的内核我测试过,只能是EXPORT的才能够被其它模块使用。

你再看看LDD 2.5节呢。对这个有讲解。


是啊,2.6我也试了,就用你那个通知链的,不用EXPORT,别的模块编译就报错。

下周到单位,测一下2.4的内核。家里本上只有2.6

论坛徽章:
0
17 [报告]
发表于 2008-12-15 09:54 |只看该作者

回复 #11 caravsapm70 的帖子

这也是个方法,不错!

为了避免每次链接的地置不同引起的错误,再用个脚本。

论坛徽章:
0
18 [报告]
发表于 2008-12-15 10:38 |只看该作者
原帖由 Godbach 于 2008-12-13 13:00 发表


我记得之前一个同事说,只要内核没有明确说明该函数不导出,不可用于其他模块。其它函数不管有没有EXPORT都是可以被使用的。

但是我测试了一下,好像是不行的。是不是原先内核代码中已有的是可以这样的呢。


2.4和2.6是不一样的。

论坛徽章:
0
19 [报告]
发表于 2008-12-17 20:35 |只看该作者
拷贝出来,行不?

论坛徽章:
0
20 [报告]
发表于 2008-12-18 14:31 |只看该作者
要不要这样?
先把你的需要的函数写成一个用户空间的程序
然后编译出来用strace看下它调用了哪些系统调用
例如printf函数调用了write()
这样可行否?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP