免费注册 查看新帖 |

Chinaunix

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

[内核模块] 非管理员,禁止访问 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2014-10-21 08:27 |只看该作者

非管理员,禁止访问

本帖最后由 jewson 于 2014-10-22 16:11 编辑

非管理员,禁止访问

论坛徽章:
6
金牛座
日期:2013-10-08 10:19:10技术图书徽章
日期:2013-10-14 16:24:09CU十二周年纪念徽章
日期:2013-10-24 15:41:34狮子座
日期:2013-11-24 19:26:19未羊
日期:2014-01-23 15:50:002015年亚洲杯之阿联酋
日期:2015-05-09 14:36:15
12 [报告]
发表于 2014-10-21 13:47 |只看该作者
回复 4# jewson
拓扑的确为:Webclient---->linux host---->webserver  
linux host是bridge ,是同一台服务器,是下面这样的。


外部网络webserver<-------------> PC <------------bridge --------------->[虚拟机linux webclient] [netfilter hook,NF_INET_LOCAL_IN]

很详细了,弱弱的问下,拓扑不一样的话,区别在哪里?



如果是同一台server的话,那收到数据包就调用ip_local_deliver,向上层协议栈提交数据包。

如果是在不同的server的话,你的hook点就错了,应该hook到NF_INET_FORWARD上。


这种帖子最好是“回复”,别直接发帖,要不然我怎么知道你是否回复过啊。
   

论坛徽章:
0
13 [报告]
发表于 2014-10-21 20:46 |只看该作者
回复 12# 瀚海书香
非常感谢你的回复,我想也是调用ip_local_deliver向上层协议栈提交数据包,但是,采用ip_local_deliver,会提示ip_local_deliver_finish找不到符号。不知道这个怎么解决,是需要加装某个KO文件吗?还是什么?请帮忙看一下好吗?不胜感激。)

   

论坛徽章:
6
金牛座
日期:2013-10-08 10:19:10技术图书徽章
日期:2013-10-14 16:24:09CU十二周年纪念徽章
日期:2013-10-24 15:41:34狮子座
日期:2013-11-24 19:26:19未羊
日期:2014-01-23 15:50:002015年亚洲杯之阿联酋
日期:2015-05-09 14:36:15
14 [报告]
发表于 2014-10-22 10:15 |只看该作者
回复 13# jewson
非常感谢你的回复,我想也是调用ip_local_deliver向上层协议栈提交数据包,但是,采用ip_local_deliver,会提示ip_local_deliver_finish找不到符号。不知道这个怎么解决,是需要加装某个KO文件吗?还是什么?请帮忙看一下好吗?不胜感激。


ip_local_deliver_finish是static的,直接调用ip_local_deliver应该没问题的,需要include <net/ip.h>



   

论坛徽章:
0
15 [报告]
发表于 2014-10-22 11:50 |只看该作者
回复 14# 瀚海书香

恩,我试过了,extern int ip_local_deliver(struct sk_buff *skb);是在net/ip.h里面有定义,我加入#include <net/ip.h>后,编译仍然提示:ip_local_deliver undefined!

insmod test.ko时,提示Unknown symbol in module.

dmesg 时,提示:test: Unknown symbol ip_local_deliver



   

论坛徽章:
0
16 [报告]
发表于 2014-10-22 13:13 |只看该作者
这个函数确实不是导出的,你可以往前找,看看那个函数调用了这个函数的。前面是有一个导出函数的。   
或者你运行时再去获取这个函数地址,直接通过函数指针调用。

不过你直接在hook函数里面返回accept不久完了么,何必搞的这么复杂呢。

论坛徽章:
0
17 [报告]
发表于 2014-10-22 13:35 |只看该作者

非管理员,禁止访问

本帖最后由 jewson 于 2014-10-22 16:13 编辑

非管理员,禁止访问

论坛徽章:
6
金牛座
日期:2013-10-08 10:19:10技术图书徽章
日期:2013-10-14 16:24:09CU十二周年纪念徽章
日期:2013-10-24 15:41:34狮子座
日期:2013-11-24 19:26:19未羊
日期:2014-01-23 15:50:002015年亚洲杯之阿联酋
日期:2015-05-09 14:36:15
18 [报告]
发表于 2014-10-22 14:35 |只看该作者
回复 15# jewson
恩,我试过了,extern int ip_local_deliver(struct sk_buff *skb);是在net/ip.h里面有定义,我加入#include <net/ip.h>后,编译仍然提示:ip_local_deliver undefined!

insmod test.ko时,提示Unknown symbol in module.

dmesg 时,提示:test: Unknown symbol ip_local_deliver


如果你非要自己向上层协议栈提交数据包,那么有两个方法:
(1)重编内核,export ip_local_deliver
(2)模仿ip_local_deliver函数,自己写一个ip_local_deliver_special函数,实现与ip_local_deliver一样的功能,里面使用的函数都用已经export,凡是没有export的,都重写。
   

论坛徽章:
0
19 [报告]
发表于 2014-10-22 16:08 |只看该作者
回复 18# 瀚海书香


    如果没有其他办法,只能重写了。谢谢两位的回答,结贴了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP