diff --git a/app/src/main/java/com/lateautumn4lin/headwolf/entry/RealEntry.java b/app/src/main/java/com/lateautumn4lin/headwolf/entry/RealEntry.java index a89feda..16312e2 100644 --- a/app/src/main/java/com/lateautumn4lin/headwolf/entry/RealEntry.java +++ b/app/src/main/java/com/lateautumn4lin/headwolf/entry/RealEntry.java @@ -47,6 +47,8 @@ public class RealEntry implements IXposedHookLoadPackage { HashMap associate_handlers = ClassesReaderAssistant.reader(context, loadPackageParam.packageName); // step2:由注册类进行handler注册 if (Register.GroupRegister(loadPackageParam, associate_handlers)) { +// 初始化对应handler的model + ClassesReaderAssistant.init(context, loadPackageParam.packageName, loadPackageParam.classLoader); Logger.logi(String.format("Real Hook Logic About:%s Success", loadPackageParam.packageName)); RegisterState = true; } else { diff --git a/app/src/main/java/com/lateautumn4lin/headwolf/handlers/KuaishouHandler.java b/app/src/main/java/com/lateautumn4lin/headwolf/handlers/KuaishouHandler.java index 8a64408..c5d495c 100644 --- a/app/src/main/java/com/lateautumn4lin/headwolf/handlers/KuaishouHandler.java +++ b/app/src/main/java/com/lateautumn4lin/headwolf/handlers/KuaishouHandler.java @@ -21,6 +21,7 @@ import java.util.Map; * The type Kuaishou handler. */ public class KuaishouHandler extends BaseHandler implements SekiroRequestHandler { + /** * Gets belong. * @@ -45,7 +46,7 @@ public class KuaishouHandler extends BaseHandler implements SekiroRequestHandler final Gson gson = new Gson(); final Map object = new HashMap(); String name = sekiroRequest.getString("name"); - object.put("name", name + " again kuaishou no.3"); + object.put("name", name + " again Kuaishou no.3"); // 测试三种请求返回方式 测试方案 1000/s 总请求 50*1000 // P1:阻塞返回 // sekiroResponse.send(gson.toJson(object)); diff --git a/app/src/main/java/com/lateautumn4lin/headwolf/models/Kuaishou_v1.java b/app/src/main/java/com/lateautumn4lin/headwolf/models/Kuaishou_v1.java new file mode 100644 index 0000000..f1424de --- /dev/null +++ b/app/src/main/java/com/lateautumn4lin/headwolf/models/Kuaishou_v1.java @@ -0,0 +1,30 @@ +package com.lateautumn4lin.headwolf.models; +/* + * Kuaishou + * + * @author lateautumn4lin + * @github https://github.com/lateautumn4lin + * @date 2020/9/21 14:07 + */ + +import com.lateautumn4lin.headwolf.commons.Logger; + +/** + * The type Kuaishou. + */ +public class Kuaishou_v1 { + /** + * The constant classLoader. + */ + public static ClassLoader classLoader = null; + + /** + * Init. + * + * @param classloader the classloader + */ + public static void init(ClassLoader classloader) { + classLoader = classloader; + Logger.logi(classloader.toString()); + } +} diff --git a/app/src/main/java/com/lateautumn4lin/headwolf/models/Kuaishou_v2.java b/app/src/main/java/com/lateautumn4lin/headwolf/models/Kuaishou_v2.java new file mode 100644 index 0000000..8c3ccdd --- /dev/null +++ b/app/src/main/java/com/lateautumn4lin/headwolf/models/Kuaishou_v2.java @@ -0,0 +1,30 @@ +package com.lateautumn4lin.headwolf.models; +/* + * Kuaishou + * + * @author lateautumn4lin + * @github https://github.com/lateautumn4lin + * @date 2020/9/21 14:07 + */ + +import com.lateautumn4lin.headwolf.commons.Logger; + +/** + * The type Kuaishou v 2. + */ +public class Kuaishou_v2 { + /** + * The constant classLoader. + */ + public static ClassLoader classLoader = null; + + /** + * Init. + * + * @param classloader the classloader + */ + public static void init(ClassLoader classloader) { + classLoader = classloader; + Logger.logi(classloader.toString()); + } +} diff --git a/app/src/main/java/com/lateautumn4lin/headwolf/utils/ClassesReaderAssistant.java b/app/src/main/java/com/lateautumn4lin/headwolf/utils/ClassesReaderAssistant.java index b3c53f1..1d2f441 100644 --- a/app/src/main/java/com/lateautumn4lin/headwolf/utils/ClassesReaderAssistant.java +++ b/app/src/main/java/com/lateautumn4lin/headwolf/utils/ClassesReaderAssistant.java @@ -126,6 +126,35 @@ public final class ClassesReaderAssistant { } + /** + * Init. + * + * @param context the context + * @param associateName the associate name + * @param classLoader the class loader + */ + public static void init(Context context, String associateName, ClassLoader classLoader) { + String packageName = String.format("%s.models", Config.GetPackageName()); + final String group_name = Config.GetGroup(associateName); + final String feature_name = group_name.split("_")[1]; + try { + Context moudleContext = context.createPackageContext(Config.GetPackageName(), Context.CONTEXT_INCLUDE_CODE | Context.CONTEXT_IGNORE_SECURITY); + List> associate_classes = reader(packageName, moudleContext.getPackageCodePath()); + for (Class cls : associate_classes) + try { + Logger.logi(String.format("%s,get", cls.getName().toLowerCase())); + if (cls.getName().toLowerCase().contains(feature_name)) { + Method init = cls.getDeclaredMethod("init", ClassLoader.class); + init.invoke(null, classLoader); + } + } catch (Exception e) { + Logger.loge(e.toString()); + } + } catch (Exception e) { + Logger.loge(e.toString()); + } + } + /** * Reader list. *