如何正确地在Android手机上安装国产软件?

标签: 终端安全 Android | 发表时间:2017-02-28 15:00 | 作者:JohnChu
出处:http://www.freebuf.com

tumblr_inline_o6xf9b3IAi1r19dv9_1280.jpg

国产软件往往会申请与之功能不符的权限,读取着用户手机信息,开机后就驻足系统,这些对于注重隐私的用户来说都是问题。如何“干净”地安装国产流氓软件呢?笔者整理了一些思路供大家探讨。

国产app的全家桶问题一直被大家诟病,一个应用启动后就会“唤醒”其“家族”内的其他应用,有时还会通过其他方式确保应用始终在后台运行;与此同时,很多应用还会申请与之功能完全不符的权限,这些严重破坏了Android系统的体验。

要获得一个纯净的体验,我们需要解决的是两种问题,首先是软件自启动、驻足后台、频繁唤醒;其次是应用对手机信息的读取。对应这两个问题,我们要寻找各种解决方案,而手机本身的环境也是我们需要考虑的因素。笔者将“环境“分为三类:已安装Xposed框架、已root、未root,三种环境下解决问题的难度也各不相同。

Xposed

Xposed简单来说是一个框架,它可以不修改APK的情况下改变系统和应用程序的行为,所有的更改都在内存中。

如果你安装了Xposed,问题就变得简单了,得益于其强大的可定制性,Xposed中有大量应用软件能够满足你的需求。绿色守护(Greenify)的Xposed模式可以阻止应用在后台运行并且禁止链式唤醒,最近新加入的“处方”模式还可以屏蔽软件广播。

Android平台的应用程序分为七个优先级:前台进程、可见进程、主要服务、次要服务、后台进程、内容供应节点、空进程。

第6级别就是一些动作标记,程序设定了遇到什么节点时将采取什么动作,比如:插入耳机线,就是一个“内容供应节点”,收音机程序遇到这个“节点”就会激活并自启,变成后台进程了。要想收音机不会因此启动,有两个办法,要么屏蔽这个节点,使你无论是否插入耳机线,都不产生这个节点的信号,要么我们冻结收音机程序,让他感受不到这个节点。一些无良的应用,动不动就自己在后台启动了,就是这个道理。绿色守护能将一个程序绿化,就是使其感受不到“指定的”“内容供应节点”,从而当发生这些“节点”时,程序不会自动启动,除非用户自己让它启动(用户的点击程序图标也是一个“内容供应节点”)。

想要更直接地阻止应用后台运行,也可以使用“阻止运行”和“黑域”。

除了绿色守护,为了保障你的隐私,你还应该安装Xprivacy,这款软件可以设置软件读取隐私信息的权限。对于某些“流氓”应用强制用户开启权限的情况,Xprivacy还可以伪造随机信息从而保障隐私。原理也是利用Xposed框架能够修改内存信息的方法修改软件获取到的信息。

565009367188452541.png  186969661959223167.png 

Root

Android平台本来有类似iOS推送服务APNS的GCM(Google Cloud Messaging),但由于众所周知的原因,这项服务在国内非常不稳定,于是各大厂商就纷纷推出自己的推送服务,而利用这些推送服务,往往一个app开启后就会其他应用都可能关联启动,尤其以百度、阿里、腾讯为甚。这也就是前面所说的“全家桶”。

如果你Root了手机,写轮眼(My Android Tools)可以说是一款神器,它能够禁用activity、service、receiver、provider,其中的Service就包括软件用来接收推送的服务,因此,写轮眼(My Android Tools)可以阻止软件唤醒。除此之外由于能够禁用activity、service,它能做的还不止这些,经过合理配置,写轮眼能够帮你屏蔽广告,优化软件。

348759852042097543.png

对于那些不常用的软件,可以使用“冻结”类应用将他们禁用。“冰箱”就是其中的代表。它的原理非常简单,adb中提供了一个adb shell pm disable命令,在root权限下可以直接用来冻结app,而冰箱基本可以理解为使用了adb shell pm disable命令。不过它提供了非常方便的launcher,让你能够快速地启动冻结app。

436404800914951612.png

保护隐私方面,对于已经Root的手机,可以使用AppOps应用控制应用权限。很多国产ROM甚至系统原生ROM都有权限控制,但首先,这些权限往往不完整;其次,AppOps能将权限设置为ignore,很多国产软件会强制用户开启部分权限,设置ignore后,应用会得到数据,但数据为空,从而绕过这些权限申请。比如如果我们直接拒绝微信使用电话权限,就无法正常进入微信,而用AppOps将权限设为忽略就可以顺利进入。

548807995870182378.png 237945419321612689.png

左图为 通过系统权限管理拒绝微信读取设备ID,右图为 通过AppOps忽略微信读取设备ID请求

未Root

未Root手机其实本文的重点。笔者自从去年入手了S7 edge后就一直纠结于是否Root。Root后永久无法使用Samsung Pay,更可怕的是还会导致前置摄像头黑屏、系统卡顿发热等各种问题。可是又无法忍受各种流氓软件在手机里捣乱,因此一直在寻找方案。

对于TouchWiz系统,我们可以利用KNOX Standard SDK的机制冻结应用(包括系统应用),常见的利用这一机制的软件包括“空调狗”、“冻住”,它们都可以做到应用使用后立即冻结,从根源拒绝“关联启动”等流氓行为,只可惜这一机制只针对三星系列手机。

59004780468787091.png

隐私方面,可以通过AppOps将部分权限设置为ignore。实际上AppOps在Android 4.4.2之前是集成在系统中的,4.4.2之后,Google不知处于何种想法将其从系统中移除了,系统自身没有权限进行管理。上文中所使用的AppOps是以root为前提的。如果手机没有root,只有两种相对比较麻烦的方法,两种方法都需要电脑端操作。

一是通过电脑端adb进行设置:

  adb shell appops set 包名 权限名称 ignore   

其中权限名称包括:

READ_CONTACTS 读取联系人

POST_NOTIFICATION 通知

CALL_PHONE 拨打电话

READ_SMS 读取短信

WRITE_SMS 写入短信

RECEIVE_SMS 接收短信

OP_READ_PHONE_STATE 读取设备ID(包括IMEI)

FINE_LOCATION 定位权限

COARSE_LOCATION 定位权限

VIBRATE 震动

CAMERA 摄像头

WRITE_CLIPBOARD 写入剪切板

READ_EXTERNAL_STORAGE 读取外部存储空间

WRITE_EXTERNAL_STORAGE写入外部存储空间

BOOT_COMPLETED 开机时启动

GET_ACCOUNTS 获取设备账号信息

第二种方法是使用App Ops手机端软件,在免root模式下,App Ops使用远程adb进行权限控制,而远程adb仍然需要在电脑端开启:adb tcpip 5555,将端口号5555输入App Ops即可使用。但需要注意的是,重启后需要重新开启远程adb。

然而,想要完全将流氓软件隔离开来,我们要用到类似“沙盒”的机制。好在Android自从5.0以后就加入了Android for Work功能,功能的初衷是为了让大家在工作时能够使用自己的私人设备,通过Android for Work,我们可以建立“个人”和“工作”两套档案,工作档案由企业的IT管理员管理,为了安全起见,在两套方案中的应用无法互相访问,应用数据存储的区域其实也是不一样的,Island中的/data目录、内置存储空间、通话记录、联系人、日历等数据是与原用户独立的。

利用这种思路,我们也可以将这套机制用来对付流氓应用,将应用安装到工作档案后,它就无法获取到个人档案的应用和数据。Island就是利用Android for Work将流氓应用隔离在“岛”上的应用,这款软件与绿色守护出自同一作者,通过上述方式来实现类似沙盒的效果。

除了沙盒,Island还自带了冻结应用的功能。然而,使用了Island中自带的冻结功能后再次解冻时,该应用的AppOps状态就会被恢复到初始状态(也就是允许所有权限)需要重新设置权限。如上文所说,进行AppOps设置的两种方法都需要用到电脑,因此冻结后再解冻软件需要重新设置权限的成本较高。

124869754338902445.png

接下来我们就在沙盒环境内解决唤醒和隐私的问题。

唤醒问题我们可以通过在Island中安装绿色守护来解决。尽管是在非root环境下,它依然能够强制关闭程序(原理是通过Android辅助功能模拟点击“强制停止”程序)。建议开启“嗜睡模式”,它能够部分禁止应用的后台行为,该模式利用的是Android 6.0引入的Doze Mode。在睡眠状态下,系统将停止一些软件运行,例如一些非即时通讯软件的后台就会在锁屏的状态下被Android清理掉。从而达到节省电量、延长续航时间的作用。绿色守护中的“嗜睡模式”会将进入Doze Mode的时间缩短,从而进一步节省电量。

main-qimg-74497cf9d299509541c6a2c2b15a0158.png 

而隐私问题则可以通过在沙盒中安装App Ops来控制,或者同样地,可以通过电脑端adb操作,但需要注意的是由于沙盒实际上是在Android中使用了多用户,因此需要在参数中指定用户:

  adb shell pm list users
adb shell appops get com.eg.android.AlipayGphone --user XX   

adb2.png

除了上述方案,笔者最近还发现了一款名叫“容器”的应用。

27464467823348405.png

与Island的思路完全不同,该应用利用的是VirtualApp和文件夹重定向。VirtualApp会在你的App内创建一个虚拟空间,你可以在虚拟空间内任意的安装、启动和卸载APK,这一切都与外部隔离,如同一个沙盒。目前“容器”尚在开发中,但按照作者的说法,今后会加入隐私、权限的控制和应对流氓行为的功能。

总结

要想解决流氓app的唤醒和隐私读取问题,Xposed平台和Root后的手机上有各种简单的方案,包括Greenify与XPrivacy,而非root环境下则相对困难,我们可以使用Island创造Android for Work环境,我们可以把这环境看作沙盒,将应用安装在沙盒内,应用的启动问题则通过Android 6.0后引入的Doze Mode来解决。

想这么多方法来安装国产App,一方面是为了设备保持流畅的状态,不至于被各种唤醒的应用长期占据内存和耗电,另外也考虑到隐私问题。折腾安装国产应用,实际上是无奈之举,也希望国内的Android生态能够良性发展。

*本文作者:JohnChu,转载请注明来自FreeBuf(FreeBuf.COM)

相关 [正确 android 手机] 推荐:

如何正确地在Android手机上安装国产软件?

- - FreeBuf.COM | 关注黑客与极客
国产软件往往会申请与之功能不符的权限,读取着用户手机信息,开机后就驻足系统,这些对于注重隐私的用户来说都是问题. 如何“干净”地安装国产流氓软件呢. 国产app的全家桶问题一直被大家诟病,一个应用启动后就会“唤醒”其“家族”内的其他应用,有时还会通过其他方式确保应用始终在后台运行;与此同时,很多应用还会申请与之功能完全不符的权限,这些严重破坏了Android系统的体验.

正确使用Android性能分析工具——TraceView

- - 博客 - 伯乐在线
最近公司app中有些列表在滑动的时候会有卡顿现象,我就开始着手解决这些问题,解决问题之前首先要分析列表滑动的性能瓶颈在什么地方. 因为之前不会正确使用TraceView这个工具,主要是看不懂TraceView界面下方数据指标的值代表什么意思…以前我用 StopWatch类来分析性能,现在觉得弱爆了…不过有些地方 StopWatch工具类还是很简单好用的~.

在Android手机上运行Ubuntu

- Alex Yu - Solidot
51开源社区 写道 "HTC Desire手机在经过简单的破解步骤后,已经可以相对稳定地运行以桌面应用为主的Linux操作系统Ubuntu. 破解方法是由一位论坛ID叫“Bergfex”的开发者发布的. 整个破解过程十分简便,仅需要在指定的文件夹——如SD卡的根目录和电脑的某个位置——中加载相应的zip文件,然后将手机设置成bootloader模式下加载,之后再将手机和电脑连接后重启即可.

HTC宣布将不锁定Android手机

- Ra白菜 - Solidot
HTC首席执行官周永明(Peter Chou)宣布,该公司未来的Android智能手机将不再锁定bootloader. HTC去年12月发布了Android 2.2 for Wildfire,更新了bootloader,不允许用户再修改固件. 由于HTC不太可能再发布新的更新,这意味着Wildfire用户无法获得新系统带来的新功能,或者安装新的自制固件,如CM7.

中国Android手机遭病毒攻击

- Benny Wen - Solidot
路透社报道,安全研究人员周四称,名为Geinimi的病毒正通过中国Android第三方应用商店传播,是第一种有类似僵尸网络功能的Android恶意程序. 安全公司Lookout Mobile Security估计,被该病毒感染的手机数量在数万到数十万部之间. 他们目前只在中国Android第三方应用商店中发现了含有该病毒的软件,而官方的Android电子市场似乎是安全的.

Cobra Tag + Android 手机帮你找东西

- 可可 - 谷安——谷奥Android专题站
钥匙或什么东西放到哪儿搞忘了. Cobra Tag 可以帮你找到. Cobra Tag 是一种钥匙挂饰,你可以将它挂到你的钥匙上或放到钱包中,而通过专用的(Android)智能手机应用,当挂饰在信号范围内时,就会发出蜂鸣声、震动等来提示你,当这些挂饰离开你一定的范围时手机应用也会提醒器(对防盗来说也有一定的功效).

超实用Android手机指令大全

- MZ - 乐淘吧
【超实用Android手机指令大全】快速设定手机,快速查看手机,全部都告诉你,Android手机用户一定要保存的Android手机指令大全. 我用android手机一定是好男人. [博海拾贝]有时候,最痛苦的不是失去,而是得到以后不快乐. [博海拾贝]与其诅咒黑暗 不如点起一根蜡烛.  » 非特殊声明本站所有文章,图片,视频全部来自网络,如有侵权>,请通知本站.

Android 手机的桌面通知

- liusp - I, KDE
Android手机有一个项目,可以将Android手机的通知推送到电脑上. 这个项目本身其实是用java外加swt完成的,在KDE的桌面中需要配置成使用libnotify作为通知机制才能在桌面看到. 本身可以通过蓝牙或者网络发送通知. Chakra和Archlinux需要分别在CCR或者AUR安装android-notifier-desktop,然后启动这个程序.

Pantech Android 手机使用 DDR2 内存

- David Z - Engadget 中国版
Pantech 在港台市场没有太高的知名度,手机也很难买到,但他们推出的手机一直以来在韩国也有不错的销量,加上话题性的规格,未来若大力发展韩国以外的市场,销量应该不会太差. Pantech 日前发布全球第一部使用 DDR2 内存的 Android 手机,名为 Vega Xperss. Vega Xpress 配备 4寸 800X480 LCD 屏幕、Android 2.2 系统、WIFI 802.11n、500万像素自动对焦镜头、1500mAh 电池.

手机QQ2011(Android)正式版发布

- SINCERE - cnBeta.COM
QQ2011(Android)正式版 Build0205  更新说明.     1.加、退群功能完善和优化.     2.搜索界面展示优化并加入群搜索结果.     3.新增部分超级QQ功能.     4.修复添加好友不成功、长昵称显示不全等BUG.