首页
社区
课程
招聘
[讨论]android模拟器对 kread() 的支持的问题
发表于: 2017-1-28 16:14 3761

[讨论]android模拟器对 kread() 的支持的问题

2017-1-28 16:14
3761
写了一个简单的内核模块文件 test.ko,里面使用到一个函数kreadf(),它会去读一个文件 data.txt。
在linux(pc机)下,insmod test.ko 是运行正常的。但是使用android模拟器,并将 test.ko 和 data.txt 上传上去后,当 insmod test.ko 的时候,死机(模拟器死机,连日志也看不到!)。

当我将 kreadf()函数注释后,不再出现死机,可见问题出在 kreadf()上。我反复查看,data.txt在android模拟器上的路径是没问题的,是否 android模拟器不支持 kreadf()?

环境:
android version : 4.4.4
kernel version   :  3.4.67

[培训]科锐逆向工程师培训第53期2025年7月8日开班!

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 74
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
顶....................
2017-1-31 09:42
0
雪    币: 18
活跃值: (55)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
拿只真机试试?看看是不是安卓内核的问题
2017-1-31 21:47
0
雪    币: 74
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
我在真机试过了,但是报错的是另一个问题:insmod: init_module 'test.ko' failed (Exec format error),估计是没开启内核模块动态加载的功能(如要开,又得重新刷机,于是选择继续在模拟器上测试.......)

对了,在linux(pc)上,我对文件的读写代码如下(各位看看这个在linux(pc)下可行的代码在android上是否也可行?以下2种方法我都试过,结果都是一样的,死机):

方法1:

char r_buf[10240];

mm_segment_t old_fs;
	loff_t pos; 
	struct file *fp_r = NULL;
	
	for(j=0;j<NR_CHAR_FILE;j++)
	{
		r_buf[j]	= NULL;
	}

	fp_r = filp_open("data.txt", O_RDONLY,0);
		
	old_fs	= get_fs();
  	set_fs(KERNEL_DS);  
  	pos	= 0;
	vfs_read(fp_r,r_buf,sizeof(r_buf),&pos);
	set_fs(old_fs);

	filp_close(fp_r,NULL);


方法2:

char r_buf[10240];

kreadf("data.txt", r_buf, 10240);
2017-2-1 09:07
0
游客
登录 | 注册 方可回帖
返回