美文网首页
Xposed插件开发流程

Xposed插件开发流程

作者: SodaCrush | 来源:发表于2021-01-16 00:34 被阅读0次

开发流程备忘

基于AndroidStudio开发xp插件基本步骤

    1. 新建Project(No/Empty Activity)
    1. android模式切换到project模式
    1. 找到/app/src/main下的AndroidManifest.xml 并在application内添加以下内容:
<meta-data
    android:name="xposedmodule"
    android:value="true" />
<meta-data
    android:name="xposeddescription"
    android:value="插件描述文字" />
<meta-data
    android:name="xposedminversion"
    android:value="30" />
    1. 找到build.gradle文件并添加以下内容
repositories {
    jcenter()
}

dependencies新增如下内容, 新增完成后点击Sync:

compileOnly 'de.robv.android.xposed:api:82'
compileOnly 'de.robv.android.xposed:api:82:sources'
    1. /app/src/main/java/包路径/下找到MainActivity, 在同级目录下新建名为Main或者其他名字的Class, 该Class即Hook入口点
    1. main下新建folder选择assets, 并在该目录下新建xposed_init文件(txt类型即可)
      文件写入Hook脚本入口Class, 例如 pkg.MyClassName
    1. 实现Main Class内部逻辑
package com.willson.myapplication;

import android.widget.TextView;
import de.robv.android.xposed.IXposedHookLoadPackage;
import de.robv.android.xposed.XC_MethodHook;
import de.robv.android.xposed.XposedBridge;
import de.robv.android.xposed.XposedHelpers;
import de.robv.android.xposed.callbacks.XC_LoadPackage;

public class Main implements IXposedHookLoadPackage {
    @Override
    public void handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam) throws Throwable{
        if(lpparam.packageName.equals("com.willson.firstapp")) {
            XposedBridge.log("测试程序加载成功");
            XposedBridge.log("开始劫持com.willson.firstapp包");
            XposedHelpers.findAndHookMethod(TextView.class, "setText", CharSequence.class, new XC_MethodHook() {
                @Override
                protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
                    if(param.args[0].toString().startsWith("支付宝到账:")){
                        XposedBridge.log("成功Hook到setText方法");
                        param.args[0] = "支付宝到账: ¥10,000,000";
                        XposedBridge.log("修改成功!");
                    }
                }

                @Override
                protected void afterHookedMethod(MethodHookParam param) throws Throwable {
                    super.afterHookedMethod(param);
                    XposedBridge.log("Hook Done!");
                }
            });
        }
    }
}

相关文章

网友评论

      本文标题:Xposed插件开发流程

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