hook 普通方法

```java package com.example.hook; import android.util.Log; import java.util.ArrayList; import java.util.Map; 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.LoadPackageParam; public class Hook implements IXposedHookLoadPackage { public void handleLoadPackage(final LoadPackageParam lpparam) throws Throwable { Log.d("Rw", "hook..."); // hook 是一个全局的hook 我们不想让他hook 所有的app 所以我们需要判断下包名 if(!lpparam.packageName.equals("com.xiaojianbang.xposeddemo")){return;} // 获取一个类的字节码 有很多方式 下面是xp 提供的api Class<?> 是标示一个泛型 lpparam.classLoader 是类选择器 一般都是这个 Class<?> Demo_Clazz = XposedHelpers.findClass("com.xiaojianbang.xposeddemo.Demo",lpparam.classLoader); // hook 普通方法 复杂参数 XposedHelpers.findAndHookMethod(Demo_Clazz, "complexParameterFunc", String.class, String[][].class, Map.class, ArrayList.class, new XC_MethodHook() { @Override protected void beforeHookedMethod(MethodHookParam param) throws Throwable { Log.d("Rw", "hook 了 普通方法 复杂参数..."); } @Override protected void afterHookedMethod(MethodHookParam param) throws Throwable { } }); // hook 自定义参数的 方法 XposedHelpers.findAndHookMethod(Demo_Clazz, "Inner", XposedHelpers.findClass("com.xiaojianbang.xposeddemo.Animal", lpparam.classLoader), String.class, new XC_MethodHook() { @Override protected void beforeHookedMethod(MethodHookParam param) throws Throwable { Log.d("Rw", "hook了自定义参数..."); } @Override protected void afterHookedMethod(MethodHookParam param) throws Throwable { }; }); }; } ```