博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
xposed hook所有类的所有函数
阅读量:6883 次
发布时间:2019-06-27

本文共 2873 字,大约阅读时间需要 9 分钟。

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://blog.51cto.com/haidragon/2396903

你可能感兴趣的文章
RHEL6基础四十一之selinux和iptables基础
查看>>
数据结构之单链表在第i个元素之前插入元素的算法
查看>>
Exchange Server 运维管理02:邮箱数据库存储原理
查看>>
Exchange Server2013 系列十:证书的配置
查看>>
Cygwin新手必读
查看>>
52.本地VMware环境虚拟机的异地(Azure)容灾(下)
查看>>
也谈谈Apache与Nginx
查看>>
Word中使用正则表达式进行查找和替换
查看>>
jquery.autocomplete 搜索文字提示
查看>>
ADB用法
查看>>
Remote Desktop Organizer – 管理组织远程桌面 - 小众软件
查看>>
把图片保存到数据库里
查看>>
【CUDA学习】全局存储器
查看>>
Reward HDU
查看>>
ISSkin 使用技巧,WinXP 下的窗口阴影
查看>>
HttpClient传递Cookie
查看>>
网站可用性测试及优化指南-随笔2
查看>>
Hammer.js
查看>>
WebService学习总结(四)——调用第三方提供的webService服务
查看>>
Selenium学习笔记之外部化相关测试数据---xml
查看>>