怎么才魅蓝metal可以root吗得到root

怎样使Android apk 获取root权限_Linux编程_Linux公社-Linux系统门户网站
你好,游客
怎样使Android apk 获取root权限
来源:Linux社区&
作者:kuangjp
最近在回答客户的问题时,提到怎么将apk 升级到root权限。
1.一般权限的添加
一般情况下,设定apk的权限,可在Manifest.xml中添加android:sharedUserId="android.uid.xxx&
例如: 给apk添加system权限
&manifest xmlns:android="/apk/res/android"&&& ... ... & android:sharedUserId="android.uid.system"&
同时还需要在对应的Android.mk中添加LOCAL_CERTIFICATE := platform这一项。
通过这种方式只能使apk的权限升级到system级别,系统中要求root权限才能访问的文件,apk还是不能访问。
2.升级到root权限
为了回答客户的问题,跟同事们交流中发现,有一位同事一直致力于backup/restore 的项目,其中也涉及的到类似的问题,感觉他的方法不错,在这里我要感谢我亲爱的同事加兄弟,现将这种方法贡献给大家,具体的描述如下:
一般linux 获取root权限是通过执行su命令,那能不能在apk程序中也同样执行一下该命令呢,我们知道在linux编程中,有exec函数族:
  int execl(cONst char *path, const char *arg, ...);
  int execlp(const char *file, const char *arg, ...);
  int execle(const char *path, const char *arg, ..., char *const envp[]);
  int execv(const char *path, char *const argv[]);
  int execvp(const char *file, char *const argv[]);
  int execve(const char *path, char *const argv[], char *const envp[]);
在windows 编程中我以前用到过CreateProcess,具体的例子参见:/zh-cn/site/ms682512
以上这些都是C/ C++ 的编程,但在java中将如何执行呢? 以下就要转入主题了。
在java中我们可以借助 Runtime.getRuntime().exec(String command)访问底层Linux下的程序或脚本,这样就能执行su命令,使apk具有root权限,能够访问系统中需要root权限才能执行的程序或脚本了,具体例子:
package com.visit.
import java.io.DataInputSimport java.io.DataOutputSimport java.io.IOE
import android.app.Aimport android.os.Bimport android.util.L
public class VisitRootfileActivity extends Activity {&&& private static final String TAG = "VisitRootfileActivity";
&&& Process process =&&& Process process1 =&&& &&& DataOutputStream os =
&&& DataInputStream is =
&&& /** Called when the activity is first created. */&&& @Override&&& public void onCreate(Bundle savedInstanceState) {&&&&&&& super.onCreate(savedInstanceState);&&&&&&& setContentView(R.layout.main);&&&&&&& try {&&&&&&&&&&& process = Runtime.getRuntime().exec("/system/xbin/su"); //这里可能需要修改su的源代码 (注掉& if (myuid != AID_ROOT && myuid != AID_SHELL) {)
&&&&&&&&&&& os = new DataOutputStream(process.getOutputStream());&&&&&&&&&&& is = new DataInputStream(process.getInputStream());&&&&&&&&&& os.writeBytes("/system/bin/ls" + " \n");&&&&&& //这里可以执行具有root 权限的程序了&& &&&&&&&&&&& os.writeBytes(" exit \n");&&&&&&&&&&& os.flush();&&&&&&&&&&& process.waitFor();
&&&&&&& } catch (Exception e) {&&&&&&&&&&& &&&&&&&&&&& Log.e(TAG, "Unexpected error - Here is what I know:" + e.getMessage());&&&&&&& } finally {&&&&&&&&&&& try {&&&&&&&&&&&&&&& if (os != null) {&&&&&&&&&&&&&&&&&&& os.close();&&&&&&&&&&&&&&& }&&&&&&&&&&&&&&& if (is != null) {&&&&&&&&&&&&&&&&&&& is.close();&&&&&&&&&&&&&&& }&&&&&&&&&&&&&&& process.destroy();&&&&&&&&&&& } catch (Exception e) {
&&&&&&&&&&& }&&&&&&& }// get the root privileges
相关资讯 & & &
& (03/23/:55)
& (02/17/:44)
& (02/17/:53)
& (02/17/:45)
& (02/17/:52)
& (02/17/:45)
图片资讯 & & &
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款

我要回帖

更多关于 不root可以刷机吗 的文章

 

随机推荐