应用程序获得root权限

上传人:ji****n 文档编号:45648204 上传时间:2018-06-18 格式:DOC 页数:2 大小:31KB
返回 下载 相关 举报
应用程序获得root权限_第1页
第1页 / 共2页
应用程序获得root权限_第2页
第2页 / 共2页
亲,该文档总共2页,全部预览完了,如果喜欢就下载吧!
资源描述

《应用程序获得root权限》由会员分享,可在线阅读,更多相关《应用程序获得root权限(2页珍藏版)》请在金锄头文库上搜索。

1、应用程应用程序获序获得得 root 权限权限在 android 中开发中,你肯定会遇到关于需要系统 root 才能执行的 的 API 吧。这种情况,无论你怎么调用这个函数都是没用的,无论模拟器还是真机,在 logcat 中总会得到“Unable to open alarm driver: Permission denied “.这个函数需要 root 权限或者运行与系统进程中才可以用。在网上搜了好久,还是有办法做到的。第一个方法简单点,不过需要在 Android 系统源码的环境下用 make 来编译:1. 在应用程序的 AndroidManifest.xml 中的 manifest 节点中加入

2、android:sharedUserId=“android.uid.system“这个属性。2. 修改 Android.mk 文件,加入 LOCAL_CERTIFICATE := platform 这一行3. 使用 mm 命令来编译,生成的 apk 就有修改系统时间的权限了。第二个办法麻烦点,不过不用开虚拟机跑到源码环境下用 make 来编译:1. 同上,加入 android:sharedUserId=“android.uid.system“这个属性。2. 使用 eclipse 编译出 apk 文件,但是这个 apk 文件是不能用的。3. 用压缩软件打开 apk 文件,删掉 META-INF

3、目录下的 CERT.SF 和 CERT.RSA 两个文件。4. 使用目标系统的 platform 密钥来重新给 apk 文件签名。这步比较麻烦,首先找到密钥文件,在我的 Android 源码目录中的位置是“build argetproductsecurity“,下面的 platform.pk8 和 platform.x509.pem两个文件。然后用 Android 提供的 Signapk 工具来签名,signapk 的源代码是在“build oolssignapk“下,用法为“signapk platform.x509.pem platform.pk8 input.apk output.apk

4、“,文件名最好使用绝对路径防止找不到,也可以修改源代码直接使用。这样最后得到的 apk 和第一个方法是一样的。最后解释一下原理,首先加入 android:sharedUserId=“android.uid.system“这个属性。通过Shared User id,拥有同一个 User id 的多个 APK 可以配置成运行在同一个进程中。那么把程序的 UID 配成 android.uid.system,也就是要让程序运行在系统进程中,这样就有权限了。只是加入 UID 还不够,如果这时候安装 APK 的话发现无法安装,提示签名不符,原因是程序想要运行在系统进程中还要有目标系统的 platform

5、key,就是上面第二个方法提到的 platform.pk8 和platform.x509.pem 两个文件。用这两个 key 签名后 apk 才真正可以放入系统进程中。第一个方法中加入LOCAL_CERTIFICATE := platform 其实就是用这两个 key 来签名。 这也有一个问题,就是这样生成的程序只有在原始的 Android 系统或者是自己编译的系统中才可以用,因为这样的系统才可以拿到 platform.pk8 和 platform.x509.pem 两个文件。要是别家公司做的 Android 上连安装都安装不了。试试原始的 Android 中的 key 来签名,程序在模拟器上运行 OK,不过放到 G3 上安装直接提示“Package . has no signatures that match those in shared user android.uid.system“,这样也是保护了系统的安全。 最最后还说下,这个 android:sharedUserId 属性不只可以把 apk 放到系统进程中,也可以配置多个 APK 运行在一个进程中,这样可以共享数据,应该会很有用的。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 初中教育

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号