Android XPosed 详细教程
2023-05-08 本文已影响0人
苏村的南哥
Android XPosed 详细教程
pexels-pixabay-358454.jpg一、在 Android Studio
创建一个 Module
选择 Empty Activity
二、项目导入
在app/build.gradle
中配置
dependencies {
compileOnly 'de.robv.android.xposed:api:82'
}
三、在AndroidManifest.xml
application节点下配置模块信息
<!-- 是否是xposed模块,xposed根据这个来判断是否是模块 -->
<meta-data
android:name="xposedmodule"
android:value="true" />
<!-- 模块描述,显示在xposed模块列表那里第二行 -->
<meta-data
android:name="xposeddescription"
android:value="测试Xposed模块" />
<!-- 最低xposed版本号(lib文件名可知) -->
<meta-data
android:name="xposedminversion"
android:value="30" />
四、新建Hook
类
package com.knight.xposeddemo;
import android.telephony.TelephonyManager;
import de.robv.android.xposed.IXposedHookLoadPackage;
import de.robv.android.xposed.XC_MethodHook;
import de.robv.android.xposed.XC_MethodReplacement;
import de.robv.android.xposed.XposedBridge;
import de.robv.android.xposed.XposedHelpers;
import de.robv.android.xposed.callbacks.XC_LoadPackage;
public class MyXposedModule implements IXposedHookLoadPackage {
@Override
public void handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam) throws Throwable {
XposedBridge.log("开始--handleLoadPackage---");
if (lpparam.packageName.equals("com.develop.test")) {
XposedBridge.log("开始hook测试程序");
//hook类调用方法
XposedHelpers.findAndHookMethod(TelephonyManager.class, "getDeviceId", new XC_MethodReplacement() {
@Override
protected Object replaceHookedMethod(MethodHookParam param) throws Throwable {
return "momoxiaoming";
}
});
//hook 类名+方法名所在方法
XposedHelpers.findAndHookMethod("com.fancy.demo.ui.LoginActivity", lpparam.classLoader, "dexLoadTest", new XC_MethodHook() {
@Override
protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
super.beforeHookedMethod(param);
XposedBridge.log("Hook后...");
}
@Override
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
super.afterHookedMethod(param);
XposedBridge.log("Hook前...");
}
});
}
}
}
五、在assets
目录下创建xposed_init
文件
内容填写为上面的hook类的包名+类名
六、安装程序
- 下载
XpseInstall
- 在
XpseInstall
安装测试程序和被测试程序
七、测试Hook
将程序和被hook的程序装入手机,勾选Xpose模块,重启手机,点击被hook程序按钮,查看代码是否已被拦截