Android逆向之旅--免Root实现微信消息同步原理解析

感谢「珍惜」同学投稿,也热烈欢迎其他同学来投稿,分析是一种快乐,也是一种精神!


现在很多应用有一些需求需要获取监听微信消息,然后做一些事情,有的会把当前微信聊天信息直接同步到服务端进行分析用户行为,这么做可能为了更好的用户体验,但是这样是很不安全的对于用户来说,因为微信官方都说不会保存用户聊天信息的,不过本文单纯从技术讨论一下有没有免Root进行操作,当然Root之后就不多说了方法太多了。

 

第一种:通过辅助功能和截图功能

因为是免root所以用到的东西全都是系统api做出来的效果下面说一下具体实现原理,本功能主要用到了AccessibilityService+MediaProjectionManager+文字识别。

第一、辅助功能AccessibilityService无障碍类最初的设计理念是帮助残疾人的但是在国内被做成黑科技 ,比如自动抢红包,自动安装 app,等一些实现场景,这个类可以对每个APP进行监听获取一些view的控件信息! 

第二、MediaProjectionManager这个是5.0以上谷歌开放的API主要功能就是截图当然需要用户开启权限!

  

在这之前读者们可以百度看看这几个相关的API,网上的帖子说的都很不错,不然的话看下面可能会有一些吃力,如果想做到消息同步就首选要确认的是用户是否发送了消息?笔者之前寻思用发送按钮的监听方式 进行get 消息处理,但是发现如果这样的话不可以对对方发送的消息进行获取。

 

也是想了很久,后来发现一件事,我可以对微信聊天页面的ListView 的事件进行监听操作, 在AccessibilityService里面有一个方法可以处理每个 View 各种事件比如单机长按滑动状态变更等,都有很明确的记录,我只需要做到当聊天页面的ListView 的控件进行滑动监听即可获取  有人发送了消息因为微信聊天页面整体是一个ListView (可以通过 DDMS查看对应的控件节点信息 )可以通过DDMS 的方式拿到对应控件信息如下图所示:

640?wx_fmt=png

 

拿到指定的信息以后通过AccessibilityService 提供的 findAccessibilityNodeInfosByViewId(ID)或者ByName方式拿到对应的控件,  返回的是一个List<AccessibilityNodeInfo>

  • 2
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值