Xposed开发入门(1)---检查自己Xposed模块是否激活

1. 创建Xposed插件项目

使用Android studio 创建一个新项目


image.png

界面显示

image.png

2. 导入Xposed的api库

方法1:
Android Studio的依赖:

repositories {
    jcenter();
}

dependencies {
    provided 'de.robv.android.xposed:api:82'
}

方法2: 下载jar包
地址: https://bintray.com/rovo89/de.robv.android.xposed/api

3.在AndroidManifest.xml配置

创建Xposed项目后,还需要在AndroidMenafest.xml文件里面声明Xposed模块,在application里面添加三个meta-data标签(xposedmodule、xposeddescription、xposedminversion)

image.png

4.创建hook类

我们新建一个类,类名随意,然后实现IXposedHookLoadPackage接口,并且重写handleLoadPackage方法,里面就是我们要具体操作的地方,我这里创建了一个XposedInit类


image.png

5.声明类的入口

在main目录下创建assets目录,在assets目录下创建xposed_init文件,不要后缀名。这个就是模块的入口,只有一行代码,就是说明入口类


image.png

5.编写Xposed代码

public class XposedInit implements IXposedHookLoadPackage {
private String TAG="XposedInit";

@Override
public void handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam) throws Throwable {
    if (lpparam.appInfo == null || (lpparam.appInfo.flags & (ApplicationInfo.FLAG_SYSTEM |
            ApplicationInfo.FLAG_UPDATED_SYSTEM_APP)) != 0) {
        return;
    }
    String packageName = lpparam.packageName;//应用包名
    String processName = lpparam.processName;//
    ClassLoader classLoader = lpparam.classLoader;
  /*   重写XC_MethodHook的两个方法beforeHookedMethod和afterHookedMethod,
    这两个方法会在原始的方法的之前和之后执行.
            您可以使用beforeHookedMethod 方法来打印/篡改方法调用的参数(通过param.args)
            ,甚至阻止调用原来的方法(发送自己的结果).
    afterHookedMethod 方法可以用来做基于原始方法的结果的事情.您还可以用它来操纵结果 .
            当然,你可以添加自己的代码,它将会准确地在原始方法的前或后执行.*/
    if(BuildConfig.APPLICATION_ID.equals(packageName)){
        //om.xposed_wechat.xz.MainActivity   需要Hook类名
        //showIsXposedStart   需要Hook类名下面的方法名
        XposedHelpers.findAndHookMethod("com.xposed_wechat.xz.MainActivity", classLoader,
                "showIsXposedStart", boolean.class, new XC_MethodHook() {
                    @Override
                    protected void afterHookedMethod(MethodHookParam param) throws Throwable {
                        super.afterHookedMethod(param);
                        //
                    }

                    @Override
                    protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
                        param.args[0]=true;
                        super.beforeHookedMethod(param);
                    }
                });
    }


}

6.在Xposed勾选模块开启本地服务,重启设备,打开软件就可以看到显示已经激活成功了

image.png

你可能感兴趣的:(Xposed开发入门(1)---检查自己Xposed模块是否激活)