1. 创建Xposed插件项目
使用Android studio 创建一个新项目
界面显示
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)
4.创建hook类
我们新建一个类,类名随意,然后实现IXposedHookLoadPackage接口,并且重写handleLoadPackage方法,里面就是我们要具体操作的地方,我这里创建了一个XposedInit类
5.声明类的入口
在main目录下创建assets目录,在assets目录下创建xposed_init文件,不要后缀名。这个就是模块的入口,只有一行代码,就是说明入口类
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);
}
});
}
}