前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Xposed源码概述以及衍生的免Root框架

Xposed源码概述以及衍生的免Root框架

作者头像
慕白
发布2020-05-25 16:48:50
2.1K0
发布2020-05-25 16:48:50
举报

Xposed

XPosed是与Cydia其名的工具,它能够让Android设备在没有修改源码的情况下修改系统中的API运行结果。我们通常称之为:God Mode(上帝模式)。

那么,它的原理和它的内部构造是如何构成的?下面,我们从Github上看看,rovo89大神是如何制作的。

项目

说明

Xposed

Xposed框架的native部分(主要是改性app_process二进制文件)

XposedInstaller

Xposed框架的Android端本地管理,环境架构搭建,以及第三方module资源下载的工具。

XposedBridge

Xposed向开发者提供的API与相应的工具类库

Xposed_ART

Xposed为了支持从安卓5.0开始的ART运行模式

XposedTools

这些工具可以用来编译和打包的Xposed框架

XposedInstaller的构成

如下图所示,是我们在XPosedInstaller apk中见到的,安装xposed框架的界面。

InstallerFragment我们能够在其中找到install方法,其中主要就是针对使用不同方式的将自定义的app_process文件替换掉系统的app_process文件。

但是,自从安卓ART模式开启后,即5.0之后。Xposed安装方式就要通过卡刷Zip包来实现,或者直接编译在第三方ROM包。

如图,我的一加5就不可以直接安装Xposed。

Xposed原理

XposedInstaller所有的工作都是为了app_process文件的替换。app_process是andriod app的启动程序

Xposed的实现方案

针对Hook的不同进程来说又可以分为全局Hook与单个应用程序进程Hook,我们知道在Android系统中,应用程序进程都是由Zygote进程孵化出来的,而Zygote进程是由Init进程启动的。

Zygote进程在启动时会创建一个Dalvik虚拟机实例,每当它孵化一个新的应用程序进程时,都会将这个Dalvik虚拟机实例复制到新的应用程序进程里面去,从而使得每一个应用程序进程都有一个独立的Dalvik虚拟机实例。所以如果选择对Zygote进程Hook,则能够达到针对系统上所有的应用程序进程Hook,即一个全局Hook。如下图所示:

HOOK就是传说中的钩子,用于劫持消息。

Xposed可以实现的黑科技

  1. 微信,QQ自动抢红包
  2. 微信,QQ防撤回
  3. 免费下载音乐软件收费内容
  4. 绿色守护控制后台
  5. 修改手机各种各样信息
  6. 破解各种软件

这里还有很多功能不一一列举,有兴趣可以去我的网站看看,后期放出来。

Xposed衍生品介绍

Xposed可以实现非侵入式的在运行期动态修改系统和应用行为的能力,但有着一个巨大的缺点,就是需要Root权限。本文介绍开源框架Depoxsed方案和其二代AndFix。

局限性:不能进行登录劫持了,不能注入广告了,不可以有上述Xposed的全局强大功能了。所以主要用于Hook热修复。

Depoxsed

它的官方介绍如下:

官方

它基于ROOT社区著名开源项目Xposed改造剥离了ROOT部分,演化为服务于所在应用自身的AOP框架,并在Apache 2.0协议下开源。

AOP编程,在线热补丁

没错,Dexposed框架主要的功能,还是提供作为AOP框架使用。这么一来的话,我们之前也介绍过Android的插件实现方式。这里我们所用Dexposed框架来实现的话,插件模型将会更加简单。

如在主线版本中,我们有一个showDialog方法。已经发布出去了。但是,突然发现有一点Bug或者突发性需求,我们不能够理解的发版更新。

1.这里就能够通过之前我们所说的DexClassLoader的方式,载入线上的插件Path.apk。

2.通过Dexposed框架,动态的Hook并替换主线版本中的showDialog函数方法。

具体的逻辑如下图所示:

AndFix

Andfix 是 "Android hot-fix" 的缩写。

AndFix 支持 Android 2.3 - 6.0,ARM 和 x86 架构,dalvik 运行时和 art 运行时。AndFix 的分支是 .apatch 文件。

AndFix的原理就是方法的替换,把有bug的方法替换成补丁文件中的方法。

方法替换过程:

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-05-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档