Skip to content

Commit 4869593

Browse files
committed
improve ClassHunter: return the uppermost parent that can resolve the class
1 parent bf8f64f commit 4869593

File tree

1 file changed

+18
-4
lines changed
  • ClassHunter/src/main/java/de/binarynoise/classHunter

1 file changed

+18
-4
lines changed

ClassHunter/src/main/java/de/binarynoise/classHunter/Hook.kt

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -109,10 +109,24 @@ class Hook : IXposedHookLoadPackage {
109109

110110
fun tryFindClass(classLoader: ClassLoader, classLoaderName: String, packageName: String) {
111111
BuildConfig.targetClass.forEach { className ->
112-
try {
113-
val cls = Class.forName(className, false, classLoader)
114-
logClass(cls, classLoaderName, classLoader, packageName)
115-
} catch (_: Throwable) {
112+
var cls: Class<*>? = null
113+
114+
var classLoader: ClassLoader? = classLoader
115+
var successClassLoader: ClassLoader? = null
116+
var i = 0
117+
118+
while (classLoader != null && i++ < 10) {
119+
try {
120+
cls = Class.forName(className, false, classLoader)
121+
successClassLoader = classLoader
122+
} catch (_: Throwable) {
123+
break
124+
}
125+
classLoader = classLoader.parent
126+
}
127+
128+
if (cls != null && successClassLoader != null) {
129+
logClass(cls, classLoaderName, successClassLoader, packageName)
116130
}
117131
}
118132
}

0 commit comments

Comments
 (0)