美文网首页
Android XPosed 详细教程

Android XPosed 详细教程

作者: 苏村的南哥 | 来源:发表于2023-05-08 17:40 被阅读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类的包名+类名

六、安装程序

  1. 下载XpseInstall
  2. XpseInstall安装测试程序和被测试程序

七、测试Hook

将程序和被hook的程序装入手机,勾选Xpose模块,重启手机,点击被hook程序按钮,查看代码是否已被拦截

相关文章

网友评论

      本文标题:Android XPosed 详细教程

      本文链接:https://www.haomeiwen.com/subject/lqulsdtx.html