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());
    
                                        }
                                    });
                        }
                    });
        }
    }
    

    }

    ···

  • 相关阅读:
    vs2010创建文件夹
    strlen源码,远没有想象中的那么简单、、、、
    排序
    字符数组,字符指针,sizeof,strlen总结
    QT中的QInputDialog的小例子
    QT实现启动画面
    QT中Dialog的使用

    QT中的文件浏览
    Python日期操作
  • 原文地址:https://www.cnblogs.com/c-x-a/p/12582487.html
Copyright © 2011-2022 走看看