`
dfeixtay
  • 浏览: 56992 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

android获得系统权限

阅读更多
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运行在一个进程中,这样可以共享数据,应该会很有用的。
分享到:
评论
2 楼 dfeixtay 2010-12-24  
wx1985113 写道
楼主说的东西确实很有用,不过有一点我想提一下,就是文章末尾说经过系统签名的apk不能再真机上运行貌似不准确,我在我的G3上面是了,这个应用还可以成功安装,运行也没有问题。


你的G3 root了么?前一种我用了,满足了开发需求,后面的就略过没深究,待我研究下,在做定夺。谢谢你的关注,常来常往,相互提高。
1 楼 wx1985113 2010-12-22  
楼主说的东西确实很有用,不过有一点我想提一下,就是文章末尾说经过系统签名的apk不能再真机上运行貌似不准确,我在我的G3上面是了,这个应用还可以成功安装,运行也没有问题。

相关推荐

    Android应用获取系统权限,修改系统时间

    本文将详细介绍如何在Android应用中获取系统权限并修改系统时间。 首先,理解Android权限系统至关重要。Android权限分为正常权限和危险权限。正常权限对用户隐私和设备安全的影响较小,应用在安装时会自动获得。而...

    Android修改系统文件访问权限

    在Android系统中,修改系统文件访问权限涉及到对操作系统底层的深度理解,这通常需要root权限。以下是关于这个主题的详细知识点: 1. **init.rc**:这是Android系统启动时执行的第一个脚本,位于系统的system/core/...

    android系统权限签名

    这个工具,源自Android的源代码,允许开发者为他们的应用程序添加系统权限的签名,从而使其能够访问和操作那些通常需要更高权限的操作。 首先,我们需要理解Android系统的权限模型。Android采用了一种基于权限的...

    Android 签名APK获得系统权限

    2. **获取系统权限**:在AndroidManifest.xml文件中声明需要的系统权限,如`android.permission.WRITE_SYSTEM_SETTINGS`或`android.permission.INSTALL_PACKAGES`。系统权限一般分为正常权限和危险权限,系统权限...

    android获取root权限

    Android 系统中获取 root 权限的方法有很多种,下面我们会详细讨论。 为什么需要获取 root 权限?首先,获取 root 权限可以让用户获得更多的控制权和自由度,例如可以卸载系统应用程序,修改系统设置等等。其次,...

    android 在原声系统上获取系统权限的打包方式

    在Android系统中,获取系统权限通常涉及到对应用进行签名、修改权限配置以及系统级别的操作。在原声系统上,为了确保安全性和稳定性,系统权限的授予有着严格的控制。本篇文章将详细探讨如何在原声Android系统上通过...

    Android 串口通信权限问题

    3. **自定义权限**:由于Android默认并不提供直接访问串口的系统权限,开发者可能需要创建自定义权限。例如,添加如`<uses-permission android:name="com.example.MY_PERMISSION" />`到AndroidManifest.xml,并在...

    Qt Android 读写文件权限与录制音频权限询问Demo

    在Android系统中,读写文件权限分为内部存储和外部存储两种。内部存储权限用于访问应用私有的数据目录,而外部存储权限则允许访问公共的外部存储区域。在Qt中,可以使用QStandardPaths类来获取这些路径,并使用QFile...

    Android 定位权限申请

    在Android系统中,权限管理是应用安全的重要组成部分。自Android 6.0(API级别23)开始,谷歌引入了一种新的权限管理模式——运行时权限(Runtime Permissions)。这个变化对开发者来说是一个重大调整,因为在此之前...

    android文件读写权限

    与读取权限一样,从Android 6.0开始,也需要在运行时获取用户授权。 三、AndroidManifest.xml配置 在Android项目的`AndroidManifest.xml`文件中,我们需要声明所需的权限。对于文件读写权限,添加以下代码: ```...

    Android-Android6.0系统中权限问题调用

    这个系统的变化显著加强了用户的隐私控制,使得应用程序需要在运行时请求敏感权限,而不是在安装时一次性获取所有权限。这被称为“运行时权限”模型。以下是关于Android 6.0系统中权限问题调用的关键知识点: 1. **...

    Android 动态权限获取

    在Android系统中,从6.0(API级别23)开始,引入了一种新的权限管理模型,即“运行时权限”(Runtime Permissions)。这个模型改变了以往在安装应用时一次性授予所有权限的方式,使得用户可以在应用运行过程中根据...

    android获取应用程序的权限列表

    本文将详细讲解如何在Android系统中获取应用程序的权限列表,并针对日志记录中使用的"jishen" TAG进行讨论。 1. **权限模型概述** Android的权限模型基于声明式权限,开发者在应用的AndroidManifest.xml文件中声明...

    转载:Android中如何修改系统时间(应用程序获得系统权限)

    本篇文章将深入探讨如何在Android应用程序中获取修改系统时间的权限,并提供相关源码分析。 首先,我们需要理解Android权限系统。Android采用的是基于权限的访问控制模型,每个应用都有自己的沙箱环境,互不干扰。...

    Android中运行权限

    在Android系统中,运行权限是保护用户数据和设备安全的重要机制。从Android 6.0(API级别23)开始,引入了一项重大变化,即动态权限管理,这与之前的版本有很大不同。在Android 6.0之前,应用在安装时会一次性请求...

    Android 获取apk声明的权限列表

    在Android系统中,每个应用程序(apk)都有特定的权限声明,这些权限决定了应用程序可以执行哪些操作。本篇文章将深入探讨如何获取Android APK文件声明的权限列表,这对于开发者进行应用审计、安全分析或用户理解...

    android系统权限大全

    在深入探讨Android系统权限之前,我们首先应当理解其重要性。Android系统权限是应用程序与设备交互、访问设备功能和用户数据的关键。为了保障用户隐私和设备安全,Android系统对应用程序可执行的操作进行了严格的...

    Android8.1_全志R311屏蔽apk获取权限弹框

    总之,这个方法揭示了Android系统权限管理的底层机制,并提醒我们系统权限的控制是至关重要的。开发者在处理权限时必须谨慎,遵循最佳实践,尊重用户隐私,并确保应用的行为符合用户预期。在非标准的或者定制的...

    android 动态申请权限封装

    在Android系统中,自API 23( Marshmallow 版本)开始,引入了权限管理的新模型——运行时权限(Runtime Permissions)。与之前的版本不同,现在应用在安装后并不是自动获取所有权限,而是需要在运行时根据需要向...

    Android8.1-全志R311-如何打开APP获取su权限.pdf

    本文将详细介绍在全志R311平台上,针对Android 8.1系统如何使APP能够获取到`su`权限。 首先,了解SELinux的基本概念。SELinux是一种强制访问控制(MAC)系统,它为Linux内核添加了一个额外的安全层,允许管理员精细...

Global site tag (gtag.js) - Google Analytics