wo-12 11-06 dfeixtay copy
android获得系统权限
最近为了开发批量安装apk文件,正在找这个,大牛文。有些文章怕链接失效了,所以有的收藏了,有的copy过来的。
文章中的方法,我恰巧全用到了,最后是编到源码中解决权限问题的。文章中可以在模拟器中破解,比较牛。
下为原文:
出处:
http://blog.csdn.net/liujian885/archive/2010/02/11/5306269.aspx
Android中如何修改系统时间(应用程序获得系统权限) 收藏
在 android 的API中有提供 SystemClock.setCurrentTimeMillis()函数来修改系统时间,可惜无论你怎么调用这个函数都是没用的,无论模拟器还是真机,在logcat中总会得到"Unable to open alarm driver: Permission denied ".这个函数需要root权限或者运行与系统进程中才可以用。
本来以为就没有办法在应用程序这一层改系统时间了,后来在网上搜了好久,知道这个目的还是可以达到的。
第一个方法简单点,不过需要在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\target\product\security",下面的platform.pk8和platform.x509.pem两个文件。然后用Android提供的Signapk工具来签名,signapk的源代码是在"build\tools\signapk"下,用法为"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权限分为正常权限和危险权限。正常权限对用户隐私和设备安全的影响较小,应用在安装时会自动获得。而...
在Android系统中,修改系统文件访问权限涉及到对操作系统底层的深度理解,这通常需要root权限。以下是关于这个主题的详细知识点: 1. **init.rc**:这是Android系统启动时执行的第一个脚本,位于系统的system/core/...
这个工具,源自Android的源代码,允许开发者为他们的应用程序添加系统权限的签名,从而使其能够访问和操作那些通常需要更高权限的操作。 首先,我们需要理解Android系统的权限模型。Android采用了一种基于权限的...
2. **获取系统权限**:在AndroidManifest.xml文件中声明需要的系统权限,如`android.permission.WRITE_SYSTEM_SETTINGS`或`android.permission.INSTALL_PACKAGES`。系统权限一般分为正常权限和危险权限,系统权限...
Android 系统中获取 root 权限的方法有很多种,下面我们会详细讨论。 为什么需要获取 root 权限?首先,获取 root 权限可以让用户获得更多的控制权和自由度,例如可以卸载系统应用程序,修改系统设置等等。其次,...
在Android系统中,获取系统权限通常涉及到对应用进行签名、修改权限配置以及系统级别的操作。在原声系统上,为了确保安全性和稳定性,系统权限的授予有着严格的控制。本篇文章将详细探讨如何在原声Android系统上通过...
3. **自定义权限**:由于Android默认并不提供直接访问串口的系统权限,开发者可能需要创建自定义权限。例如,添加如`<uses-permission android:name="com.example.MY_PERMISSION" />`到AndroidManifest.xml,并在...
在Android系统中,读写文件权限分为内部存储和外部存储两种。内部存储权限用于访问应用私有的数据目录,而外部存储权限则允许访问公共的外部存储区域。在Qt中,可以使用QStandardPaths类来获取这些路径,并使用QFile...
在Android系统中,权限管理是应用安全的重要组成部分。自Android 6.0(API级别23)开始,谷歌引入了一种新的权限管理模式——运行时权限(Runtime Permissions)。这个变化对开发者来说是一个重大调整,因为在此之前...
与读取权限一样,从Android 6.0开始,也需要在运行时获取用户授权。 三、AndroidManifest.xml配置 在Android项目的`AndroidManifest.xml`文件中,我们需要声明所需的权限。对于文件读写权限,添加以下代码: ```...
这个系统的变化显著加强了用户的隐私控制,使得应用程序需要在运行时请求敏感权限,而不是在安装时一次性获取所有权限。这被称为“运行时权限”模型。以下是关于Android 6.0系统中权限问题调用的关键知识点: 1. **...
在Android系统中,从6.0(API级别23)开始,引入了一种新的权限管理模型,即“运行时权限”(Runtime Permissions)。这个模型改变了以往在安装应用时一次性授予所有权限的方式,使得用户可以在应用运行过程中根据...
本文将详细讲解如何在Android系统中获取应用程序的权限列表,并针对日志记录中使用的"jishen" TAG进行讨论。 1. **权限模型概述** Android的权限模型基于声明式权限,开发者在应用的AndroidManifest.xml文件中声明...
本篇文章将深入探讨如何在Android应用程序中获取修改系统时间的权限,并提供相关源码分析。 首先,我们需要理解Android权限系统。Android采用的是基于权限的访问控制模型,每个应用都有自己的沙箱环境,互不干扰。...
在Android系统中,运行权限是保护用户数据和设备安全的重要机制。从Android 6.0(API级别23)开始,引入了一项重大变化,即动态权限管理,这与之前的版本有很大不同。在Android 6.0之前,应用在安装时会一次性请求...
在Android系统中,每个应用程序(apk)都有特定的权限声明,这些权限决定了应用程序可以执行哪些操作。本篇文章将深入探讨如何获取Android APK文件声明的权限列表,这对于开发者进行应用审计、安全分析或用户理解...
在深入探讨Android系统权限之前,我们首先应当理解其重要性。Android系统权限是应用程序与设备交互、访问设备功能和用户数据的关键。为了保障用户隐私和设备安全,Android系统对应用程序可执行的操作进行了严格的...
总之,这个方法揭示了Android系统权限管理的底层机制,并提醒我们系统权限的控制是至关重要的。开发者在处理权限时必须谨慎,遵循最佳实践,尊重用户隐私,并确保应用的行为符合用户预期。在非标准的或者定制的...
在Android系统中,自API 23( Marshmallow 版本)开始,引入了权限管理的新模型——运行时权限(Runtime Permissions)。与之前的版本不同,现在应用在安装后并不是自动获取所有权限,而是需要在运行时根据需要向...
本文将详细介绍在全志R311平台上,针对Android 8.1系统如何使APP能够获取到`su`权限。 首先,了解SELinux的基本概念。SELinux是一种强制访问控制(MAC)系统,它为Linux内核添加了一个额外的安全层,允许管理员精细...