ctrlC & ctrlV

我们不生产代码,我们只是代码的搬运工~

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

安卓Hook的作用

可以在没有某个安卓App代码的情况下,直接通过下钩子的方式,对App内部的方法进行拦截和二次处理,动态的修改App运行逻辑,以达到修改或添加其功能的目的。
典型应用场景:
  1、微信防消息撤回(通过拦截消息撤回方法,使之无法运行,进而达到消息无法撤回目的)

  2、微信自动抢红包功能(通过拦截接收消息的方法,判断消息类型,如果是红包类消息,则直接调用App内部的打开微信红包方法)

  3、修改GPS定位位置(拦截定位方法,并修改返回的定位参数)

安卓Hook需要准备的运行环境

  对于初学者,其实上手写一个测试的Hook模块非常容易,复制粘贴的话,几分钟就搞好了,麻烦往往在准备运行环境上

  模块运行环境最重要的,绕不开的两个必要条件:

    1、手机Root

    2、手机刷入Xposed框架【来自维基百科的解释,Xposed(也被称作Xposed框架、XP框架、Xposed framework),是一个运行于Android操作系统的钩子框架。其通过替换Android系统的关键文件,可以拦截几乎所有Java函数的调用,并允许通过Xposed模块中的自定义代码更改调用这些函数时的行为。因此,Xposed常被用来修改Android系统和应用程序的功能。】

  关于运行环境准备的困境与解决方案:

    【困境】现在新款主流手机菊花厂、OV厂、小米等,Root越来越麻烦(解锁BL,刷三方Recovery,刷入框架Root,整个运行环境配置过程短则几小时、1天,多则几天,还有刷机失败,变板砖风险),或者完全无法Root。那么需要一些其他手段来解决。

    【解决方案】目前查到比较主流不Root手机并且有Xposed环境的解决方案,大概如下:
        VMOS:你可以把他理解为一个能在 Android 手机上运行的安卓虚拟机,里边提供了完整的Root及Xposed框架支持。只需下载虚拟机,安装,运行,打开Root、Xposed框架功能,就提供了一套完整的写Hook模块的环境。整个过程能在10分钟左右搞定。
        太极(Copy 自官网介绍):

         虽然太极是一个 类 Xposed 框架,但是它本身与 Xposed 没有任何关系。唯一有点关系的可能是太极能够兼容 Xposed 模块,除此之外,二者从设计思路、实现机制到运作逻辑完全不同。

         以下是太极一些独有的特性:

         1、太极完全支持 Android 5.0 ~ 11。
         2、太极能以免 Root/免刷机模式运行。
         3、太极不影响全局。可以只对特定的应用开启 Xposed 功能,无需使用 Xposed 的 APP 运行起来就跟系统没有 Xposed 一样;这意味着太极能轻松绕过 SafetyNet 检测,完美契合某些金融/银行/奇葩类 APP。
         4、在大部分情况下,太极中的模块无需重启即刻生效。
         5、太极更不易被检测。太极的弱侵入特性不再修改 ART 运行时,也不在全局环境中留下任何踪影;因此只要想要做到,可以轻松逃过各种代码类型的检测。
         6、太极支持给模块设置生效范围,可以让指定的模块只对特定的 App 生效

Xposed、Magisk、Edxposed、[模块或插件]四者关系

   Xposed:是大神rovo89开发的安卓钩子框架,早前所有的Hook模块应用都是基于这个框架才运行的起来。遗憾的是,在18年1月适配了安卓8.0之后,大神就停止了维护不再更新了。所以安卓8.0及以下的同学可以刷它。
   Magisk:是出自一位台湾学生 @topjohnwu 开发的安卓钩子框架,只要你能在机器解锁的情况下刷入,一般是能够完美运行的。博主在自己的安卓9上已经刷入,完美运行。安卓9.0及以上的同学推荐刷它。这是目前的主流Root手机和使用模块的方式。

  EdXposed:在刷入Magisk后,使用Magisk安装EdXposed模块。安装后,就可以完美使用各种模块,兼容通过 Xposed开发的模块。解决了Xposed不能在安卓9以上机器运行的问题。

  模块或插件:就是指在这些钩子框架上最终出产的成品,就是上边说的微信消息防撤回之类的具体模块功能。举例来说一个插件,你听一下,微信被Hook后实现的功能:

WechatMagician是一款骚兮兮的Xposed插件,实现功能:

聊天相关
  防止微信好友撤回聊天消息(撤回提示可自定义)。
  转发消息时可选择任意数量好友。
  发送消息时可发送9张以上的图片(上限可调整,默认1000张)。
  隐藏不常用的群聊至群聊助手。(需在设置界面手动开启)
  设定好友为密友,隐藏聊天痕迹。(需在设置界面手动开启)
  一键标记所有聊天对话为已读。
朋友圈相关
  防止微信好友删除朋友圈动态、评论。
  屏蔽微信在朋友圈投放的广告。
  一键转发他人朋友圈。
  单条朋友圈一键截图。
  按关键字屏蔽朋友圈,免除广告与秀恩爱的烦恼。(需在设置界面手动开启)
其他杂项
  自动确认电脑端登录请求(开启该功能即视为用户同意自行承担可能的安全风险)。

怎么样?是不是有点想说句真TM屌?

  

Xposed、Magisk的一些差别

  从上边的一个WechatMagician插件你能够看到,一但使用了Hook技术,基本上可以说是把一个三方软件随意揉捏了。如果你是三方软件厂商肯定也会不爽的,对吧?那么目前市面上一些软件就会通过技术手段来检测你是否使用了安卓钩子框架或手机进行了Root,如果发现你手机使用了,就有可能会不让你使用App或者是提示你如果再使用就要封号。根据反馈,市面说比较典型的就是银行类App会检测手机Root状态,下厨房App会检测是否有钩子框架,据说微信在世界杯期间因为利用Hook技术赌球的太多,也封了一部分使用Xposed框架的账号。

那么说回到两个框架之间的差异,Xposed就比较容易被检测到,而Magisk自带的Magisk Hide功能能够隐藏 Magisk的root权限,让三方App检测不出来手机是否Root。再配合Magisk Manager的设置中打开【隐藏 Magisk Manager】,这下连是否安装了Magisk都检测不到了。当然除了这些,两个框架虽然都是安卓钩子框架,他们的实现原理也是完全不一样的。Magisk因为特殊的实现机制,甚至能够做到【无痛 OTA 升级】,说通俗点就是一但安装了Xposed,就再也无法享受到安卓手机的系统升级功能了,而Magisk不影响,自由随手机升级最新版的Rom,具体原理篇幅有限,详情看这里1 看这里2

 

posted on 2020-09-28 10:58  Rocky_  阅读(1764)  评论(0编辑  收藏  举报