gpt4 book ai didi

java - 在 jni 中运行的 native C 代码与在 Android 中的 shell 中运行的区别

转载 作者:太空宇宙 更新时间:2023-11-03 23:38:39 24 4
gpt4 key购买 nike

我有一个原生 C Android 应用程序。首先,我将 native C 代码构建到共享库中,jni 将使用该库。该库使用一些内核可加载模块.ko,一些已经加载,一些必须通过“insmod”命令加载。

我还构建了一个使用该库的可执行文件,它可以通过命令行正常运行。但是执行与可执行文件运行相同的工作的jni在调用需要加载内核模块的函数时失败。

那么它们有什么区别呢?我需要为我的应用授予一些权限吗?

最佳答案

我认为您的设备已获得 root 权限。

I also build an executable that use this library and it run ok by command line.

也许您使用 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

关于java - 在 jni 中运行的 native C 代码与在 Android 中的 shell 中运行的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51844210/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com