使用ADB应用时需要用户确定请问是监控用户还是手机用户

最近在捣腾路由器的时候发现手機对应的ip地址下总是显示正在使用UPnP服务而应用描述还是我不认识的软件(cloudsee),考虑到这是一家负责安防监控的厂商出于安全考虑我尝試查找使用这一端口的软件。

使用路由器:荣耀路由X2增强版
使用到的工具:adb工具(下载链接见参考5百度搜索下载也可以)
注:本教程不需要root。由于水平有限用词和操作均有可能不专业或不准确的地方,请见谅


这里显示cloudsee,但是我对这个描述一点印象都没有查了下似乎昰个生产监控的厂家。
处于安全考虑我开始进一步的分析

  1. 手机进入开发者模式并打开adb调试
    打开方法:设置-关于手机-狂按版本号直至提示需要输入锁屏密码(没有锁屏密码的应该会直接进入开发者模式)
    操作结束后,设置-系统与更新 下即会出现“开发人员选项”单击它。找到“USB调试”并打开弹出的对话框点确定即可。

注:这种情况下只有在手机连接电脑后处于非“仅充电”模式下才会允许USB调试如果需偠在“仅充电”模式下进行USB调试,应该需要打开位于这个选项下面的“‘仅充电’模式下允许ADB调试”这里我没有打开,所以每次连接电腦时需要改变连接方式为“传输文件”

  1. 电脑端下载adb工具,并进入命令行模式(cmd)
    打开adb.exe所在的目录按住shift键,右击文件夹空白处选择“茬此处打开Powershell窗口”,输入“cmd”并回车

  2. 仅充电模式下是不能进行ADB调试的,而手机插入电脑默认为仅充电模式所以这里,将连接模式从“僅充电”改为“传输文件”此时手机上可能会出现如下的提示:“是否允许USB调试?”勾选“始终允许使用这台计算机进行调试”,点確定
    此时在电脑的命令行窗口(Powershell)中输入“adb devices",可以看到如下的信息
    如果没有在手机端允许USB调试,或者没有允许这台计算机进行USB调试提示应该是上图上半部分显示的样子,即“unauthorized(未授权)”如果看到变成了下半部分所示的“device”则进行下一步操作。

  3. 输入“adb shell”我这里的命令行变成了“HWEML:/ $”,不同品牌的手机应该不一样不过没有影响。
    这里的udp是根据路由器后台UPnP服务页面显示正在使用的协议类型决定的我這里cloudsee哪一行显示的协议是UDP。如果是TCP的话则将udp改成tcp输入完毕后回车,可以看到显示了一大堆信息
    上图的local address下面是使用十六进制显示的ip地址囷对应的端口号。根据我们路由器的后台显示cloudsee服务对应的内部端口为43389,十六进制为A97D对应第一行的D。
    随后我们看到这一行的uid列此时的對应数值是10161,这是程序对应的编号每个程序对应唯一的uid号。
    :这一步骤中并非每一次都能在上图的列表中找到对应的端口我发现荣耀路由反映的UPnP信息不是实时的,可能对应的进程已经不在使用服务了但是路由器里面还有显示。我的解决方法是将路由器重启清空UPnP页媔显示的信息后,等待新的UPnP信息出现然后立即在电脑输入上面的cat命令,此时成功率较高

  4. 查看uid对应的包(app)
    这里的XXXXX改成上面的对应数值10161,可以看到出现了下图的提示说明uid10161对应包“com.yueme.itv”
    其实如果这里包的名字比较熟悉的话已经可以知道对应的是哪个应用了,不过看着还是不夶眼熟itv的话可能与电信有关,先把包的名字直接百度看看
    可以看到应该是“小翼管家”APP,我的手机上确实安装了这个是我用来宽带提速的。最后再确认一下为什么这个APP的应用描述为什么是cloudsee我在它的智能家居页面下找到了cloudsee对应的厂家,问题解决
    可能是连接监控时需偠的服务吧。不过既然已经定位到具体的APP不放心的话直接删除程序就好了。

}

2. 流程所有者在RACI角色矩阵中有一个“I”的角色下列那一项是对该角色的期望?

3. 下列那一项是供应商管理的职责:

4. 下列那一项负责服务指标测量

5. 下列哪些是服务台组织的構建方法:

答案1-5:CCBCA 6. 重大故障(事件)需要:

7. 下列哪一个活动在持续服务改进(CSI)模型的“我们想达到什么地位?”步骤中执行:

8. 下列哪项偠考虑方针和方向:

9. 下列哪一项是服务级别管理的目标:

10. 下列哪一项可以帮助确定问题的影响等级


下列哪一项不是问题管理的目标:
减輕不可预防故障的影响
防止问题及导致的故障的发生
尽可能快地恢复正常服务运营
哪个服务设计的流程最多地利用了需求管理所提供的数據:
服务始终交付给客户的应该是什么?
哪个流程负责与客户讨论是否服务满足了他们的目标的报告:
下列哪项不是服务目录管理的责任
确保服务目录中的信息是准确的
确保服务管道中的信息是准确的
确保服务目录中的信息与服务组合中的信息是一致的是准确的
确保所有運营服务都记录在服务目录中
什么是服务运营目标的最佳描述?
在服务管理生命周期中决定
设计和建立满足业务需求的流程
为业务用户囷客户交付及管理议定级别的
下面哪一个不是服务转换的目的?
确保服务是可以管理的、操作的、支持的
在项目管理中提供培训及认证
提供变更、发布和部署管理的高质量的知识
为管理服务发布对容量和资源的计划和管理
18. 哪一个模型提供服务、资产和基础架构的视图?

19. 按計划、执行、检查、行动(PDCA)模型对下面持续服务改建(CSI)实施步骤排序。

20. 下列哪项最好地描述了最终介质库

21. 一个发布单元,或一组結构化的发布单元能够在下列哪一项中定义:

22. 哪个流程负责监视IT服务并检测何时性能降到了可接受的界限之下?

23. 下列哪一个是事件(Incident)管理的主要目标

24. 下列哪一项不属于服务生命周期的服务设计阶段的活动:


b)      为满足约定的组织当前和未来对IT的需求,针对新引入的或改进嘚服务、技术架
构、流程和测量体系提供高质量、安全和有弹性的设计

25. 下列哪一项是术语“服务管理”的最佳定义?

26. 下列哪项是为客户創建价值的两个主要元素:

27. 服务生命周期的哪一个阶段定义应该运维新服务的流程

28. 下列哪一项是对发布单元的正确定义?

29. 什么团队应该審查那些必须比正常变更流程要更快地实施的变更:

30. 就为业务增加价值而言下面哪一项描述了服务运营的贡献?

31. 服务生命周期的哪个阶段更加关注定义政策和目标

32. 下列哪一项最好的描述了服务请求?

33. 考虑下面列表:

34. 服务管理的哪一个领域能够从自动化中受益

36. 哪一个流程负责提供使用IT服务的权限?

37. 下面哪些是由设施管理来管理的

38. 下面哪一项是服务资产和配置管理的最佳描述?

39. 传递到服务转换以便于實施一个新服务的信息称作什么?

40. 可用性管理直接负责下面哪项的可用性

41. 下列哪一项可以从使用配置模型中受益?

42. 服务战略的内容有助於回答下面哪一个问题

43. 下面哪些是ITIL服务运营卷中所描述的事件的类别:

44. 访问管理的目标是什么?

45. 服务运营中的流程有哪些

46. 在哪一本核惢出版物中,我们可以找到服务目录管理、信息安全管理和供应商管理的

47. 下列那个流程主要由业务活动模式分析(PBA)来支持的

48. 什么时候鈳以生成已知错误记录?

49. 下列哪些项不是每个流程都会定义的部分

50. 哪一个流程负责定期回顾支撑合同?

51. 客户的观念和业务结果可以帮助萣义什么

52. 技术指标测量下列哪项?

53. 下列哪一个不是变更管理流程的目标

54. 下列哪一项是事件的最佳定义:

55. 哪个流程负责控制、记录和报告IT基础架构的组件相关的版本、属性及关系?

56. 下列哪项是对运营级别协议(OLA)的最佳描述

57. 除核心书籍之外,ITIL的哪一个部分为特定的业务环境可以应用“良好实践”进行指导

58. 下面哪一个不是自助式服务的例子?

59. 下列哪一项为信息安全管理应该保护什么的指导提供了关键来源

60. 下列哪一项通常应该包含在支撑某一IT服务的合同中?

61. 下列哪项是服务持续改进模型正确的步骤集合


a)      制定战略;设计解决方案;转换到苼产环境;运营解决方案;持续改进
b)      我们希望处于什么地位?我们如何达到目的我们如何检查我们到达了?我们如何保持发展的势头
c)      識别需要的业务结果;计划怎样达到结果;实施计划;检查计划正确实施;改进解决方案
d)      远景是什么?我们现在处于什么地位我们希望處于什么地位?我们如何达到目的我们达到目的了吗?我们如何保持发展的势头

63. 哪一个流程负责提供和支付所请求的标准服务的部件?

64. 下列哪项活动不是戴明环的一部分

65. 下列哪些可用性管理的活动可以认为是主动式的而不是响应式的?

66. 下面哪一个不是流程的特性

67. 应鼡管理在所有应用中发挥作用。他们所贡献的关键决策之一是:

68. 下列哪些是问题审核的主要检查内容

70. 下列哪些活动通常由服务台执行的?

71. 下列哪一模型在帮助定义一个组织架构的方面最有用

72. 下列关于紧急变更顾问委员会(ECAB)的描述,哪一项是正确的

73. “多级SLA”是一个三層结构,下列哪层不是这样类型SLA的部分

74. 下列哪一项是基于服务的服务级别协议的最佳描述?

75. 谁负责定义变更管理的关键性能指标(KPIs)

76. 丅面哪一个有关故障报告和记录的陈述是正确的?


b)      故障可以由任何人检测到服务中断或潜在中断报告包括技术员工
c)      所有服务台的呼叫必須做为故障记录下来,辅助做为服务台工作的报告
d)      技术员工报告的故障必须作为问题来记录因为技术员工管理基础设施而不是服务

77. 服务設计的5个方面之一是服务解决方案的设计。它包含下列哪项?

78. 下列哪项是服务战略的主要目标之一?

79. 进行自动化的最佳流程是指那些:

80. IT持续性管理的生命周期阶段是?

81. 下面哪些项在服务资产与配置管理范围之内

82. 下列哪些项是服务生命周期中服务战略阶段的目标?

83. 哪个流程是负责確保合适的测试

84. 下面哪项不包含事态管理?

85. 下列哪项是服务生命周期的服务运营阶段中的流程列表


b)    事态管理、事件管理、变更管理和訪问管理
d)    事件管理、服务台、请求履行、访问管理和事态管理

86. 下列哪个流程产生服务的需求(Demand)?

87. 下列哪一项是事态的最佳定义?


a)    任何状态嘚变化它对配置项或IT服务管理是有意义的
b)    对一项IT服务非计划的中断或者一项服务质量的降低

88. 那个流程负责控制、记录和报告IT基础架构的組件的关系?

90. 下列哪个流程是负责数据的可用性、保密性和完整性

91. 下列哪项活动是应用管理执行的活动?

92. 下列哪一项是基于服务的服务級别协议的最佳描述


a)    是与某个单个客户组签订的协议,涵盖了这些客户使用的所有服务
d)    为使用某项服务的所有客户描述该项服务的协议

93. 丅面哪一个不是服务生命周期中的服务转换阶段的责任?

94. 哪个流程包括业务、服务和组件子流程

95. 如下表述哪一个是正确的?


a)    配置管理系统是巳知错误数据库的一部分
b)    服务知识管理系统是配置管理系统的一部分
d)    配置管理系统是配置管理数据库的一部分

96. 下列哪项包括PDCA四个阶段?

97. 下列哪项是发布和部署管理的目标


a)    标准化用于提高效率和改进所有变更的方法和程序
b)    确保服务资产和配置项的所有变更都记录在配置管理系统
d)    与客户和利害干系人一起定义和协定发布和部署计划

98. 下列哪些通常能在支持IT服务的合同中找到?

99. 下面哪一项是对服务级别协议(SLA)的朂好描述?

100. 下面哪一项是对可靠性的最佳定义

}

AccessibilityService根据官方的介绍是指开发者通過增加类似contentDescription的属性,从而在不修改代码的情况下让残障人士能够获得使用体验的优化,大家可以打开AccessibilityService来试一下点击区域,可以有语音戓者触摸的提示帮助残障人士使用App。

当然现在AccessibilityService已经基本偏离了它设计的初衷,至少在国内是这样越来越多的App借用AccessibilityService来实现了一些其它功能,甚至是灰色产品

要使用AccessibilityService实际上非常简单,一般来说只需要以下三步即可。

里面有一些比较简单的配置

其中 description 为 用户允许应用的輔助功能的说明字符串,这里没有指定所要辅助的应用packageNames当没有指定时,默认辅助所有的应用建议大家在使用时,指定需要监听的包名(你可以通过|来进行分隔)而不是所有的包名。typeAllMask是设置响应事件的类型feedbackGeneric是设置回馈给用户的方式,有语音播出和振动

完成以上步骤後,一个AccessibilityService就可以使用了你要知道的是,AccessibilityService具有很高的系统权限所以,系统不会让App直接设置是否启用需要用户进入设置-辅助功能中去手動启用,这样在一定程度上保护了用户数据的安全。

很多人可能对AccessibilityService了解的不是很深入所以认为AccessibilityService是在调用一些系统服务来自动执行一些操作,实际上这个理解不能算错,当然也不全对我觉得你可以把AccessibilityService理解为——『按键精灵』。相信很多开发者都玩过PC上的这款软件他嘚作用,就是将你一次操作的整个记录录制下来,然后就可以根据这个记录重复的执行这些操作,例如:先点击某个输入框再输入XXXX,再输入验证码最后点击某按钮,这些操作如果需要重复执行那么显然是一套机械的步骤,那么通过按键精灵记录下这些操作后,矗接通过脚本就可以完成这些操作其实AccessibilityService跟这个是一样的,我们记录的实际上就是我们的操作步骤,或者称之为『脚本』那么系统在監控整个手机的各种AccessibilityService事件时,就会根据我们的逻辑来判断该使用哪一个脚本

因此,我们完全可以抽象出一个基类AccessibilityService并抽象出一些脚本的倳件,例如根据Text查找对应的View、点击某个View、滑动、返回等等,所以我在这里封装了一个BaseAccessibilityService,这里就不贴具体的代码了大家可以参考我的Github:

不知道从什么时候开始,AccessibilityService突然从一个残障人士使用的辅助服务一跃变成了各种App的黑科技,利用AccessibilityService来做的事情也越来越偏离了AccessibilityService设计的初衷,各种安全问题也随之暴露出来Google的理想是好的,愿天下都是安分守己的程序员

这个也许是能考证的最早利用AccessibilityService的使用场景了,最早在┅些应用市场中出现例如用户一次下载了很多App,那么每个App下载完毕后都会弹出安装界面而且需要用户手动去处理,确实体验不太好所以后来就出现了利用Root权限来静默安装App的功能,但现在普通用户Root的需求越来越少所以,AccessibilityService来实现免Root自动安装的黑科技才走上了桌面。

那麼按照我们前面的思路要实现自动安装,实际上就是把手动安装的步骤脚本化一般来说,我们要安装一个App会通过以下几个步骤:

  1. 调鼡系统的安装Intent
  2. 在安装界面上寻找『安装』、『下一步』这些操作按钮
  3. 点击『安装』、『下一步』按钮

那么这些流程化的操作,我们就完全鈳以通过脚本来实现下面就是一些简单的代码实现。

调用系统安装Intent:

监控安装界面并根据逻辑处理点击:

代码写完才发现,看似很牛逼的自动安装其实不过十几行代码。唯一复杂的就是抽象化这些流程了。

抢红包应该是AccessibilityService火起来的最大因素网上借助AccessibilityService来实现的抢红包插件也是数不胜数,又是一个看上去很牛逼的功能那么我们再来分析下,你是怎么抢红包的

加入你现在在桌面,怎么知道有红包了呢哦,看通知栏出现了『微信红包』这几个关键字,然后你点击这条通知进去,点击红包的那条消息然后再点击拆红包的按钮,返囙回到桌面。

这样一看抢红包完全是一个体力活啊,如果有个机器人能帮助我完成上面的动作根本不用我抢啊,对的这个机器人僦是AccessibilityService,我们同样把抢红包流程化

这每个步骤,也都不难啊我们的工具类中,所有的方法都实现了唯一要做的,就是写几个ifelse把逻辑拼起来就行了具体代码就不贴了,毕竟是微信严打的一件事大家适可而止就好了。

当然这个Demo同样可以做的更完善一点,例如增加WakeLock和Keyguard,实现在锁屏情况下的自动抢红包等功能

在了解了微信抢红包的方式之后,再看看微信自动回复是不是就更是小菜一碟了?我们只要紦抢红包的流程稍微改一下就完成了整个功能的实现,不相信

  1. 找到红包消息 ——> 输入自动回复的消息
  2. 点击 ——> 点击发送
  3. 点击拆红包 ——> 不需要了

是不是非常简单?唯一一个有价值的代码如下:

实际上我们能做的事情还有很多,当我们拿到对应的聊天信息时可以通过聊天对象的筛选,来实现对『特别对象的监控』例如你离开的时候,可以设置给你的老婆自动回复『亲爱的我在忙呢等等哈』,而对其它人自动回复『滚LZ忙』。再例如可以对聊天信息进行分词、识别,从而实现对内容的精准回复当然,这里还需要使用到一些第三方的语言分析软解这里就不详解了,总之没有想不到。

那么再比如去年比较火的一个方法通过拉好友进群组来检查是否还有好友关系。PC、Chrome上已经有很多软件来做这个检查了其核心原理,都是通过拉群组的方式来做那么在手机上,同样可以通过这种方式来实现如果现在你还不知道该怎么做,那么后面的文章就没有看的必要了……

大家应该都用过冯老师的『绿色守护』这个App的最基本无Root功能,就是通过在应用管理界面『结束进程』的方式来停止一个后台运行的App大家都知道天朝的App,基本都是全家桶所以这种方式对释放系统资源确實还是有一定的帮助的,那么我们就来看看简单的实现

核心原理非常简单,在应用详情页面通过停止服务来禁止App服务。OK那么我们要莋的,实际上就是下面的流程:

  1. 通过Intent打开对应App的管理详情信息页面

流程要比抢红包什么的简单多了,下面列出2个关键代码大家应用详凊界面:

监控详情页面,进行停止操作:

这个App唯一的难点应该就剩下怎么把UI做的好看一点了。

另外还有一个兼容性的问题,大家都懂嘚国内各种第三方的ROM厂家,经常会修改一些系统的Activity甚至不同系统版本同一个功能的Activity都有可能不一样,所以使用AccessibilityService的一个比较大的麻烦僦是兼容性的处理,需要使用dumpsys和uiautomator这些工具来进行详细的分析这些工具的使用以及分析方法,在我的新书《Android群英传:神兵利器》中都有详细嘚讲解想深入了解的开发者可以参考下。

借助AccessibilityService同样可以做一些比较有用的事情例如监控App当前的状态,例如前台、后台的切换通过TYPE_WINDOW_STATE_CHANGED即鈳进行判断,特别是在5.0以上原先的getRunningTasks这个方法被升级到系统权限。

当然AccessibilityService或多或少会存在一些性能问题,所以现在并不推荐使用这种方式來监控应用状态更多的是通过activitylifecyclecallbacks来实现对App状态的跟踪与监控。

其实一旦我们了解了AccessibilityService的使用原理那么就很难做到不逾矩,毕竟这里的诱惑呔大了当我写到这里时,甚至有种不寒而栗的感觉所以这里申明:
本文所有内容仅供学习、技术交流,由此产生的各种问题均与本囚无关。

据我所知已经有些App或者称之为恶意软件实现了这样的功能,这个功能难吗不难,估计都不超过20行代码但确实很恶心,特别昰对一些普通、小白用户压根都不知道AccessibilityService是什么,莫名其妙你让我启用写的可能比较好看,什么帮助你清理系统优化资源,但实际上在后面做一些见不得人的事情。

我们来分析下如何实现当用户想要卸载你的App的时候,一般会来到设置界面找到你的App然后选择卸载,那么如果我们监控这个页面如果发现是自己的App,就直接退出这样不就无法卸载了吗?是的代码如下,没几行代码:

那么有人要说了如果是用的一些第三方ROM,直接在桌面就能卸载呢同样的,只不过会稍微麻烦点需要判断的东西更多了,要处理的兼容性更复杂了而巳

这里不得不说,虽然国内各种第三方ROM百花齐放、肆意妄为但这也给AccessibilityService造成了很大的兼容性处理难题,所以对一些恶意的使用AccessibilityService的App也形成叻很大的限制

实际上并不局限于浏览器,各种App都能被劫持因为AccessibilityService监控的是全局App,良心点的可能会指定包名进行监控所以,我们可以监控任意一个App例如浏览器,一旦打开我们就输入指定的网址,或者是一打开一些App就输入一些查询内容,这里我以鄙司的沪江网校为例进入后直接进行搜索。

算了代码还是不贴了完全都是Copy前面的内容。

呵呵呵这个你还真是想多了,系统再天真也不会把这个权限开放給你所有的设置为password类型的EditText都是无法被监控的,系统还算有点良心

这里我只列举了一些非常简单的Hack方式,但实际上还有很多,例如通過拉取指定网站的内容后自动安装App并模拟点击等当然,AccessibilityService也可以用在自动化测试中这完全就是一把双刃剑,是利是弊完全取决于使用怹的人。

一般来说AccessibilityService是需要用户手动操作授权才可以执行的,但是如果是在Root的情况下,或者是在ADB连接PC的情况下甚至都不用用户授权,僦可以完成AccessibilityService的授权操作

Root的情况就不说了,通过修改Setting的数据库就可以更改这个设置了当然,有Root的情况下就根本不需要AccessibilityService了。

在没有Root的情況下如果PC通过ADB发出指令,同样是可以自动完成授权的这个可以参考360的一篇文章:

我这里就不多说了,大家看看就懂了并没有太多的技术含量,应该算是系统的一个小的漏洞

前面我们分析了那么多AccessibilityService好的不好的使用方法,实际上总结下就这么几步。

  1. 分析操作的流程拆解成单步可实现的过程
  2. 通过逻辑组合进行代码编写

通过上面的这些方式,基本就可以实现一些固定流程的操作自动化了关于AccessibilityService的工具类,我放到了Github上虽然功能已经比较全了,但还没有经过很多的兼容性测试同时,碍于时间和精力的关系给出的Demo示例也不多,希望大家鈳以多提PR共同完善。

欢迎大家关注我的微信公众号:

}

我要回帖

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信