Android 应用程序获得系统权限
第一个方法简单点,不过需要在Android系统源码的环境下用make来编译:
1. 在应用程序的AndroidManifest.xml中的manifest节点中加入
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目录下的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",
文件名最好使用绝对路径防止找不到,也可以修改源代码直接使用。
这样最后得到的apk和第一个方法是一样的。
最后解释一下原理,首先加入android:sharedUserId="android.uid.system"这个属性。通过Shared User id,拥有同一个User id的多个APK可以配置成运行在同一个进程中。那么把程序的UID配成android.uid.system,也就是要让程序运行在系统进程中,这样就有权限来修改系统时间了。
只是加入UID还不够,如果这时候安装APK的话发现无法安装,提示签名不符,原因是程序想要运行在系统进程中还要有目标系统的platform
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运行在一个进程中,这样可以共享数据,应该会很有用的。
Android 应用程序获得系统权限相关推荐
- 如何使Android应用程序获取系统权限来修改系统时间
在 android 的API中有提供 SystemClock.setCurrentTimeMillis()函数来修改系统时间,可惜无论你怎么调用这个函数都是没用的,无论模拟器还是真机,在logcat中 ...
- 通过apk签名使应用程序有系统权限
问题: 系统预装软件,需要访问一些配置文件,配置文件的owner都是设置为system.所以应用程序需要有授权才可以读写. google搜索找到以下文章,解决了这个问题. 以下内容解释了: andro ...
- Android应用程序获得root权限
我在博文<Android程序的安全系统>中提到两种让root权限的办法.最近在网上发现很多朋友转载那篇文章,但是对那篇文章中提到的第一种方法怎样实现,不是很明白.本文将会以一个例子实现来演 ...
- android应用程序永久获取root权限方法,怎么使Android应用程序获得root权限
一般来说, Android 下的应用程序可以逗直接地得到的最大的权限为 system ,但是如果我们需要在程序中执行某些需要 root 权限的命令,如 ifconfig 等,就需要 root 权限了. ...
- android系统应用程序设置时间,Android应用程序设置系统时间的方法
Android应用程序获取系统时间的方法: System.currentTimeMillis(); Android SDK虽然提供了设置系统时间的方法SystemClock.setCurrentTim ...
- Android应用程序获得root权限 基于NVidia平台Android应用修改cpu频率
问题和目标 有时候希望在java应用程序中来使用root权限,如修改/system权限,亦或者如题. 思路和原理 这里介绍2种我已经实现的方法,但是建议使用第2种,因为第2种适 ...
- 如何使Android应用程序获得root权限
写这篇文章前,首先要感谢Simon_fu,他的两篇关于root权限的文章对于我的工作起到了非常大的帮助,这篇文章可以说是对他的文章的一个补充.Simon_fu的文章可以参考如下两个网页: Androi ...
- Android安卓程序开发的权限设置
在AndroidManifest.xml文件中添加限设置 <!-- 读联系人权限 --> <uses-permission android:name="android.pe ...
- 转:Android中如何修改系统时间(应用程序获得系统权限)
在 android 的API中有提供 SystemClock.setCurrentTimeMillis()函数来修改系统时间,可惜无论你怎么调用这个函数都是没用的,无论模拟器还是真机,在logcat中 ...
- 应用需要android权限,如何找出android应用程序需要的权限
how can i find out which permissions i need to add in manifest for my applications? 有时,会记录权限,例如JavaD ...
最新文章
- 看看人家 SpringBoot 的全局异常处理多么优雅...
- 【堆栈应用一】一个数divided=几个最小质因数的乘积
- openjudge基础题3计算书费
- EOS 连接同步主网
- day20 Python 高阶函数,函数,嵌套,闭包 装饰器
- FileSystemObject详解
- 好程序员大数据教学点睛:Hadoop基础篇
- WeBack(微信聊天记录导出)使用教程
- Linux 命令行常用快捷键
- 弹性板计算和板带划分计算_彻底搞懂板带的配筋及范围
- 《操作系统》课程设计任务书
- c#通讯录管理系统(女朋友版本)
- 谷歌浏览器 无法翻译此网页的解决方法
- 数值分析笔记(一):方程求根
- python回测代码_python实现马丁策略回测3000只股票的实例代码
- 计算机网络运输层的简单总结与思考
- L2范数-欧几里得范数
- HTML+CSS+JS大作业:商城网购网站设计——淘宝1页
- python 项目架构设计
- perror和strerror的使用和区别