大家都知道,用Xposed框架必须要root,但现在root成功率越来越低,大大提高了使用门槛。看似无解的问题,其实可以通过沙箱技术解决。
市面上典型利用沙箱技术的应用是双开类应用,今天介绍的这块应用,不仅稳定支持双能开,更支持运行xposed框架 插件,真正做到免root,甚至不用安装xposed框架,就能玩转各种插件了。可谓是广大机友的福音。
下面这篇文章将分为功能介绍和技术原理两部分,由于技术原理比较深奥,对技术感兴趣的同学可以直接跳到文章后半部分观看。欢迎互相讨论!
首先说功能部分。该应用是<分身大师X版>,是基于分身大师提出的升级版本。据我所知也是市面上唯一一款大厂出品的xposed双开软件。
【版本功能】
1. 免root免刷机,甚至不用安装xposed模块,直接在分身大师内部运行xposed插件!
2. 首批支持的功能有:自动抢红包,本地修改余额,伪装地理位置,伪装设备信息等;
笔者亲测了几个功能,本地修改余额和自动抢红包都实现了,免去了root的烦恼,确实方便太多。
点击xposed插件,进入到列表页
注意:xposed插件只针对分身里的应用有效,对手机中的原生应用无效。这点请大家注意!
首次进去会有使用说明,说明xposed里的插件模块都是第三方开发者提供的,和分身大师本身没有关系。
点击同意后进入到xposed插件列表,选择一个模块比如自动抢红包,点击卡片进入到功能说明页面,点击下载。
在此必须说明一下,部分用户会担心是否会造成微信封号,风险确实是有的!!但是相比市面上其他同类APP,风险是比较小的,请大家酌情使用。
这个是功能详情页的页面,在这里下载xposed插件。
4. 回到列表页,下载好之后点击启用,进入插件功能设置页面。抢红包功能不需要做任何更改直接就能用了。
5. 现在可以自动抢红包了!!亲测效果有效:
其他功能大家自己试试吧。整体看,大部分插件可以用,部分还不支持,估计后续还会继续优化。
好了,下面从技术层面阐述实现原理,阅读时间大概7分钟。
免root免刷机,用分身大师玩转Xposed插件
一、 初识Xposed
Xposed开源代码网址是https://github.com/rovo89。Xposed代码工程结构如下图所示,
Xposed实现基本原理是使用改造后的app_process替换Android系统中的app_process(art虚拟机还会替换libart.so),这需要root权限或者刷机才能实现。不需要root或者刷机的情况下,能否实现在Android应用程序中运行Xposed插件? 下一章节将对此问题进行探讨。
二、 不root不刷机,在分身大师中运行Xposed插件
Xposed插件大体可以分为两类,一类是修改Android系统的,比如重力工具箱;一类是修改Android应用的,比如微X模块。修改系统,无论从哪个实现路径来讲,都是需要root或者刷机的,本文不探讨此类插件。那么剩下的一类修改Android应用的插件是否可以在不root不刷机的情况下在应用中运行?
Xposed插件需要运行在宿主应用进程中才能完成相应的功能。不root不刷机,支持Xposed插件在应用中运行,一个核心问题是如何注入Xposed插件代码到宿主应用进程中;另一个核心问题是在宿主应用进程中如何提供Xposed插件运行环境。
1. 应用双开
对于如何注入Xposed插件代码到宿主应用进程中的问题,从Android的进程沙箱隔离机制来看,两个Android应用之间,在不拥有root权限的情况下,一个Android应用是不可能把代码注入到另外一个Android应用进程。但是在一个Android应用内部或者是一个进程内部是可行的,不存在权限问题。
由此引申出,在一个Android应用内,如何运行另外一个Android应用(Xposed插件的宿主进程)?应用双开 是一个很好的解决方案。分身大师是其中很经典的一款应用,核心是利用沙箱技术虚拟化一个Android系统。
所谓Android虚拟化技术,就是利用Hook技术和沙箱机制,在一个Android应用中模拟出一个Android系统。双开的App运行在虚拟化出来的Android系统中,与外部的Android系统完全隔离。
下图双开类应用的进程模型示意图,所有进程的UID是相同的。
解决了Xposed插件宿主应用的运行问题后,如何注入Xposed插件代码到宿主应用进程并在宿主应用进程中提供Xposed插件运行环境?
2. Xposed插件运行环境
首先,需要移植Xposed框架。Xposed框架移植涉及到两部分,一部分是Xposed框架C 部分的移植,具体是Javahook native库(libxposed_ dalvik.so和libxposed_art.so)的移植;一部分是Xposed 框架Java部分的移植,具体是XposedBridge.jar的移植。
双开应用的进程(如微信的进程)是一个进程中双Application同时运行,一个Application是Host Application(双开类应用自己的Application),一个Application是双开应用(如微信)的Application。将上图中的双开应用(如微信)的进程1放大细化,如下图所示,
在一个双开应用(如微信)进程中,首先启动的是Host Application,在双开应用(如微 信)的Application启动之前,我们可以通过DexClassloader将XposedBridge.jar代码注入到双开应用(如微信)进程中。将XposedBridge.jar代码注入后,调用其入口main函数,先准备Xposed插件运行环境(主要是Java hook so库载入),接着加载Xposed插件并调用其入口函数,Xposed插件便开始启动运行在双开应用进程(如微信)中。
总结:
经过从技术角度的分析,探讨了不root不刷机情况下,在Android应用中运行Xposed插件的技术实现路径,给出了实现路径的理论支持。在市场上,已经出现了支持Xposed插件运行的应用“分身大师xposed专版”,它是360出品的双开类App,其已实现在双开的应用中运行Xposed插件。从该产品来看,不root不刷机情况下,支持应用中运行Xposed插件完全具有可行性。
最后,Xposed是一个依赖高超技术实现的工具,它不仅带来了效率的提升,而且还带来了一些意想不到的功能。应用双开是沙箱技术在Android系统上大胆探索,勇于创新取得的成果,其有效解决了Android应用的多帐户问题。相信二者的结合,定能给用户带来惊喜的功能。
,