美文网首页
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