xposed hook所有类的所有函数

xposed hook所有类的所有函数

package com.xiaojianbang.xposed;

import android.util.Log;
import de.robv.android.xposed.IXposedHookLoadPackage;
import de.robv.android.xposed.XC_MethodHook;
import de.robv.android.xposed.XC_MethodHook.MethodHookParam;
import de.robv.android.xposed.XposedBridge;
import de.robv.android.xposed.XposedHelpers;
import de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;

public class Hook implements IXposedHookLoadPackage {
    public void handleLoadPackage(LoadPackageParam loadPackageParam) throws Throwable {
        Log.d("dajianbang", "Hooking......");
        if (loadPackageParam.packageName.equals("com.xiaojianbang.xposeddemo")) {
            XposedHelpers.findAndHookMethod(ClassLoader.class, "loadClass", new Object[]{String.class, new XC_MethodHook() {
                /* access modifiers changed from: protected */
                public void afterHookedMethod(MethodHookParam param) throws Throwable {
                    Class clazz = (Class) param.getResult();
                    String clazzName = clazz.getName();
                    StringBuilder sb = new StringBuilder();
                    sb.append("LoadClass: ");
                    sb.append(clazzName);
                    Log.d("dajianbang", sb.toString());
                    if (clazzName.contains("com.xiaojianbang")) {
                        Method[] mds = clazz.getDeclaredMethods();
                        for (int i = 0; i < mds.length; i++) {
                            final Method md = mds[i];
                            int mod = mds[i].getModifiers();
                            if (!Modifier.isAbstract(mod) && !Modifier.isNative(mod) && !Modifier.isInterface(mod)) {
                                XposedBridge.hookMethod(mds[i], new XC_MethodHook() {
                                    /* access modifiers changed from: protected */
                                    public void beforeHookedMethod(MethodHookParam param) throws Throwable {
                                        if (md.getName().contains("complexParameterFunc")) {
                                            for (Object obj : param.args) {
                                                Log.d("dajianbang", obj.getClass().getName());
                                            }
                                        }
                                        StringBuilder sb = new StringBuilder();
                                        sb.append("Hook Method: ");
                                        sb.append(md.toString());
                                        Log.d("dajianbang", sb.toString());
                                    }
                                });
                            }
                        }
                    }
                }
            }});
        }
    }
}

其它可以参考:
|https://bbs.pediy.com/thread-215039.htm

转载于:https://blog.51cto.com/haidragon/2396903

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/100909.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 如何设置vimrc 配置文件_居中怎么设置

    如何设置vimrc 配置文件_居中怎么设置#HowToVimrc在炮制你自己的.vimrc配置时,这里只有一个原则.不要把任何你不理解的一行放到你的vimrc中.互联网上有以吨计的入门手册,诸如这篇文章.它们之中包含各种令人惊叹的Hack技巧,这可以记你的Vim更好,但为了让你的环境更好完全从别人那儿照搬那些配置,完全是**最糟糕**的做法.真真切切地花一些时间来学习你

    2022年5月3日
    65
  • p6spy 非常典型 启用SQL日志「建议收藏」

    p6spy 非常典型 启用SQL日志「建议收藏」官网地址 gitHub地址 在项目的pom.xml中添加依赖 修改项目数据库连接地址ConnectionURL jdbc:mysql://host/db修改为jdbc:p6spy:mysql://host/db 修改数据库driver-class-name driver-class-name:com.mysql.cj.jdbc.Driver修改为com.p6spy.eng…

    2022年10月5日
    6
  • 支付风控模型

    支付风控模型支付风控数据仓库建设 。支付风控涉及到多方面的内容,包括反洗钱、反欺诈、客户风险等级分类管理等。其中最核心的功能在于对实时交易进行风险评估,或者说是欺诈检测。如果这个交易的风险太高,则会执行拦截。由于反欺诈检测是在交易时实时进行的,在要求不能误拦截的同时,还有用户体验上的要求,即不能占用太多时间,一般要求风控操作必须控制在100ms以内,对于交易量大的业务,10ms甚至更低的性能要求都是必须的。

    2022年4月29日
    89
  • iOS开发中touchesBegan和touchesEn…「建议收藏」

    iOS开发中touchesBegan和touchesEn…「建议收藏」touchesBegan跟touchedEnd沒有提供給UIScrollViewDelegate所以要自己建立一個繼承自UIScrollView的class重寫這兩個methodmyScrollView.h@interface myScrollView : UIScrollView @end myScrollView.m-(void) touchesBegan:(NSS

    2022年7月25日
    15
  • matlab fmincon优化,求教Matlab用fmincon做优化计算

    matlab fmincon优化,求教Matlab用fmincon做优化计算本人利用fmincon做优化计算,其程序如下:1,主程序clearallx0=[0.1,0.3,0.2,0.3,0.1,45,0.214,0.05,0,0.45,0.15,0,0.4,0.12,0,0,0,0,0,0,0,0,0,0,0,0];A=[1-1-110000000000000000000000;11-1-10000…

    2022年6月7日
    34
  • docker 入门_docker高级教程

    docker 入门_docker高级教程一、docker概述1.什么是dockerDocker是一个开源的应用容器引擎,基于Go语言并遵从Apache2.0协议开源。Docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似iPhone的app),更重要的是容器性能开销极低。Docker从17.03版本之后分为CE(CommunityEdition:社区版)和E..

    2022年10月15日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号