Xposed为你开启一扇窗

Xposed为你开启一扇窗

Xposed框架是一款可以在不修改APK的情况下影响程序运行(修改系统)的框架服务,基于它可以制作出许多功能强大的模块,且在功能不冲突的情况下同时运作,在这个框架下,我们可以加载很多插件App,这些插件App可以直接或间接劫持、篡改、伪造一些信息。

原理探究

Android平台的动态劫持,通过替换/system/bin/app_process程序控制zygote进程,使得app_process在启动过程中会加载XposedBridge.jar这个jar包,从而完成对Zygote进程及其创建的Dalvik虚拟机的劫持。理论上我们的插件APP可以hook到系统任意一个Java进程zygote、systemserver、systemui。

原理就不讲那么多了,网上有很多分析的文章,比如:

Xposed框架原理深入研究

https://blog.youkuaiyun.com/ascii2/article/details/47974217

Dalvik虚拟机原理及Xposed hook原理

https://cloud.tencent.com/developer/article/1193511

Android Hook框架Xposed原理与源代码分析

https://blog.youkuaiyun.com/wxyyxc1992/article/details/17320911

不得不稍微提一下:Method中,有两个非常重要的指针:

54 /*
 55  * The remaining items are not used for abstract or native methods.
 56  * (JNI is currently hijacking "insns" as a function pointer, set
 57  * after the first call.  For internal-native this stays null.)
 58  */
 59 
 60 /* the actual code */
 61 const u2*   insns;  /* instructions, in memory-mapped .dex */
 66 /*
 67  * JNI: native method ptr; could be actual function or a JNI bridge.  We
 68  * don't currently discriminate between DalvikBridgeFunc and
 69  * DalvikNativeFunc; the former takes an argument superset (i.e. two
 70  * extra args) which will be ignored.  If necessary we can use
 71  * insns==NULL to detect JNI bridge vs. internal native.
 72  */
 73 DalvikBridgeFunc nativeFunc;

有兴趣的可以去研究一下,这里不做赘述。

免Root使用 Xposed 模块

VirtualXposed,英文原话“A simple app to use Xposed without root, unlock the bootloader or modify system image, etc. “,翻译:“使用VirtualXposed可以免root、不用解锁bootloader或修改系统镜像”。

官方文档:https://vxposed.com/

GitHub:https://github.com/android-hacker/VirtualXposed

Xposed组成部分

Xposed的C++部分

主要是用来替换/system/bin/app_process并为XposedBridge提供JNI方法。

XposedInstaller

Xposed的安装包,负责配置Xposed工作的环境并且提供对基于Xposed框架的Modules的管理。

在安装XposedInstaller之后,app_process与XposedBridge.jar放置在了/data/data/de.robv.android.xposed.installer

XposedTools

XposedTools就是用来帮助我们编译Xposed和XposedBridge的

XposedMods

开发者使用Xposed开发的一些Modules

Xposed使用

如何集成

AndroidManifest.xml

<meta-data
    android:name="xposedmodule"
    android:value="true" />
<meta-data
    android:name="xposeddescription"
    android:value="省略一万字,想写啥就写啥~~~" />
<meta-data
    android:name="xposedminversion"
    android:value="54" />

assets/xposed_init 此文件内容添加Xposed入口类路径

d.xposedshare.hook.MainHookLoad

app/lib/ 此路径下,集成XposedBridgeAPI-89.jar,

build.gradle中添加 compileOnly files(‘lib/XposedBridgeAPI-89.jar’)

然后,我们就可以在Xposed Installer中看到我们自己定义的模块了。

注意:在运行Xposed之前,需要把Install Run去掉哦。每次修改运行HOOK相关之处的代码,都需要重启手机!

演示

我是如何分析的?

打开App,比如这个页面,为了不增加收入,就把码给挡住了,;-)

image

这样我们在用Accessibility拿到当前页面的ClassName,比如这样:

image

这样就给我们反编译出来的代码找到了分析入口。对就从这个类下手。className====类路径+类名。className在xposed框架使用时,用来拿到class。

接下来我们使用Apktools打开需要学习的App,慢慢读起来,学习到很多优秀之处。

解压反编译包的资源

image

找到二维码页面的Activity:

image

找到相关组件Field:

image

在分析的过程中,发现了一个点,对于我们熟悉App的个别模块的逻辑由很大帮助,

<think>好的,我现在需要帮助用户在Mumu模拟器中安装和使用Xposed框架。首先,我得回顾一下用户提供的引用内容,看看里面有哪些关键步骤和注意事项。根据引用中的信息,用户已经尝试过一些方法,比如安装特定版本的XposedInstaller APK,使用ADB命令推送框架文件,以及通过Magisk模块安装LSPosed。不过用户可能遇到了问题,比如安装后的兼容性或者步骤中的细节错误。 首先,我需要整理出清晰的步骤。根据引用[3]和[5],用户需要先安装XposedInstaller APK,然后通过ADB推送框架文件到指定目录。引用[4]提到使用Magisk和LSPosed的方法,这可能是一个替代方案,特别是针对较新版本的安卓系统,比如安卓12。另外,引用[2]提到用户担心真机兼容性,所以转用模拟器,这说明模拟器的版本和安卓版本可能影响安装步骤。 接下来,我需要确保每一步都正确无误。比如,在安装XposedInstaller时,是否需要特定版本?引用[3]提到使用3.1.5版本,而引用[5]使用v89的框架文件。同时,用户需要注意模拟器的root权限,引用[3]提到需要SuperSU授权,所以步骤中应该包括启用root的步骤。可能还需要重启模拟器,这在引用[3]和[4]都有提到。 另外,用户可能遇到的问题包括ADB连接失败、文件路径错误、框架安装后无法激活等。需要在这些步骤中加入检查点,比如确认ADB设备是否识别,文件路径是否正确,以及安装后如何验证是否成功。 关于不同的安装方法,用户可能更倾向于简单的方法,比如直接安装APK,但如果遇到兼容性问题,可能需要使用Magisk方式。引用[4]提到使用安卓12的模拟器,所以可能需要区分不同安卓版本的安装流程。例如,旧版Mumu可能运行的是安卓6,而新版可能支持更高版本,这时候需要不同的框架文件。 最后,需要提醒用户注意备份数据,因为安装框架可能导致系统不稳定,引用[2]中用户担心真机的问题,同样适用于模拟器。同时,推荐一些常用模块,帮助用户开始使用Xposed的功能。 总结下来,步骤应包括:准备环境(开启root,安装ADB驱动)、安装XposedInstaller、推送框架文件、激活模块、重启验证。同时提供备选方案(Magisk+LSPosed)和常见问题解决方法。确保每个步骤清晰,并参考用户提供的引用内容来支持说明,比如引用[5]中的ADB命令路径。</think>### 如何在MuMu模拟器中安装和使用Xposed框架? #### 一、准备工作 1. **开启MuMu模拟器的Root权限** - 进入MuMu设置 → 其他设置 → 勾选“Root权限”(部分版本需通过开发者选项开启)[^3]。 2. **安装ADB工具** - 下载并配置Android SDK Platform-Tools,确保`adb`命令可用。 --- #### 二、安装Xposed框架(传统方法) 1. **安装XposedInstaller APK** - 下载`XposedInstaller_3.1.5.apk`(适配Android 5.0-6.0)。 - 拖拽APK文件到模拟器窗口,或通过命令安装: ```bash adb install XposedInstaller_3.1.5.apk ``` 2. **推送框架文件到指定目录** - 下载框架文件`xposed-v89-sdk23-x86.zip`(适配Android 6.0)[^5]。 - 使用ADB命令上传文件: ```bash adb push xposed-v89-sdk23-x86.zip /sdcard/Android/data/de.robv.android.xposed.installer/cache/downloads/framework/ ``` 3. **激活框架** - 打开Xposed Installer → 进入“框架”页面 → 点击“安装/更新” → 按提示重启模拟器。 --- #### 三、替代方案(Magisk + LSPosed,适配高版本安卓) 1. **安装Magisk** - 下载Magisk APK并安装,通过修补镜像或直接刷入方式获取Root权限。 2. **安装LSPosed模块** - 在Magisk模块仓库中搜索并安装`LSPosed-v1.7.0-6353-riru-release.zip`[^4]。 - 重启模拟器后,通过LSPosed管理模块。 --- #### 四、验证与使用 1. **检查框架状态** - 打开Xposed Installer → 若“框架”页面显示“已激活”,则安装成功[^3]。 2. **安装模块** - 推荐模块:绿色守护、重力工具箱等(需适配模拟器架构)。 --- #### 五、常见问题 1. **ADB无法连接** - 检查模拟器的“开发者选项”中USB调试是否开启。 2. **框架激活失败** - 确保框架文件与模拟器安卓版本匹配(如Android 6.0需SDK 23)[^5]。 3. **系统卡在启动界面** - 尝试清除模拟器数据或重新安装框架。 --- #### 注意事项 - **备份数据**:安装框架可能导致系统不稳定,建议提前备份模拟器数据。 - **兼容性**:MuMu模拟器若为安卓12版本,需使用Magisk+LSPosed方案[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值