Xposed与EdXposed框架搭建
本文将介绍 Android 5.0 ~10.0 版本 模拟器 与 真机 Xposed/EdXposed 框架的搭建,并提供一个 hook 示例
MuMu 模拟器 Xposed 框架搭建
PS. 该方法适用 Android 5.0 ~ 8.1 的模拟器
1.打开 root 权限
点击右上角三条横杠的图标,选择 设置中心
在基本设置中勾选 开启 root 权限,保存并重启模拟器
2.从 网站 下载 Xposed 最终版 apk 并在模拟器中安装
3.打开安装好的 Xposed Installer
,点击 Version89,选择 Install
4.等待一会儿,没有出现红字表示安装成功,应该会提示重启手机生效,如果没有提示就手动重启。再次打开 Xposed Installer
显示框架激活成功,即可开始 hook 之旅
OnePlus 真机 EdXposed 框架搭建
PS. 此方法目前适用 Android 8.0 ~ 10.0,需要手机 root 权限
这里假设手机已经刷入了第三方 recovery 及通过 Magisk 获取了 root 权限,作者在 github 上这样写到:
1.首先挂个到 M 国的梯子,打开 Magisk Manager
,进入模块界面(旧版本在下载中),在线模块中会出现很多仓库中的模块
2.直接搜索 riru,先安装 Riru - core,重启后安装 Riru - EdXposed,再重启一次
3.到 github 上下载配套的 EdXposed Manager 并安装、重启
4.打开 EdXposed Manager,出现如下界面表示框架安装成功,剩下的模块开发流程与 Xposed 相同
EdXposed Hook 示例
这里以 OnePlus 真机(Android 9)为例,Xposed 框架与其操作完全相同,开发 IDE 使用 Android Studio 4.0.1
示例 APP
下面是被 hook 程序 MainActivity
代码,该 app 只是简单的将 Hello World! 显示在中央:
1 | package com.example.helloword; |
界面:
本例的目标是 hook GetWelcomeString()
函数,使软件显示 Hello World! - Hooked
创建并配置 Hook 项目
创建新的 EdXposed 项目,并添加新 Java 类,命名为 HookMain
app 层级下创建一个目录 mylib,下载 XposedBridgeApi-54.jar 并拷贝到 mylib 中(不要直接放在 libs 目录中)
右键该 jar 包,选择 Add As Library…,弹出窗口中选择 OK
打开 app\src\build.gradle
,找到 dependencies,删除 implementation files(‘mylib\XposedBridgeApi-54.jar’),添加 compileOnly ‘de.robv.android.xposed:api:82’。有的教程里还在用 provided 关键字,该关键字已经被废弃,取而代之的是 compileOnly
编辑 AndroidManifest.xml
,在 application 标签下为模块添加 meta-data 描述
1 | <meta-data android:name="xposedmodule" android:value="true" /> |
最后需要告诉框架此模块的入口类在哪里
创建 assets 文件夹
在 assets 文件夹下创建 xposed_init 文件
写入 HookMain 的路径
编写 Hook 代码
如图:
安装运行
将该 hook 用的 apk 安装到手机上,在 EdXposed Manager 中打开模块视窗,激活该模块
重启后打开 HelloWorld 的 app,可以看到,已经被 Hook 了