搜档网
当前位置:搜档网 › 五种控制Android应用的权限的方法

五种控制Android应用的权限的方法

五种控制Android应用的权限的方法

这篇文章目的在于介绍Android系统上控制权限的方法,读者只要使用过Android,或是对智能机平台有所了解,就能看懂,不需要专门的编程知识。

1 为什么Android总是事无巨细地告诉你应用索取的每一项权限?

相比Apple,Microsoft严格控制生态系统(从苹果给开发者的"App Store Guideline"可见一斑),只允许通过官方应用商店安装应用,并对每份上传进行仔细地审查而言,Android的开放就意味着,Google需要向用户提供一系列用于为自己负责的流程、工具。所以在安装应用前,Android总是要事无巨细地告诉你,应用肯需要控制什么权限。

同样,开发者也制作了一系列易用的工具,用以鉴别可疑的应用程序,或是控制权限。

图1 Android 官方市场会强制提醒用Andoird哪里开放了?

在Android中,用户能自由从本地安装应用,自由地对SD卡进行操作,自由选择应用市场。

如果愿意放弃保修,用户还能轻易地实行root,解锁基带(baseband)。只有一些产品会严密地锁定bootloader(如摩托罗拉)。

最重要的是,因为ASOP(Android源代码开放计划)的存在,绝大部分的Android代码都是开源的,开发者可以由此对Android系统进行深入的修改,甚至可以自行编写一个符合Android规范的系统实例(如Cyanogen Mod)。正是因为ASOP,这篇文章才可能介绍多达5种原理不同的权限控制方法。

图2 Android开源计划的标志

开放的风险

不考虑Symbian,Windows Phone 6.5(及以下)平台,那么几乎所有的智能手机病毒都是Android平台的,甚至官方Android Market也闹过几次乌龙。在国内水货横行的市场,情况更是火上浇油,不法业者可以在手机的ROM,甚至是bootloader中做好手脚,让用户有病无法医。

在Android中,用户可以允许系统安装来自"未知源"(也就是非Google 官方的,或手机预置市场的)应用程序。于是,移动平台最重要的门神------数字签名就被绕过了。

图3 Android 允许未知安装未知来源的应用程

出于Android的开放性,也有不允许"未知源"的反例:亚马逊的Kindle Fire平板使用了深度定制的Android,它只允许安装来自亚马逊官方商店的应用程序。

图4 亚马逊的 Kindle Fire 仅允许通过自带的市场安装应用

2 Android有哪些"权限"

首先需要明确一下Android中的种种"权限"。Android是在Linux内核上建立一个硬件抽象层(Android HAL),通过Dalvik以及各种库来执行android应用的。在手机启动时,首先需要由Bootloader(HTC手机上称作Hboot)引导 Linux及手机上各个硬件设备的驱动程序,之后才启动Android系统。所以其实我们会涉及到四种不同涵义的权限:

Android权限(Permission)

这指Android中的一系列"Android.Permission.*"对象,是本文的中心内容。

Google在Android框架内把各种对象(包括设备上的各类数据,传感器,拨打电话,发送信息,控制别的应用程序等)的访问权限进行了详细的划分,

列出了约一百条"Android.Permission"。应用程序在运行前必须向Android系统声明它将会用到的权限,否则Android将会拒绝该应用程序访问通过该"Permission"许可的内容。

比方说,搜狗输入法提供了一个智能通讯录的功能,用户可以在输入联系人拼音的前几个字符,或首字母,输入法就能自动呈现相关联系人的名字。为了实现这个功能,输入法必须声明它需要读取手机中联系人的能力,也就是在相关代码中加上声明"android.permission.READ_CONTACTS"对象。

图5 搜狗输入法的智能联系人功能

原生Android只提供了对"一刀切"式的管理,要么同意使用,否则就根本就不安装应用程序。当用户遇到希望使用程序的同时,又想禁止部分Permission的场合,他就无路可走。

于是,不少开发者就捣鼓出了"第三条道路";可惜的是,没有一种方法能同时做到既不需要将手机固件Root,又完全不涉及对原始应用程序进行反向工程的方法。

Root

Root指获得Android所在的Linux系统的Root(根)权限,有了根权限,你才能对Linux做出任意的修改。iOS中的越狱 (Jailbreak) 相当于获得iOS 系统的Root权限(iOS是一种类Unix系统,和Linux都使用Root的概念)。在已Root的设备中,通常都是使用一个叫"Superuser"(简称SU)的应用程序来向许可的程序授以Root权限。

Bootloader的解锁(Unlock)

利用数字签名,Bootloader可以限定只有正确签名的系统可以被引导。在修改固件以获得Root以前,解锁Bootloader通常是必须的。安装第三方修改、编译的固件也需要解锁Bootloader。

基带(Radio)解锁

在Android系统中,基带是上层软件与手机中无线设备(手机网络,Wi-Fi,蓝牙等)的驱动程序之间的中介。国外的网络运营商很喜欢锁定基带,从而保证用户只能使用运营商自己指定的sim卡。在我国,锁定基带是非法的,手机制造商、网络运营商也不可以通过锁定基带的方法对待违约客户。iOS的"解锁"就是解锁iOS中的基带软件。

为什么要控制Android权限

鱼和熊掌不可兼得,Android的世界有很多自由,坏人也能自由地做坏事。它的生态系统很强调自主:用户可以自主地减小风险,仅使用官方市场的应用程序,也可以自主地解除安全限制,从而获得更多自由。因此,在遇到坏事的时候,用户也不得不自主一下:

1,抵制不道德,乃至非法行为

几乎所有的Android安全软件都能对来电、信息进行控制,以减少骚扰。

另一方面,很多应用都会要求它们实际功能以外的权限,表现在非(主动)告知地搜集设备序列号,位置信息,诱使用户默认地上传联系人列表等方面。

更坏一点的应用程序,则会踏入犯罪的范畴,比如能偷偷发出扣费信息,或是作为黑客的偷窥工具。

2,减少恶意软件的损害

恶意软件即便潜伏成功,也难以获得权限,从而减少损失。

3,用户有权自主地在抑制应用程序的部分权限时,继续使用该应用程序,而只承担由于自行设置不当而带来的后果。

用户拥有设备的所有权,因此有权自主控制设备上的内容、传感器等对象的访问;同时有权(不)运行,(不)编译设备上的应用程序。

大多数应用程序在运行时,并未达成主动告知的义务,是失误;然而即使主动告知,用户还是可以不理会。

为什么Android官方市场的强制提醒权限的行为不属于主动告知:

通过Android官方市场,"打包安装器"安装应用程序时,所显示的"权限"仅是在安装包内AndroidManifest.xml声明的值,而非应用程序实际上会调用的内容。该值仅用来表明Android系统能向应用授予的最大可能的权限。即便一个"Hello World"式的应用程序,也可以在AndroidManifest.xml中声明所有可能的Android Permission。

这就是说,在AndroidManifest.xml中声明的值与应用程序实际调用的权限有关联,但不等同,且这种提示是由Android系统负责实施的强制行为。

正确的理解是:"应用程序(被迫地)让Android系统告知用户,它在AndroidManifest.xml中所声明的事项。"

这意味着应用程序在使用重要权限前,依然需要自行、主动地通知用户相关事宜。

图6 应用程序须要AndroidManifest.xml中声明调用到的权限

然而,即便只是让一半的应用程序达到以上的标准,也是不可能的。应用程序需要通过收集用户信息,程序的错误日志。从而统计用户的喜好,改进程序。另一方面,这也是发送精确广告但不追溯到用户身份信息的方式,这一

点对于免费应用而言,是极其重要的。我们之所以能知道不同型号手机的占有率,应用软件的流行度,是与这样的统计不可分离的。

一旦每个应用程序都专业地主动发出提醒,不专业的用户(大多数用户都是不专业的)通常会将之视为如同海啸警报一般的危机。

这么做对谁都没有好处------用户方的隐私权是毋庸置疑的,然而应用程序方面的获取信息记录的需求也是无可阻挡的。如果每个用户都打算阻止,只会落得被迫接受不平等条约的下场,在温饱以前,不会有人考虑小康的问题。

于是,现状就变得有趣:用户人享受着相同的服务;其中大部分用户出于不知情/好意,默默地向开发者、广告商提供了信息,剩下的少数用户则能阻断这种劳务。而作为维持Android平台的信息商人Google,只确保在它的地盘里,不会发生触碰底线的事情。

一句话总结:

设备是我的,不管你怎么说,反正我说了算,但我说的话大多是不算数的。

3 权限控制的方法

这里开始介绍各种控制Android权限的办法。可惜的是,几乎所有的手段都需要对设备进行Root,如果不这么做,则需要付出不小代价。

App Shield(国内常见的名字:权限修改器)

它是一个需要付费的Android应用,其原理是修改应用程序的apk安装包,删除其中AndroidManifest.xml文件内,用于声明权限的对应"Android.Permission.*"条目,然后再用一个公开的证书对安装包重新签名(需要允许"未知源"),这样一来,应用程序就不会向系统申请原先所需的权限。当应用运行至相应的流程时,系统将直接拒绝,从而达到用户控制权限的目的。

对于已安装的应用,AppShield也会按照同样方法制作好apk安装包,然后让用户先卸载原始的应用,再安装调整过的应用。除了该应用数字签名外,用户可以随时通过执行同样的流程,将吊销的权限恢复。

图7 AppShield

Apk文件的结构

Android应用都是打包成以.apk扩展名结尾,实际上是zip的文件格式。

一个合法的apk至少需要这些成分:

根目录下的"AndroidManifest.xml"文件,用以向Android系统声明所需Android权限等运行应用所需的条件。

根目录下的classes.dex(dex指Dalvik Exceptionable),应用(application)本身的可执行文件(Dalvik字节码) 。

根目录下的res目录,包含应用的界面设定。(如果仅是一个后台执行的"service"对象,则不必需)

Apk根目录下的META-INF目录也是必须的,它用以存放应用作者的公钥证书与应用的数字签名。

当应用被安装后,这个apk文件会原封不动地移至设备的data/app 目录下,实际运行的,则是Dalvik将其中Classes.dex进行编译后的Classes.odex(存放在Dalvik缓存中,刷机时的'cache wipe就是清除Dalvik 的odex文件缓存')。

优点:

完全不需要Root,适用于所有版本的Android设备。不会损坏系统,可以吊销任意一项Android权限。

问题:

1,需要重新安装应用,该行为可能会丢失应用的配置、历史记录。

2,执行权限吊销的应用的数字签名会被更改,无法直接更新。对于那些设计不良(没有意料到'不声明权限'情况的),或有额外自校验的应用,可能会无法运行。

3,无法用于设备上的预装应用,除非制造商好心地将该应用设置为"可以删除"的状态。

4,这个方法修改了apk包中的内容------尽管实际上AndroidManifest.xml和数字签名并不算是应用程序的本身,但修改它们可能引发著作权的问题。

5,需要开启"未知源"。

6,这是一个收费应用。

CyanogenMod 7.1(及以上版本)

Cyanogenmod是一款著名的第三方编写的开源Android ROM。

CM7.1加入了控制权限的开关,官方的名称是"Permission Revoking",任何非系统/保护应用在安装后,可直接吊销任意一项权限,其效果等价于直接删除apk包中AndroidManifest.xml的对应条目,但不会引发自校验的问题。CM的权限工具的作用等同于AppShield,无非是在Android自身的权限系统中添加了一个开关。

图8 Cyanogen Mod 7.1中的权限吊销(Permission Revoking)设定

优点:

免费,使用简便,可随时,任意地吊销、恢复非预装应用的任意一项权限;不存在数字签名的问题,因而不影响使用自校验的应用程序。

问题:

此功能仅在Cyanogen Mod 7.1及以上版本提供,无法用于其它rom。因为是由Android系统出面吊销权限,其实现原理与App Shield完全相同,同样的,应用程序会因为设计不良而出现崩溃。

Permission Denied

这是可以吊销任意Android应用(注意,不当地吊销系统应用的权限可能会导致手机固件损坏,无法启动)的任意权限,对权限的修改在重启后生效。

实现原理应该与Cyanogen Mod 7.1+完全相同,适用于任何已经Root 的系统,因为一般的Android系统虽然事实上支持权限吊销,但没有像Cyanogen Mod那样放置接口,因此需要重启后才能应用权限配置。同样也有系统出面拒绝权限而导致的崩溃现象。

图9 Permission Denied免费版吊销应用程序权限的场景优点:

效果与Cyanogen Mod中的权限吊销效果一致,且可吊销系统应用的权限。同时提供了免费与收费版本,免费版并没有基本功能的缺失。适用于所有版本号不低于1.6的Android设备。

问题:

调整后的权限需要重启才能生效。设计不良的应用会崩溃。不恰当的权限修改会损坏系统,导致无法开机。

PDroid

PDroid实际上是一个Android内核补丁加上一个用于管理的外部应用。补丁需要在Recover环境中刷入系统,也可以由开发者自行移植入系统。该软件在Android ASOP 2.3.4代码基础上开发,仅适用于没有改动内核的Android 2.3系统,目前还未支持Android 4。

图10 PDroid的界面

为了避免Cyanogen Mod 7.1+权限吊销(Permission revoking)导致的崩溃问题,以及后台服务(如LBE,QQ手机管家等,PDroid的作者认为通过后台

服务拦截权限并不是好办法),PDroid 并不阻止应用程序声明权限,但会在其实际索取相关信息时,予以阻止。通俗地说,就是签署协议但不执行。在PDroid 的用户界面,用户能随时精确地控制涉及隐私的各项权限。对于某些内容,除了阻止外,用户还可以伪造一个随机或指定的数据。

可控制的内容包括:

IMEI(可伪造)

IMSI(可伪造)

SIM卡序列号(可伪造)

手机号码(可伪造)

来,去电号码

SIM卡信息

当前蜂窝网络信息

(以上七者均来自Android.Permission.READ_PHONE_STATE)

GPS定位信息 (可伪造,来自Android.Permission.FINE_LOCATION)

基站定位 (可伪造,来自Android.Permission.COARSE_LOCATION)

系统自带浏览器的历史,书签(Android.Permission.BOOKMARKS)

联系人 (android.permission.READ_CONTACTS)

通话记录 (android.permission.READ_CONTACTS)

系统日志 (android.permission.READ_LOGS)

当前账户列表 (android.permission.GET_ACCOUNTS)

当前账户的授权码 (https://www.sodocs.net/doc/6612670543.html,E_CREDENTIALS)

短信,彩信 (可能与这5个权限有关)

android.permission.READ_SMS

android.permission.RECEIVE_SMS

android.permission.SEND_SMS

android.permission.WRITE_SMS

android.permission.RECEIVE_MMS

日历 android.permission.READ_CALENDAR

PDroid的内核补丁并不通用,每一个Rom都需要特定的补丁。开发者除了提供了几个特定机型下Cyanogen Mod,HTC Sense修改版ROM的专用补丁外,还推出了一个补丁生成工具(PDroid Patcher),用户可以给自己的ROM生成专用的内核补丁。使用该Patcher需要安装JDK(java Development Kit)。

优点:

PDroid避免了通过Android系统进行权限吊销的导致的潜在崩溃问题,也不需要后台服务。对隐私信息的控制是最精细的。尽管设备必须Root,但应用本身不需要Root权限。

问题:

安装过程是最繁琐,最不可靠的,容易导致ROM损坏,适用范围也小,需要用户有相当的技能(能安装JDK,会刷机)才可使用;只提供对隐私有关权限的控制,不提供网络访问,的控制。以这些为代价,它几乎没有其它缺点。

LBE安全大师

实际上最常用的是以LBE为代表的通过一个Root权限的后台服务来拦截相关行为的工具。除了LBE外,还有QQ手机管家等应用。这里以LBE安全大师为例介绍。

图11 LBE安全大师

LBE是国内一个叫"LBE安全小组"开发的工具,支持Android2.0~4.0。它的核心功能是像杀毒软件一般,通过一个需要Root权限的后台服务,劫持所

有调用权限的行为,并放行用户许可的部分(其官方宣传为'API级别拦截')。它和PDroid一样几乎不会引发应用程序崩溃,它支持拦截几个涉及用户的关键权限(LBE手机管家3.1/3.2):

读取短信 (android.permission.READ_CONTACTS)

联系人记录 (android.permission.READ_CONTACTS)

通话记录 (android.permission.READ_CONTACTS)

定位 (Android.Permission.COARSE_LOCATION

Android.Permission.FINE_LOCATION)

手机识别码 (与Android.Permission.READ_PHONE_STATE有关)

通话状态 (与Android.Permission.READ_PHONE_STATE有关)

发送短信(具体原理不明,同样类似于禁止这五个权限

android.permission.READ_SMS

android.permission.RECEIVE_SMS

android.permission.SEND_SMS

android.permission.WRITE_SMS

android.permission.RECEIVE_MMS)

拨打电话 (android.permission.CALL_PHONE)

通话监听 (android.permission.PROCESS_OUTGOING_CALLS)

除此以外,LBE还可以分别控制应用在Wifi,手机网络的联网权限,其原理是依靠IPtables防火墙,而非通过Android的"Internet"权限。

此外LBE手机管家还提供基于智能内容审查的短信拦截、来电归属地显示,以及禁用系统(保护)应用,进程管理,杀毒等功能。

LBE提供两个版本,一个叫"LBE安全大师",是一个全面的手机管家类应用,更新比较频繁,另一个版本(LBE手机隐私卫士,LBE Security lite)仅提供权限方面的管理。

考虑到主要市场在国内,LBE的发行策略看上去有些奇怪,它在Google 的官方市场并不发行最新版。通常只能只能在LBE的官方网页,以及国内的应用市场获得最新版本。

优点:

权限说明大全

程序执行需要读取到安全敏感项必需在androidmanifest.xml中声明相关权限请求, 各种权限说明如下: android.permission.ACCESS_CHECKIN_PROPERTIES 允许读写访问”properties”表在checkin数据库中,改值可以修改上传( Allows read/write access to the “properties” table in the checkin database, to change values that get upload ed) android.permission.ACCESS_COARSE_LOCATION 允许一个程序访问CellID或WiFi热点来获取粗略的位置(Allows an application to access coarse (e.g., Cell-ID, WiFi) location) android.permission.ACCESS_FINE_LOCATION 允许一个程序访问精良位置(如GPS) (Allows an application to access fine (e.g., GPS) location) android.permission.ACCESS_LOCATION_EXTRA_COMMANDS 允许应用程序访问额外的位置提供命令(Allows an application to access extra location provider commands) android.permission.ACCESS_MOCK_LOCA TION 允许程序创建模拟位置提供用于测试(Allows an application to create mock location providers for testing) android.permission.ACCESS_NETWORK_STA TE 允许程序访问有关GSM网络信息(Allows applications to access information about networks) android.permission.ACCESS_SURFACE_FLINGER 允许程序使用SurfaceFlinger底层特性(Allows an application to use SurfaceF linger’s low level features) android.permission.ACCESS_WIFI_STATE 允许程序访问Wi-Fi网络状态信息(Allows applications to access information about Wi-Fi networks) android.permission.ADD_SYSTEM_SERVICE 允许程序发布系统级服务(Allows an application to publish system-level services). android.permission.BA TTERY_STATS 允许程序更新手机电池统计信息(Allows an application to update the collected battery statistics) android.permission.BLUETOOTH 允许程序连接到已配对的蓝牙设备(Allows applications to connect to paired bluetooth devices) android.permission.BLUETOOTH_ADMIN 允许程序发现和配对蓝牙设备(Allows applications to discover and pair bluetooth devices) android.permission.BRICK 请求能够禁用设备(非常危险)(Required to be able to disable the device (very *erous!).) android.permission.BROADCAST_PACKAGE_REMOVED 允许程序广播一个提示消息在一个应用程序包已经移除后(Allows an application to broadcast a notification that an application package has been removed) android.permission.BROADCAST_STICKY 允许一个程序广播常用intents(Allows an application to broadcast sticky intents) android.permission.CALL_PHONE

Android权限清单

允许读写访问"properties"表在checkin数据库中,改值可以修改上传 允许一个程序访问CellID或WiFi热点来获取粗略的位置 允许一个程序访问精良位置(如GPS) < uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" > 允许应用程序访问额外的位置提供命令 允许程序创建模拟位置提供用于测试 允许程序访问有关GSM网络信息 允许程序使用SurfaceFlinger底层特性 允许程序访问Wi-Fi网络状态信息 允许程序发布系统级服务 允许程序更新手机电池统计信息 允许程序连接到已配对的蓝牙设备 允许程序发现和配对蓝牙设备 请求能够禁用设备 允许程序广播一个提示消息在一个应用程序包已经移除后 允许一个程序广播常用intents

Android用户权限列表

我们在安装Android软件的时候,系统会提示该软件所需要的权限,相对于其他系统,android的权限非常多。我们在开发软件的时候,也需要声明相应的权限,比如希望软件能发短信,需要声明软件调用短信的权限,否则软件运行的时候就会报错。 Android的权限在AndroidManifest.xml文件里配置。AndroidManifest文件中有四个标签与permission有关,它们分别是 。其中最常用的是 ,当我们需要获取某个权限的时候就必须在我们的manifest文件中声明 。 [html]view plain copy 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... 11. 12. 的作用相似,两者之间的不同之处, 是android预定义的权限,是自己定义的权 限。 用的相对较少, 这两个标签就更少见了,简单说 就是声明一个标签,该标签代 表了一组permissions,而是为一组permissions声明了一个namespace。后面三个标签具体使用方法见后续文章。 定义方法如下:

Android permission 访问权限说明手册

Android permission 访问权限说明手册 tech.er 2011年2月12日 android平台上的权限许可分得很细,如果软件无法正常执行时,首先要检查是不是缺少相关的permission声明,以下就把permission 访问权限列举出来供大家参考。 程序执行需要读取到安全敏感项必需在androidmanifest.xml中声明相关权限请求, 完整列表如下: android.permission.ACCESS_CHECKIN_PROPERTIES 允许读写访问”properties”表在checkin数据库中,改值可以修改上传( Allows read/write access to the “properties” table in the checkin database, to change values that get uploaded) android.permission.ACCESS_COARSE_LOCATION 允许一个程序访问CellID或WiFi热点来获取粗略的位置(Allows an application to access coarse (e.g., Cell-ID, WiFi) location) android.permission.ACCESS_FINE_LOCATION 允许一个程序访问精良位置(如GPS) (Allows an application to access fine (e.g., GPS) location) android.permission.ACCESS_LOCATION_EXTRA_COMMANDS 允许应用程序访问额外的位置提供命令(Allows an application to access extra location provider commands) android.permission.ACCESS_MOCK_LOCATION 允许程序创建模拟位置提供用于测试(Allows an application to create mock location providers for testing) android.permission.ACCESS_NETWORK_STATE 允许程序访问有关GSM网络信息(Allows applications to access information about networks) android.permission.ACCESS_SURFACE_FLINGER 允许程序使用SurfaceFlinger底层特性(Allows an application to use SurfaceFlinger’s low level features) android.permission.ACCESS_WIFI_STATE 允许程序访问Wi-Fi网络状态信息(Allows applications to access information about Wi-Fi networks) android.permission.ADD_SYSTEM_SERVICE 允许程序发布系统级服务(Allows an application to publish system-level services). android.permission.BATTERY_STATS 允许程序更新手机电池统计信息(Allows an application to update the collected battery statistics) android.permission.BLUETOOTH

Android权限大全

Android权限大全 允许程序写入外部存储,如SD卡上写文件 录音 允许编写短信 允许读写系统设置项 允许程序读写系统安全敏感的设置项 允许程序写入Google Map服务数据 写入联系人,但不可读取 写入日程,但不可读取 写入网络GPRS接入点设置 允许程序在手机屏幕关闭后后台进程仍然运行 允许振动 允许程序使用SIP视频服务 允许程序请求验证从AccountManager 更新设备状态 显示系统窗口 入或修改订阅内容的数据库 访问订阅信息的数据库

安卓平板电脑ROOT权限说明

安卓平板电脑ROOT权限说明 就在我前面一节中就给大家提到过ROOT相关问题,此篇将给大家详细讲解ROOT权限,如果你以前经常去各大论坛一定也会接触到“ROOT”,他的出现频率很高,在各个论坛上,网友的字里行间经常会出现,那么ROOT权限是什么呢?可以给我们带来怎样的好处呢? 什么是root,我需要它做什么? root就是平板电脑的神经中枢,它可以访问和修改你平板电脑几乎所有的文件,这些东西可能是生产平板电脑的公司不愿意你修改和触碰的东西,因为他们有可能影响到平板电脑的稳定,还容易被一些黑客入侵(Root是Linux等类UNIX系统中的超级管理员用户帐户,该帐户拥有整个系统至高无上的权利,所有对象他都有可以操作的权利,所以很多黑客在入侵系统时,都要把权限提升到Root权限,就是将自己的非法帐户添加到Root用户组。类比于Administrator是Windows NT内核系统中的超级管理员用户帐户,也拥有最高的权限。但不同的是,在WINDOWS下Administrator的资源和别的用户资源是共享的,简单的说,别的用户可以访问Administrator的文件。而Linux中,别的用户是不能访问Root用户的家目录(/root)下文件的。因此,Linux比Windows更安全) 既然root权限这么重要,我们为什么还要去获取它? 其实用root的权限主要是因为我们很多东西是受限制的,我们只能利用这些权限来做我们被限制的去做的事情,比如Google禁止我们看到市场里很多免费或付费软件,我们可以用Marketenabler进去看;很多朋友只能看不能下,不能绑定gmail,我们可以修改hosts 来搞定他们,但这些都需要root权限(由于Root权限对于系统具有最高的统治权,便可方便的对于系统的部件进行删除或更改。对于玩家而言,最大的诱惑是在于“刷机”,只有获得Root权限,我们便可随心所欲地对自己的爱机进行“重新包装”,感受新版本软件的优点) 取得root的好处? 1 可以备份系统 2 使用高级的程序例如资源管理器 3 修改系统的程序 4 把程序安装在SD卡上(默认是不支持的) 绝大多数自制的rom都已经获取了root,如果你的rom没有的话,就要自己取得。 很重要的提示:如果你的平板电脑是行货,在保修之内,获取root就会丧失保修的权利。不知道通过以上内容,你是否对root权限有了更为透彻的了解了呢?当然ROOT也应该根据我们所需,如果你是个爱玩,爱研究平板电脑的机友,那么root权限就会对你很重要,但是如果你只是用平板电脑看看网页,看看电影,上上QQ,那么root显然和你没什么关系

安卓开发手机权限大全

android.permission.ACCESS_NETWORK_STATE允许程序访问有关GSM网络信息(Allowsapplications to access information about networks) android.permission.ACCESS_WIFI_STATE允许程序访问Wi-Fi网络状态信息(Allowsapplications to access information about Wi-Fi networks) android.permission.BLUETOOTH允许程序连接到已配对的蓝牙设备(Allowsapplications to connect to paired bluetooth devices) android.permission.BLUETOOTH_ADMIN允许程序发现和配对蓝牙设备(Allowsapplicationsto discover and pair bluetooth devices) android.permission.CHANGE_WIFI_STATE允许程序改变Wi-Fi连接状态(Allowsapplications to change Wi-Fi connectivity state) android.permission.DEVICE_POWER允许访问底层电源管理(Allowslow-level access to power management)

android.permission.DISABLE_KEYGUARD允许程序禁用键盘锁(Allowsapplications to disable the keyguard ) android.permission.EXPAND_STATUS_BAR允许一个程序扩展收缩在状态栏,Android开发网提示应该是一个类似WindowsMobile中的托盘程序(Allows an application to expand or collapse the status bar.) android.permission.GET_DETAILED_TASKS 检索正在运行的应用的详细信息,恶意程序可借此获得其他应用的私密信息 android.permission.GET_TASKS 检索正在运行的应用,可用于了解当前设备上使用了哪些应用 android.permission.INJECT_EVENTS 将自身的输入事件(例如按键)提供给其他应用,恶意程序可坚持控制手机 android.permission.INTERNAL_SYSTEM_WINDOW 允许创建未授权的内部系统窗口,普通应用绝不应该使用此权限

AndroidManifest.xml配置文件详解

AndroidManifest.xml配置文件对于Android应用开发来说是非常重要的基础知识,本文旨在总结该配置文件中重点的用法,以便日后查阅。下面是一个标准的AndroidManifest.xml文件样例。 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. . . . 33. 34. 35. 36. 37. 38. . . . 39. 40.

Android权限说明

Android权限分的很细,但命名比较人性化,Android permission比SymbianCapabilities有了不少改进,下面就来看看权限许可都有哪些定义吧,发现还是比较繁多的,如果发现你的程序某个地方调试错误很可能是Androidpermission 的访问控制在作怪,这也是为了安全防止手机成为病毒的场所。Android开发网获取到的消息来看不用购买高昂的数字签名证书,权限许可权由用户决定而不是手机制造商和平台提供商,这一点不得不说明为Android开发人员着想,下面的信息都是需要添加在androidmanifest.xml文件中。 程序执行需要读取到安全敏感项必需在androidmanifest.xml 中声明相关权限请求,Android开发网已经翻译并使用中英文对照 android.permission.ACCESS_CHECKIN_PROPERTIES允许读写访问"properties"表在checkin数据库中,改值可以修改上传( Allows read/write access to the "properties" table inthe checkin database, to change values that get uploaded) android.permission.ACCESS_COARSE_LOCATION允许一个程序访问CellID或WiFi热点来获取粗略的位置(Allows an application to access coarse (e.g., Cell-ID, WiFi)location) android.permission.ACCESS_FINE_LOCATION允许一个程序访问精良位置(如GPS) (Allows an application to access fine(e.g., GPS) location)

android的用户权限

android.permission.ACCESS_CHECKIN_PROPERTIES 允许读写访问”properties”表在checkin数据库中,改值可以修改上传( Allows read/write access to the “properties”table in the checkin database, to change values that get uploaded) android.permission.ACCESS_COARSE_LOCA TION 允许一个程序访问CellID或WiFi热点来获取粗略的位置(Allows an application to access coarse (e.g., Cell-ID, WiFi) location) android.permission.ACCESS_FINE_LOCA TION 允许一个程序访问精良位置(如GPS) (Allows an application to access fine (e.g., GPS) location) android.permission.ACCESS_LOCA TION_EXTRA_COMMANDS 允许应用程序访问额外的位置提供命令(Allows an application to access extra location provider commands) android.permission.ACCESS_MOCK_LOCA TION 允许程序创建模拟位置提供用于测试(Allows an application to create mock location providers for testing) android.permission.ACCESS_NETWORK_STA TE 允许程序访问有关GSM网络信息(Allows applications to access information about networks) android.permission.ACCESS_SURFACE_FLINGER 允许程序使用SurfaceFlinger底层特性(Allows an application to use SurfaceFlinger’s low level features) android.permission.ACCESS_WIFI_STA TE 允许程序访问Wi-Fi网络状态信息(Allows applications to access information about Wi-Fi networks) android.permission.ADD_SYSTEM_SERVICE 允许程序发布系统级服务(Allows an application to publish system-level services). android.permission.BA TTERY_STA TS 允许程序更新手机电池统计信息(Allows an application to update the collected battery statistics) android.permission.BLUETOOTH 允许程序连接到已配对的蓝牙设备(Allows applications to connect to paired bluetooth devices) android.permission.BLUETOOTH_ADMIN 允许程序发现和配对蓝牙设备(Allows applications to discover and pair bluetooth devices) android.permission.BRICK 请求能够禁用设备(非常危险)(Required to be able to disable the device (very *erous!).)

Android开发之- API包类最全面说明

android-->包含应用平台和在定义应用程序所用到android系统功能的应用权限的资料文件类, android.accessibilityservice-->这个包中的类用于为无障碍服务的开发提供替代或增强的反馈给用户 android.accounts--> android.animation-->这些类提供动画系统的功能特性,它允许使用任何类型的动画对象属性,int,float和16进制颜色值都是默认支持的,也可以通过自定义一个动画让告诉应用按你的设置去运行 android.app-->封装好的Andorid全部应用程序模型类 android.app.admin-->提供系统级的设备管理功能,允许您创建安全感知的应用程序用于android系统企业级别的设置,如可以让你的应用程序也能执行屏幕锁定,屏幕亮度调节、出厂设置等功能 android.app.backup-->此包下的类包含了备份和修复应用程度功能的,如果用户清除设备上的数据或升级到一个新的系统,当应用程序在重新安装时可通过已启用的备份用于修复用户之前的数据 android.appwidget-->此包下的类包含在创建一个应用小部件时所必需要组件,用户可将它嵌入在其他应用程序(如主屏幕),无需启动一个新的活动就可快速访问自身应用程序的数据和服务, android.bluetooth-->此包下的类提供手机蓝牙管理功能,例如搜索设备,连接设备,管理设备之间的数据的传输, android.content-->设备上的数据访问和发布。 android.content.pm-->此包下的类提供访问一个应用包的相应信息,信息内容包括:活动,权限,服务,应用签名,提供者, android.content.res-->此包下的类用于访问应用程序的资源,例如:原文件,颜色,图片,多媒体等,和一些可影响设备运行的重要配置的详细信息 android.database-->此包下类的用于探索通过内容提供者返回的数据 android.database.sqlite-->此包下类的包含SQLITE数据库管理类,用于一个应用程序去管理的它所拥有的私有的数据库 android.drm-->此包下的用于管理DRM系统机制和控件DRM机制的插件的功能,DRM解释:DRM提供一套机制对用户使用手机上的媒体内容(如ringtong, mp3等)进行限制,如限制拷贝给第三方,限制使用次数或时限等,从而保护内容提供商的权利, android.gesture-->此包下的类用于创建,识别,加载,保存一个手势 android.graphics-->此包下的类提供一些低级的绘图功具,例如:画布,颜色过滤,顶点坐标,和长方形以便于发开者的绘图直接处理在设备屏幕上, android.graphics.drawable.shapes-->此包下的类用于几何绘图 android.hardware-->提供支持硬件功能的类,例如:照像机和其它传感器 android.hardware.input--> https://www.sodocs.net/doc/6612670543.html,b-->提供支持android系统设备的USB接口与外围设备的相连 android.inputmethodservice-->输入法的基类 android.location-->包括的类用于定义android地理位置和与此关系的服务 android.media-->提供管理各种各样音频和视频接口的类 android.media.audiofx-->提供管理多媒体框架中实现的音频效果的 android.media.effect-->提供允许你运用各种图像和视频的视觉效果的类 android.mtp-->提供的API让你直接连接照像机和其它设备与之互动,

Android权限控制权限监控

Android权限管理机制 1.Android权限管理。 Android权限来限制一些有限制的特性在应用程序之间以及应用组件访问功能的访问。在Android的发展,我们将满足网络的需要,我们需要添加所需的网络权限: 在开发中如果我们使用了某个权限,如果没有在AndroidManifest.xml文件中相应申明,那么程序会运行有错误且提示:https://www.sodocs.net/doc/6612670543.html,ng.SecurityException: Permission Denial ... 我们可以根据这个错误提示,一般情况下,在AndroidManifest.xml中通过增加相应的uses-permission Android权限列表: 在Android官方文档中查寻我们需要使用的权限。 https://www.sodocs.net/doc/6612670543.html,/reference/android/Manifest.permission.html 不同的api有着不同的权限,会出现兼容性问题。 2.Android自定义权限: 在有些场合我们或许会碰到如下的场景:用户在应用程序中进行操作时候,要启动另外一个应用程序的时候,我们一般是打开一个应用程序。并且进入Activity。有些情况,程序处于安全需要,这些操作就需要加上访问权限。Android提供了自定义权限功能。 有时候,我们可能遇到如下需求场景:当用户在一个应用程序中进行某项操作时,会启动另假设应用程序。在A中有MainActivity,应用程序B中有AActivity和BActivity。现在想通过A中的MainActivity直接打开B中的BActivity。 那么,如果不考虑权限,A中的MainActivity如何直接打开B中的BActivity呢?一般,可以通过如下方式: 1 public class MainActivity extends Activity { 2 3 private Button button; 4 5 @Override 6 protected void onCreate(Bundle savedInstanceState) { 7 super.onCreate(savedInstanceState); 8 setContentView(https://www.sodocs.net/doc/6612670543.html,yout.activity_main); 9 10 button = (Button)findViewById(R.id.button); 11 button.setOnClickListener(new View.OnClickListener() {

基于权限分类的Android静态检测

基于权限分类的Android应用程序的静态分析 吴俊昌1,骆培杰1,程绍银1,王嘉捷2,蒋凡1 (1. 中国科学技术大学信息安全测评中心,合肥230027;2. 中国信息安全测评中心,北京100085) 摘要:Android系统有着严格的权限管理机制,应用程序需要获得相应的权限才可以在Android系统上运行。本文提出了一种基于Android权限分类的静态分析方法,用于检测Android应用程序的恶意代码。为了便于处理Android中的大量权限,将其权限划分成四个等级,并将能与外界进行信息交互的权限视为锚点,引入灰函数来描述其他权限所对应的函数,然后利用块与函数变量关联表生成引擎构建块和函数变量关联表,采用静态污点传播和其他静态分析技术相结合的方法对变量关联表进行分析。实验结果表明该方法在分析Android应用程序时是有效的,能够大大减少人为的分析难度和强度。 关键字:恶意应用;软件分析;静态分析;Android 中图分类号:TP302.1 文献标识码:A Static Analysis of Android Apps Based on Permission classification WU Junchang1, LUO Peijie1, CHENG Shaoyin1, WANG Jiajie2, JIANG Fan1 (1. Information Technology Security Evaluation Center, University of Science and Technology of China, Hefei 230027, China; 2. China Information Technology Security Evaluation Center, Beijing 100085, China) Abstract: Android has a strict management mechanism of permissions. If an application wants to run on Android, it must have some suitable permissions. In this paper, a permission-based algorithm of static analysis is presented, which is applied to detect malcode of Android apps. In order to deal with so many permissions, these permissions are divided into four groups. And set the permissions, which can interact with internet or smartphones, as sink function. Use grey function to describe other permissions. Then use block and function analyzer to construct variables’ associating table of block and function. At last use static taint propagation and other static methods to analyze the variables’ associating table. The result of experiment proves that the algorithm is efficient, also can help analyst-programmer reduce the difficulty and intensity of work. Keywords: malware; software analysis; static analysis; Android 随着科学技术的进步和生产力水平的不断提高以智能手机为代表的便携式智能终端便在时下流行起来。与以前的个人计算机的发展所面临的问题一样,智能手机上的安全问题日益凸显出来。智能手机不但有丰富的功能,而且还可以添加各种扩充功能的软件,这就为恶意软件提供生存环境,且智能手机可以保存用户各种帐号及密码等涉及用户隐私的信息,从而给智能手机用户带来巨大经济损失和精神上伤害。 恶意软件虽然是在智能手机上运行的,但是其在各种特征上与在计算机上运行的软件并无很大差异,所以完全可以借鉴传统的软件分析技术对其进行分析。随着软件业的发展,计算机软件分析技术也得到了迅速的发展[1]。静态分析是一种不需运行软件就可以对软件进行分析的过程,常见的有:数据流分析、控制流分析、类型分析等;符号执行[2,3]也 收稿日期: 2011-05-31 基金项目:中央高校基本科研业务费专项资金资助(WK0110000007) 作者简介:吴俊昌(1986-),男(汉),安徽,硕士研究生 通讯作者: 程绍银,讲师,E-mail: sycheng@https://www.sodocs.net/doc/6612670543.html, 是常用的分析技术,是一种路径敏感的分析策略,需综合考虑路径调度、约束求解等问题。 Android系统有着严格的权限管理机制,应用软件如果想在系统中运行就必须要有相应的运行权

教你完全弄懂Android系统的权限

安卓学堂第一课,教你完全弄懂Android系统的权限来源:dospy智能手机网作者:白鸽男孩 24375次点击发表于:2011-11-15 13:00:11 白鸽曾经在塞班上办过系列学堂,反响还不错,现在打算在安卓上也开设系列课程,希望大家喜欢。白鸽安卓学堂第一课,给大家讲讲手机上最常见的权限知识。 以大家最熟悉的Root Explorer文件管理器为例,我们经常需要用到菜单里的“Permissions”选项来给文件或文件夹设置权限,而这个权限的设置界面就像是一个九宫格一样,我们只需要在里面勾选或者取消勾选就完成了权限的设置。 九宫格的三列分别为Read、Write、Execute,分别对应读取、写入和执行三种权限,三行则是Owner、Group和Others,分别对应所有者、用户组和其它三组账户。 如果我们把电脑上的文件复制到手机的存储卡里,则该文件的默认权限总是如下表所示:

▲左为Windows上的文件在Android系统里的默认权限,右为文件列表里显示的权限 不过细心的朋友可能会发现,我们所勾选的权限,在文件列表中却是另外一种显示模式,比如上述九宫格默认权限显示在列表里却是---rwxr-x,这样的表述方法又是怎么来的呢? 理解起来其实很简单,---rwxr-x总共是九个字符,而九宫格也一共有九个勾选选项,首先没有勾选的选项我们一律用字符-表示,而对于勾选了的选项,只需结合其所对应的列来看就能同样轻松写出对应的字符:如果对应的列是Read,那么就写作r,如果对应的列是Write,那么就写作w,如果对应的列是Execute,那么就写作x,其实都是这三个单词的缩写,非常容易记忆。 好吧,现在让我们按照从左到右、从上到下的顺序来看,那么这个九宫格的写法就很容易推导出是---rwxr-x了。

相关主题