免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2301 | 回复: 7
打印 上一主题 下一主题

[硬件及驱动] 请问各位:有什么方式可以hook到硬件的中断处理函数呢? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-12-07 18:58 |只看该作者 |倒序浏览
举个例子,比如有一个按键驱动,通过cat /proc/interrupts查询到它的中断号是102。是否有可能写出一个内核模块,hook到这个按键驱动的中断处理函数,这样一旦有按键发生,先进入到我的中断处理函数,再跳回到原来的中断处理函数?

我有试着去修改idt[102]的中断描述符,但没有成功,向各位请教!

论坛徽章:
0
2 [报告]
发表于 2012-12-07 21:30 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
3 [报告]
发表于 2012-12-07 22:13 |只看该作者
本帖最后由 justlinux2010 于 2012-12-07 22:14 编辑

可以使用kprobe试试,用kprobe机制可以在某个内核函数加入探针,当内核执行路径执行都注册探针的函数(例如函数tcp_v4_rcv)时,会触发这个探针,可以执行探针的函数。
kprobe结构有一个成员pre_handler,在执行到函数tcp_v4_rcv之前,可以先执行这个成员指向的函数。你可以试着找到处理102中断的函数,然后在该函数上注册一个kprobe实例。

论坛徽章:
0
4 [报告]
发表于 2012-12-09 08:38 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
5 [报告]
发表于 2012-12-09 15:18 |只看该作者
谢谢楼上两位的帮忙,去做个试验,然后我会把试验结果贴上来。

论坛徽章:
0
6 [报告]
发表于 2012-12-12 09:30 |只看该作者
当注册一个kprobe实例时,需要拷贝the probed instruction ,而且依赖陷阱来出发kprobe,对性能确实会有影响。kprobe应该是可以用于中断处理函数的,在内核文档kprobe.txt中有这么一句“In general, you can install a probe anywhere in the kernel. In particular, you can probe interrupt handlers”,可以作为参考。但是kprobe能够作用的函数必须是在/proc/kallsyms中出现的函数。另外再多说一句,kprobe实例必须是全局变量或静态变量,否则调用register_kprobe会失败;kprobe不能对变量起作用,只能是函数回复 4# stephen_du


   

论坛徽章:
2
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:53:17
7 [报告]
发表于 2012-12-12 10:37 |只看该作者
道理上当然可以。  

论坛徽章:
0
8 [报告]
发表于 2012-12-12 12:22 |只看该作者
kprobe用在中断中的话,就产生中断嵌套了,对性能有一定影响,我想设计者应该是不推荐这么用的吧?不过,作为一种调试方式,相当不错。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP