@H_
404_0@对于
一个antirootkit学生项目,我想获得内核模块中给定目录的
文件名列表。 我知道
文件IO在内核空间通常是
一个坏主意,但这是
一个特例。@H_
404_0@我用filp_open来
获取目录的struct file 。 有了这个,
我有一个struct dentry ,其中包含d_subd
irs ,它应该包含给定目录中的所有
文件。@H_
404_0@当我遍历列表并d_iname struct dentry所有d_iname (应该是struct dentry的短
名称)时,都有非ASCII符号,并且缺less目录中的某些
文件。 没有可以隐藏这些rootkit的rootkit。 dmesg
输出如下所示:@H_
404_0@<6>Filename: đ @ Y android_module17.ko <6>Filename: < <6>Filename: < <6>Filename: < <6>Filename: < Ë android_module15.ko <6>Filename: < ŋ android_module14.ko <6>Filename: < @Nj android_module13.ko <6>Filename: < <6>Filename: < ʋ k <6>Filename: < ̋ android_module11.ko <6>Filename: < @ android_module10.ko <6>Filename: < @ android_module9.ko <6>Filename: < <6>Filename: < android_module7.ko <6>Filename: <Ê android_module6.ko <6>Filename: <Ċ @ android_module5.ko <6>Filename: <Ŋ <6>Filename: <Ɗ 10-__rttest <6>Filename: <NJ __rttest <6>Filename: <Ȋ @ proctest.ko <6>Filename: <ʊ <6>Filename: <ˊ rt.ko <6>Filename: <̊ android_module4.ko <6>Filename: <͊ @ anmo.ko <6>Filename: < <6>Filename: Z LOST.DIR <6>Filename: ҉ @ Z Android@H_
404_0@有例如缺less的
文件夹DCIM或名为android_module1.ko的
文件。 我没有看到这些
文件有什么特别之处。@H_
404_0@Java
文件I / O
性能随时间减less@H_
404_0@C ++中的asynchronous
文件I / O@H_
404_0@无法使用Java在Windows中
删除文件@H_
404_0@什么是
检测文件是否在Windows中打开的编程方式?@H_
404[email protected]挂起@H_
404_0@这是我的内核模块的
代码:@H_
404_0@#include <linux/module.h> #include <linux/kernel.h> #include <linux/sched.h> #include <linux/fs.h> #include <linux/namei.h> #include <asm/uaccess.h> //replace the "" with angular brackets int init_module(void) { struct file * fi; printk(KERN_INFO "Hello android kernel...n"); fi = filp_open("/sdcard/",O_RDONLY,0); //struct path testpath = fi->f_path; struct dentry * thedentry; thedentry = fi->f_dentry; struct dentry * curdentry; unsigned char * curname = NULL; list_for_each_entry(curdentry,&thedentry->d_subd
irs,d_subd
irs) { curname = curdentry->d_iname; printk(KERN_INFO "Filename:
%s n",curname); } filp_close(fi,NULL); return 0; } void cleanup_module(void) { printk(KERN_INFO "Goodbye android kernel...n"); }@H_
404_0@当我遍历列表时试图访问inode时,android崩溃。 我可以以这种方式列出所有
文件吗?@H_
404_0@编辑:@H_
404_0@有趣的是,如果我尝试在循环中手动更正像这样的curdentry指针:@H_
404_0@testchar = (char *)curdentry; testchar = testchar + 8; curdentry = (struct dentry *)testchar; curname = curdentry->d_iname; testchar = (char *)curdentry; testchar = testchar - 8; curdentry = (struct dentry *)testchar;@H_
404_0@哇,这看起来很丑,但是
随机符号已经消失了。 我只是没有看到这个指针不匹配来自哪里。 我是否正确使用列表function?@H_
404_0@在Windows上以事务方式写入
文件更改@H_
404_0@检查在Linux和Windows中保存
文件的进程@H_
404_0@什么原因导致WriteFile返回ERROR_ACCESS_DENIED?@H_
404_0@为什么我无法将所有数据从sys.stdin写入Windows中的
文件?@H_
404_0@我可以得到
一个文件*由已经在内存中的数据
支持?@H_
404_0@您正在使用包含
名称的
错误字段: d_iname只是
一个缓冲区,用于保存可能不能用于大
文件名的分配。 其实你在寻找d_name.name 。@H_
404_0@你也
错误地遍历列表(我想知道如何从它得到任何结果)。 d_subd
irs是列表的头 ,在list_for_each_entry()作为第二个参数使用,但在第三个参数中,应该放置节点 ,而不是在d_entry情况下是d_child字段(在较旧的内核中为d_child )的头。@H_
404_0@这是你的
代码抛光后:@H_
404_0@struct file * fi; struct dentry * thedentry; struct dentry * curdentry; const char * curname = NULL; printk(KERN_INFO "Hello android kernel...n"); fi = filp_open("/root/",0); thedentry = fi->f_dentry; list_for_each_entry(curdentry,d_u.d_child) { curname = curdentry->d_name.name; printk(KERN_INFO "Filename:
%s n",NULL);@H_
404_0@我在vanilla Linux 3.12上查了一下。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。