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