求助,手机打开辅助功能崩溃里自动安装,为什么不管用

主题帖子积分
彩虹糖:170
大神,求助!
&查看:2162
为什么辅助功能里面的服务,我已经打开,可是过段时间就会自动关闭,比如应用宝的自动安装,开启过一段时间后就会自动关闭?
temp_upload_img.jpg (81.12 KB, 下载次数: 0)
22:31 上传
主题帖子积分
彩虹糖:170
来自OPPO OPPO R7sm手机
手机型号是OPPOR7sm
彩虹糖15534
主题帖子积分
彩虹糖:15534
来自OPPO OPPO R7s手机
之前也有遇到过,重启手机后会失效。不知道系统默认设置如此还是bug,楼主可到产品反馈版块先反馈下,会有专人跟进。
彩虹糖7422
主题帖子积分
身北职低心忧国 权轻位微志四方
彩虹糖:7422
反馈区这里:
彩虹糖1375
主题帖子积分
彩虹糖:1375
来自OPPO Find7手机
你好,根据我的测试发现打开这些服务的话需要软件一直在后台挂着,如果在多任务或其他方式上关闭了这个程序的话这个服务也被关闭了
彩虹糖1656
主题帖子积分
彩虹糖:1656
楼主您好,您可以去产品反馈版块,去反馈一下,那边会有专人跟进。。祝您生活愉快!
申请条件:截图公测qq群中的证明信息,提供公测名称和群里的号码。截图并发私信给管理员阳光
申请条件:截图内测qq群中的证明信息,提供内测名称和群里的号码。截图并发私信给管理员阳光
特殊活动勋章,不再开启兑换
仅限在新年期间申请开放
申请条件:截图微博关注ColorOS账号,并私信发图片给管理阳光
申请条件:截图微信关注ColorOS账号,并私信发图片给管理阳光
申请条件:限时申请,截止日期8月10日,单身快乐
申请条件:限时申请,截止日期2月11日,鸡年大吉。
狗年大吉,人旺财运旺
第四届内测
第四届内测
论坛总积分大于50000分,可以通过审核揭秘360手机助手未经用户同意,自动开启辅助功能的“黑科技” - FreeBuf互联网安全新媒体平台 | 关注黑客与极客
揭秘360手机助手未经用户同意,自动开启辅助功能的“黑科技”
共907485人围观
,发现 43 个不明物体
*本文原创作者:Venscor,本文属FreeBuf原创奖励计划,未经许可禁止转载
18:00,360官方回应:
经过与360手机助手产品团队沟通确认,该文章内容存在部分误解。360手机助手开启辅助功能并不是通过PC端软件使用adb运行shell的app_process命令来实现的,文中也没有相关技术论证,所以猜测出了错误的结论。
在有ROOT权限的部分机型上,360手机助手会开启辅助功能,作用是给用户升级安装APP时避免繁琐的安装提示,帮助用户一键更新应用,不需要逐个点击完成安装操作。比如用户同时更新多个应用时,开启辅助功能可以给用户节约频繁点击操作的时间。
针对@Venscor关于开启辅助功能的提示问题,360手机助手会增加引导用户进行手工设置的操作,提升用户体验的同时给用户充分的选择权,并向@Venscor的中肯意见表示感谢。
0×00 概述
Android为正常使用手机有障碍的用户提供了辅助功能,即AccessibilityService。通俗的说,也就是为”残疾人”专门提供的服务。但近几年来,这个功能却被开发者和病毒厂商玩坏了,最典型的两个示例用途就是抢红包和静默安装,当然还有其他基于AccessibilityService的病毒程序,具体可参见360移动安全的研究报告[1]。按照Android开发文档,开发者开发AccessibilityService功能,必须要让用户手动在系统设置的”辅助功能”内打开对应的AccessibilityService。很多工具类软件也都使用了AccessibilityService,例如百度手机助手,腾讯应用宝,豌豆荚,pp助手,爱奇艺等。但是,这是App都没有自动开启辅助功能的能力。
我们发现,只有360手机助手能够不经过用户交互,自己启动AccessibilityService。为什么360手机助手可以做到?带着这样的好奇,我们来探寻其背后的“黑科技”。
0×01 必备知识
1.1 AccessibilityService的使用
这一部分属于开发的范畴,不想做过多的介绍。不会的可以参考博客:Android静默安装实现方案,仿360手机助手秒装和智能安装功能[2].由于AccessibilityService可以实现对手机上发生事件的监控,并且能够模拟用户点击等。所以还有许多其他用途,可以参考相关开发内容。正是由于AccessibilityService伴随很多安全行为,Android不允许App为自己开启这项服务,必须通过用户交互才能使用,这就给一些想恶意利用AccessibilityService的App带来了一些麻烦。
1.2 Android独立运行Java程序
网上关于这部分的资源也不在少数,可以参考我的博客Android上app_process启动java进程[3]. 这里还是以demo形式简单说明下。
1.2.1 编写一个Java程序并编译成Dalvik可执行的jar/dex包。
public class Helloworld {
public static void main(String[]args){
System.out.println("Hello, I am started by app_process!");
//编译,这里主要是Platform tool上用的是Java 7,所以显式指定1.7
javac -source 1.7 -target 1.7 C:\Users\Venscor\Desktop\app_process\dump.java
//生成dex,当然生成jar在Android上也是可执行的
dx --dex --output=C:\Users\Venscor\Desktop\app_process\Hellworld.dex Helloworld.class
将编译好的dex文件push到Android设备上,这时,面临一个问题。我们平时开发Android应用程序都是.apk文件,都运行在独立的Context下。缺乏Context的支持,我们如何才能启动独立的Java程序?
其实,这里需要普及一个知识点,就是Android apk执行的其实点并不是开发者认为的onCreate函数,其实启动点在Framework层中的ActivityThread.java的main()函数。更底层一点来说,每个apk都是由app_process间接启动起来的。使用app_process执行上述java代码,app_process命令如下:
app_process -Djava.class.path=Helloworld.dex /data/local/tmp Helloworld
可以看到,Java代码成功执行了,这里需要注意:app_process命令启动的Java程序需要shell权限才能执行,当使用普通app执行app_process命令时,对应的启动的Java程序的Uid不再是shell,所以不能修改对应的setting。
1.2.2 被启动的Java程序的Uid
通过ps命令查看app_process启动的Java的Uid,以及对应的权限。
可以看出,app_process启动的Java程序运行在uid为shell的进程中。这就意味着,被启动的Java程序拥有很高的权限。
1.3 不通过用户交互修改系统设置
Android很多危险的系统设置,比如AccessibilityService,安装未知来源的app等都是不对第三方App开放的,也就是说修改这些权限都需要signature级别的权限。所以,第三方App想修改系统设置是不切实际的。
其实,用户修改系统设置,对用户可见的是设置状态的改变。在系统的背后,其实这些修改都是通过数据库实现的。Android于安全设置有关的Uri是:content://settings/secure。通过修改这个数据库就可以修改对应的系统设置,并且用户完全觉察不到。那么问题来了,对这个数据库的修改也是需要Signature级别权限的。
结合上面1.2.2知识,就给我们提供了一条路子:在apk中实现一段纯Java代码,然后在shell下用app_process启动这个Java代码。于是Java代码运行于uid为shell的进程,就可以修改系统设置对应的数据库,从而在用户好不察觉的情况下实现系统设置修改。例如:打开AccessibilityService。
简单实验一下,更新修改从而自动打开应用宝的辅助功能。
/*shell cmd 1*/ settings put secure enabled_accessibility_services com.tencent.android.qqdownloader/com.tencent.nucleus.manager.accessibility.YYBAccessibilityService /*shell cmd 2*/
settings put secure accessibility_enabled 1&
0×02 实验
其实到这里,360的黑科技的基本原理已经说明完了,没有代码怎么感觉有点不完整。所以,这节主要是实前面过程的代码。在Android手机上执行以下代码,轻松展现360黑科技。
package com.venscor.
import java.io.BufferedR
import java.io.IOE
import java.io.InputStreamR
public class Helloworld {
public static void main(String[]args){
System.out.println("Hello, I am started by app_process!");
String cmd1="settings put secure enabled_accessibility_services com.qihoo.appstore/com.qihoo.appstore.accessibility.AppstoreAccessibility";
String cmd2="settings put secure accessibility_enabled 1";
execShell(cmd1);
execShell(cmd2);
static void execShell(String cmd){
Process p=Runtime.getRuntime().exec(cmd);
BufferedReader br=new BufferedReader(new InputStreamReader(p.getInputStream()));
String readLine=br.readLine();
while(readLine!=null){
System.out.println(readLine);
readLine=br.readLine();
if(br!=null){
br.close();
p.destroy();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
0×03 360手机助手的做法
360这项黑科技的做法和我上面说的基本一致,这里有一个问题:Java程序是需要shell下来开启的,对于Android设备上的app,是没有此权限的。那么360上的Java程序是怎么启动的?
其实,是你手机对你电脑的信任关系出卖了你。国内绝大多数用户在Windows PC上都安全了360的杀毒软件,这些杀毒软件其实都内置了adb工具。也就是说,PC上的360杀毒软件使用adb运行shell的app_process命令来启动Java程序来自动打开了AccessibilityService。这也解释了你为什么一把手机插上电脑,就被自动被安装app的原因,并且全程都是静默安装。
好了,空口无凭。我们看360手机助手的代码,其通过两种方式实现,而且方式2粗心的程序员还打错字了,把accessibility_enabled打成了enabled_accessibility_services.代码路径:\com\qihoo\appstore\rootcommand\accessibility\AppStoreAccessibilityServiceEnableCommand.class
0×04 参考文献
[1]Android Accessibility安全性研究报告:
[2]Android静默安装实现方案,仿360手机助手秒装和智能安装功能:
[3]Android上app_process启动java进程:
*本文原创作者:Venscor,本文属FreeBuf原创奖励计划,未经许可禁止转载
他们故意的高声嚷道,“你一定又安装乱七八糟的东西了!”粥红为睁大眼睛说,“你怎么这样凭空污人清白……”“什么清白?我今天亲眼见你偷偷安装,被大家吊着打。”粥红为便涨红了脸,额上的青筋条条绽出,争辩道,“静默安装不能算坏事……为了安全!……网安的事,能算坏事么?”接连便是难懂的话,什么“永久免费”,什么“保护用户隐私”之类,引得众人都哄笑起来:店内外充满了快活的空气。
360总裁流氓周
别这样好不好,对于360来说,这不是最下流的。
徐尼玛的猫
360不是做病毒的么?
我们只是想让用户的手机更安全,你又来耸人听闻的黑我们
哈哈哈哈哈哈哈哈
流氓不可怕,就怕流氓有文化,而且这流氓还为你看家护院的!
必须您当前尚未登录。
必须(保密)
这家伙太懒,还未填写个人描述!
关注我们 分享每日精选文章
可以给我们打个分吗?在红米note4上实现自动安装软件 - 假的程序员 - 博客园
随笔 - 11, 文章 - 0, 评论 - 3, 引用 - 0
因为要做自动化测试,需要对已发布的包进行回归手测,这个时候需要手动安装APK,但是红米会弹出继续安装的按钮,手点一次比较烦,想自动点"继续安装"按钮!
感谢先行者们的分享
本文参考:
http://blog.csdn.net/itfootball/article/details/
https://testerhome.com/topics/3800
如果你想知道一下什么是AccessibilityService,可自行搜索学习或看官方介绍&
开启方法:普通手机: 设置 -& 无障碍/辅助功能 -& 服务 -& AutoInstall -& 开启 -& 确定某些手机:设置 -& 其它高级设置 -& 辅助功能 -& 服务 -& AutoInstall -& 开启 -& 确定
注意:开启自动安装不仅适用于adb install,也适用于主动点击apk来启动安装。所以有安全风险,建议仅在测试机器上安装
git地址 &https://github.com/guhan121/autoinstall.git
不需要Activity,仅需要一个继承AccessibilityService的服务,在服务里兼听onAccessibilityEvent,当出现安装界面的时候,自动去点击。在安装完成后,到辅助功能里开启即可。
AutoInstallService.java
package com.mrqyoung.
import android.accessibilityservice.AccessibilityS
import android.util.L
import android.view.accessibility.AccessibilityE
import android.view.accessibility.AccessibilityNodeI
import java.util.L
public class AutoInstallService extends AccessibilityService {
private static final String TAG = "AutoInstallService";
private static String PACKAGE_INSTALLER = "com.miui.securitycenter";
public AutoInstallService() {
public void onAccessibilityEvent(AccessibilityEvent event) {
//log(event.toString());
if (event.getSource() == null) {
log("&null& event source");
int eventType = event.getEventType();
if (eventType == AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED) {
log("event Perform: " + event.getPackageName());
if( event.getPackageName().equals(PACKAGE_INSTALLER)) {
boolean r = performInstallation(event);
log("Action Perform: " + r);
public void onInterrupt() {
log("AutoInstallServiceInterrupted");
private void log(String s) {
Log.d(TAG, s);
private boolean performInstallation(AccessibilityEvent event) {
List&AccessibilityNodeInfo& nodeInfoL
String[] labels = new String[]{"确定", "继续安装", "下一步", "完成"};
for (String label : labels) {
nodeInfoList = event.getSource().findAccessibilityNodeInfosByText(label);
if (nodeInfoList != null && !nodeInfoList.isEmpty()) {
boolean performed = performClick(nodeInfoList);
if (performed) return true;
return false;
private boolean performClick(List&AccessibilityNodeInfo& nodeInfoList) {
for (AccessibilityNodeInfo node : nodeInfoList) {
if (node.isClickable() && node.isEnabled()) {
return node.performAction(AccessibilityNodeInfo.ACTION_CLICK);
return false;
AndroidManifest里面要声明权限,除了上面从代码里面可以过滤,通过meta-data的xml里也可直接配置过滤
AndroidManifest.xml
&?xml version="1.0" encoding="utf-8"?&
&manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.mrqyoung.autoinstall" &
&application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@android:style/Theme.Black" &
android:name=".AutoInstallService"
android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE"&
&intent-filter&
&action android:name="android.accessibilityservice.AccessibilityService" /&
&/intent-filter&
&meta-data android:name="android.accessibilityservice" android:resource="@xml/accessibilityservice" /&
&/service&
&/application&
&/manifest&
在AndroidManifest里面引用的meta-data文件,。
@xml/accessibilityservice.xml
&?xml version="1.0" encoding="utf-8"?&
&accessibility-service
android:accessibilityEventTypes="typeWindowStateChanged"
android:description="@string/description"
android:accessibilityFeedbackType="feedbackVisual"
android:notificationTimeout="1000"
android:accessibilityFlags="flagDefault"
android:canRetrieveWindowContent="true"
xmlns:android="http://schemas.android.com/apk/res/android" /&
第3行等同于过滤 AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED --&&!-- android:packageNames="com.android.packageinstaller" 无这个参数主要是开始也不知道那个包在管理安装 --&
gradle build 编译,使用的是2.2版本的gradleadb uninstall com.mrqyoung.autoinstall 卸载这个应用adb install app-debug.apk 将这个应用直接从PC机安装到手机上,当然第一次你需要手动点"继续安装"平板/笔记本
HiLink生态产品
终端云服务专区
为什么辅助功能里的选项打开了老是会自动关闭?
&略有小成&
来自:浏览器
如题,新买的mate8,装了当乐游戏中心,自动安装游戏需要用到 辅助功能 但是把选项打开之后不知道什么时候就自己又关掉了,安装绿色守护也是这样的。。手机未root
width:100%">
&已臻大成&
来自:浏览器
楼主你好,是否重启了手机了,重启后可能需要重新设置,建议楼主把相关软件在设置中加入后台保护和自动启动项。
width:100%">
&略有小成&
来自:浏览器
楼主你好,是否重启了手机了,重启后可能需要重新设置,建议楼主把相关软件在设置中加入后台保护和自动启动 ...
是的是的。。一重启就没有了。。。但是我已经加到后台保护和自动启动了呀~~
width:100%">
&炉火纯青&
来自:浏览器
嗯,我也是这种情况,烦死了
width:100%">
&略有小成&
来自:浏览器
确实太不方便了,每次重启下都要自己打开一次。。太麻烦了。。。
width:100%">
西湖——长桥老铁轨上来一组人像Memory的Melody不负好春光拍拍拍~7X全屏摄春福建南靖珠坑社黄花风铃木
花粉客户端
Make it Possible
Make your device special
华为云服务
Huawei cloud services
音乐播放器
Huawei Music
Huawei Vmall
关注花粉俱乐部
举报邮箱:
|关注花粉俱乐部:
Copyright (C)
华为软件技术有限公司 版权所有 保留一切权利OPPO辅助功能上未安装任何服务就不能开启USB怎么办
全部答案(共1个回答)
这个是提供给那些手脚或眼睛耳朵不好用的人的,可以到谷歌商店下载。下载安装了里面就会出现新的东西了。劝你不要下载基本没有甚么用的
《赠人玫瑰手有余香,祝您好运一生...
装了还原精灵关了是找不回来的。如果平时的删除格式化你可以用EasyRecovery Professional
答: 小米的米键可以用于其他的安卓手机上。
米键的功能:
1、一键拍照、录音、发朋友圈,无需解锁,极速打开。
2、首款一键完成组合功能,让智能更好玩。
答: 美国苹果公司的新款手机,全触屏的智能机,在中国卖的很贵。
答: 主流手机配置,不错的一个选择。
答: 中关村在线可以
大家还关注
Copyright &
Corporation, All Rights Reserved
确定举报此问题
举报原因(必选):
广告或垃圾信息
激进时政或意识形态话题
不雅词句或人身攻击
侵犯他人隐私
其它违法和不良信息
报告,这不是个问题
报告原因(必选):
这不是个问题
这个问题分类似乎错了
这个不是我熟悉的地区
相关问答:123456789101112131415

我要回帖

更多关于 辅助功能 的文章

 

随机推荐