如何创建为Android可加载内核模块

 我来答
芥末留学
2017-06-20 · 为梦想出发,留学不留憾!
芥末留学
芥末留学是中国领先的互联网留学服务提供商,业务覆盖日本、英国、澳洲、美国等数十个国家,为您提供方便、快捷、专业、高效在线留学申请及留学后服务,一站式解决您留学过程中遇到的各种问题。
向TA提问
展开全部
java层。
java.lang.Runtime'sexec()methods:native层就是jni了。
可以用popen()。
但指令知否支持就得看bionic了。
也可以尝试system()andpipe。
>02
普通apk不可能有root权限,除非机器被root了,使用Runtime.exec之类的执行su-cinsmodxx.kosu为root的象征,配合superuser使用。
>03
在终端下使用su进入root用户,然后insmodxx.ko这个肯定可以成功的,因为insmod在root用户下执行的。
但是Java的Runtime.exec()也好,Native层execl()也好,只能用su-c命令临时在root用户下执行一条指令。
adbshell进入终端,普通用户下执行su-cinsmodxx.ko,会发现命令执行失败,失败原因就是需要注意的地方,su的-c参数只把下一个变量作为可执行的指令,因此其执行的命令是insmod而参数并没有传递过去,xx.ko作为了su的参数,因此如果想执行成功需要使用su-c“insmodxx.ko”,将传递给insmod的参数和命令组合成一个参数。
这样在Java层和Native层执行失败的问题也可以解决了,在Runtime.exec()中将命令格式进行格式化,比如Runtime.exec(“su-c”+“\”insmodxx.ko\“”),或者在Native中执行execl(“/sytem/bin/su”,“/sytem/bin/su”,“-c”,“insmodxx.ko”,NULL),这样最终传递给shell的命令就是su-c“insmodxx.ko”了。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式