zoukankan      html  css  js  c++  java
  • xposed hook多个dex的方法

    ···
    package com.example.xposedhook;

    import android.app.Application;
    import android.content.Context;
    import android.util.Log;

    import java.lang.reflect.Method;

    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 Hook implements IXposedHookLoadPackage {

    @Override
    public void handleLoadPackage(final XC_LoadPackage.LoadPackageParam lppararm) throws Throwable {
    
        if (lppararm.packageName.equals("xxx.xxxx.xxxx")) {
            XposedBridge.log("start hook");
    

    // Class clazz = lppararm.classLoader.loadClass("com.xxxx.xxx.xxx.xxx.xxx");
    // XposedHelpers.findAndHookMethod(clazz, "invoke", new XC_MethodHook() {
    //
    // protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
    //
    // super.beforeHookedMethod(param);
    //
    // Log.d("cxa"," has Hooked!");
    //
    // }
    //
    // protected void afterHookedMethod(MethodHookParam param) throws Throwable {
    // Object[] ars=(Object[])param.args[2];
    // Log.d("cxa",ars.toString());
    //
    // }
    //
    // });
    //hook 多dex
    XposedHelpers.findAndHookMethod(Application.class, "attach",
    Context.class, new XC_MethodHook() {
    @Override
    protected void afterHookedMethod(MethodHookParam param) throws Throwable {
    ClassLoader cl = ((Context) param.args[0]).getClassLoader();
    Class<?> hookclass = null;
    try {
    hookclass = cl.loadClass("com.kuaishou.android.security.kfree.a");
    } catch (Exception e) {
    Log.e("DEBUG", "load class error", e);
    return;
    }
    Log.i("DEBUG", "load success");
    XposedHelpers.findAndHookMethod(hookclass, "invoke", Object.class, Method.class, Object[].class,
    new XC_MethodHook() {
    //TODO: 相关hook操作
    protected void beforeHookedMethod(MethodHookParam param) throws Throwable {

                                            super.beforeHookedMethod(param);
    
                                            Log.d("cxa", " has Hooked!");
    
                                        }
    
                                        protected void afterHookedMethod(MethodHookParam param) throws Throwable {
                                            Object[] ars = (Object[]) param.args[2];
                                            Log.d("cxa", ars[0].toString());
    
                                        }
                                    });
                        }
                    });
        }
    }
    

    }

    ···

  • 相关阅读:
    xxl-job docker版分布式任务
    nginx学习http_access_module模块
    nginx学习sub_filter模块
    nginx学习首页随机模块
    mysql使用命令
    laravel数据填充
    LINUX下统计代码行数
    检查字符串结尾 判断一个字符串(str)是否以指定的字符串(target)结尾。
    右边大数组中包含了4个小数组,分别找到每个小数组中的最大值,然后把它们串联起来,形成一个新数组。
    确保字符串的每个单词首字母都大写,其余部分小写。
  • 原文地址:https://www.cnblogs.com/c-x-a/p/12582487.html
Copyright © 2011-2022 走看看