Skip to content

Commit

Permalink
解决父类重叠的情况下,部分注入点失效的问题 (#149)
Browse files Browse the repository at this point in the history
  • Loading branch information
gflkdns authored Apr 1, 2022
1 parent c48b888 commit 0bf2de8
Showing 1 changed file with 14 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@
import org.objectweb.asm.commons.GeneratorAdapter;
import org.objectweb.asm.commons.Method;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

public class InjectAroundClassVisitor extends ClassVisitor {
Expand Down Expand Up @@ -119,21 +121,27 @@ public void visitMethodInsn(int opcode, String owner, String name, String desc,
}

private TargetMethod findTargetMethod(String className, String methodName, String methodDesc) {
TargetClass targetClass = findTargetClass(className);
if (targetClass != null) {
return targetClass.getTargetMethod(methodName, methodDesc);
List<TargetClass> targetClass = findTargetClass(className);
for (TargetClass tClass : targetClass) {
if (tClass != null) {
TargetMethod method = tClass.getTargetMethod(methodName, methodDesc);
if (method != null) {
return method;
}
}
}
return null;
}

private TargetClass findTargetClass(String className) {
private List<TargetClass> findTargetClass(String className) {
List<TargetClass> list = new ArrayList<>();
Map<String, TargetClass> aroundHookClasses = HookClassesConfig.getAroundHookClasses();
for (String clazz : aroundHookClasses.keySet()) {
if (isAssignable(className, clazz)) {
return aroundHookClasses.get(clazz);
list.add(aroundHookClasses.get(clazz));
}
}
return null;
return list;
}

private boolean isAssignable(String subClassName, String superClassName) {
Expand Down

0 comments on commit 0bf2de8

Please sign in to comment.