免费注册 查看新帖 |

Chinaunix

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

想获得I/O操作的数据 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-05-19 20:41 |只看该作者 |倒序浏览
大家好!我现在想获得对设备(如硬盘)读写操作的数据,就是要得到将被写入硬盘的数据和从硬盘读出的数据,我想问一下大家,这该如何实现呢?能在请求队列里获得吗?

论坛徽章:
0
2 [报告]
发表于 2008-05-20 17:38 |只看该作者
最好的方法是修改函数指针hook,分析整个流程可以发现,可以hook的地方最好是
generic_make_request->blk_get_queue->__blk_get_queue

static inline request_queue_t *__blk_get_queue(kdev_t dev)
{
        struct blk_dev_struct *bdev = blk_dev + MAJOR(dev);

//hwif_init中初始化为ide_get_queue;使得generic_make_request->blk_get_queue->__blk_get_queue->bdev->queue(dev)->ide_get_queue能找到真实的队列
        if (bdev->queue)
                return bdev->queue(dev);//调用queue函数
        else
                return &blk_dev[MAJOR(dev)].request_queue;
}

即通过劫持ide的bdev结构,可以达到你的目的.注意同时也要hook bh->b_end_io.

论坛徽章:
0
3 [报告]
发表于 2008-05-20 22:38 |只看该作者
bluesky_jxc同学呢,把你以前写的那个linux下截获磁盘I/O的玩意发上来嘛

论坛徽章:
0
4 [报告]
发表于 2008-05-21 09:15 |只看该作者

回复 #3 zx_wing 的帖子

我做的是在windows下的截获。。。。

全都是钩子,和sniffer差不多,没啥好说的
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP