我有一个原生 C Android 应用程序。首先,我将本机 C 代码构建到共享库中,jni 将使用该库。该库使用一些内核可加载模块.ko,一些已经加载,一些必须通过“insmod”命令加载。
我还构建了一个使用该库的可执行文件,并且它可以通过命令行运行正常。但是,与可执行文件执行相同工作的 jni 在调用需要加载内核模块的函数时会失败。
那么它们之间有什么区别呢?我需要为我的应用授予一些权限吗?
我认为您的设备已植根。
我还构建了一个使用该库的可执行文件,并且它可以通过命令行运行正常。
也许你运行这个命令su
并且可以毫无问题地执行它。
但是,如果您通过 JNI 从 App 执行二进制文件,那么您实际上是在使用普通用户权限运行该命令,如果您的 C 代码调用某些内核函数,则可能会出现问题。
您是否在您的应用程序中尝试过以下代码?
Runtime.getRuntime().exec("su").
这里给你一些参考http://muzikant-android.blogspot.com/2011/02/how-to-get-root-access-and-execute.html?_sm_au_=iqsHGF7FqZfPGrJb http://muzikant-android.blogspot.com/2011/02/how-to-get-root-access-and-execute.html?_sm_au_=iqsHGF7FqZfPGrJb
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)