package com.example.test4xposed; import static de.robv.android.xposed.XposedHelpers.findAndHookMethod; import de.robv.android.xposed.IXposedHookLoadPackage; import de.robv.android.xposed.XC_MethodHook; import de.robv.android.xposed.XposedBridge; import de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam; public class Main implements IXposedHookLoadPackage { /** * 包加载时候的回调 */ public void handleLoadPackage(final LoadPackageParam lpparam) throws Throwable { // 将包名不是 com.example.test4xposed 的应用剔除掉 if (!lpparam.packageName.equals("com.example.test4xposed")) return; XposedBridge.log("Loaded app: " + lpparam.packageName); findAndHookMethod( "com.example.test4xposed.MainActivity", lpparam.classLoader, "testFunction", String.class, String.class, new XC_MethodHook() { @Override protected void beforeHookedMethod(MethodHookParam param) throws Throwable { XposedBridge.log("beforeHookedMethod"); XposedBridge.log("参数1 = " + param.args[0]); XposedBridge.log("参数2 = " + param.args[1]); // 若注释掉下面这行,并用adb logcat -s test查看,会看到log param.setResult("try prevent the origin call"); } @Override protected void afterHookedMethod(MethodHookParam param) throws Throwable { XposedBridge.log("afterHookedMethod"); XposedBridge.log("参数1 = " + param.args[0]); XposedBridge.log("参数2 = " + param.args[1]); } @Override protected void call(Param param) throws Throwable { super.call(param); XposedBridge.log("call~"); } }); } }