lsposed开发hook找不到类

app加壳找不到类时使用

java 复制代码
package com.example.demoapp;

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

import java.util.Arrays;

import de.robv.android.xposed.IXposedHookLoadPackage;
import de.robv.android.xposed.XC_MethodHook;
import de.robv.android.xposed.XposedHelpers;
import de.robv.android.xposed.callbacks.XC_LoadPackage;


public class HookDemo implements IXposedHookLoadPackage {
    private static final String TARGET_PACKAGE = "com.dachuan.news";
    private static final String TARGET_CLASS = "cn.thecover.lib.common.manager.SignManager";
    private static final String TARGET_METHOD = "getSign";
    private static final String TAG = "HookDemo";

    public void handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam) throws Throwable {
        if (!TARGET_PACKAGE.equals(lpparam.packageName) || !lpparam.processName.equals(lpparam.packageName)) {
            return;
        }
        XposedHelpers.findAndHookMethod(Application.class, "attach", Context.class, new XC_MethodHook() {
            @Override
            protected void afterHookedMethod(MethodHookParam param) throws Throwable {
                ClassLoader classLoader = ((Context) param.args[0]).getClassLoader();
                Class<?> targetClass = XposedHelpers.findClassIfExists(TARGET_CLASS, classLoader);
                if (targetClass != null) {
                    XposedHelpers.findAndHookMethod(targetClass, TARGET_METHOD, String.class, String.class, String.class, new XC_MethodHook() {
                        @Override
                        protected void beforeHookedMethod(MethodHookParam param) {
                            Log.i(TAG, String.format("%s参数: %s", TARGET_METHOD, Arrays.toString(param.args)));
                        }
                        @Override
                        protected void afterHookedMethod(MethodHookParam param) {
                            Log.i(TAG, String.format("%s返回值: %s", TARGET_METHOD, param.getResult()));

                        }
                    });
                }

            }
        });
    }
}
相关推荐
Yang-Never几秒前
Android 应用启动 -> Android 多种方式启动同一进程,Application.onCreate() 会多次执行吗?
android·java·开发语言·kotlin·android studio
期待のcode1 分钟前
Java 共享变量的内存可见性问题
java·开发语言
会游泳的石头2 分钟前
深入剖析 Java 长连接:SSE 与 WebSocket 的实战陷阱与优化策略
java·开发语言·websocket
lllljz14 分钟前
blenderGIS出现too large extent错误
java·服务器·前端
qq_124987075323 分钟前
基于spring boot的调查问卷系统的设计与实现(源码+论文+部署+安装)
java·vue.js·spring boot·后端·spring·毕业设计·计算机毕业设计
what丶k28 分钟前
深入理解Java NIO:从原理到实战的全方位解析
java·开发语言·nio
血小板要健康31 分钟前
笔试面经2(上)(纸质版)
java·开发语言
忧郁的Mr.Li37 分钟前
JVM-类加载子系统、运行时数据区 详解
java·jvm
shehuiyuelaiyuehao42 分钟前
12异常知识点
java
好好研究43 分钟前
MobaXterm远程连接云服务器(Centos环境)及配置jdk、Tomcat、MySQL环境
java·服务器·mysql·jdk·tomcat·aliyun服务器