Skip to content

Commit 410c934

Browse files
committed
improve ClassHunter
1 parent 4f159e1 commit 410c934

File tree

4 files changed

+30
-22
lines changed

4 files changed

+30
-22
lines changed

ClassHunter/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
/targetClass.txt

ClassHunter/build.gradle.kts

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,18 @@ android {
1010
minSdk = 26
1111
targetSdk = 33
1212

13-
buildConfigField("String", "targetClass", """"..."""")
13+
val file = File(projectDir, "targetClass.txt")
14+
if (!file.exists()) {
15+
file.createNewFile()
16+
}
17+
val classes = file.readLines().filterNot { it.startsWith("#") }
18+
buildConfigField("String[]", "targetClass", classes.joinToString("\", \"", "{\"", "\"}"))
19+
versionNameSuffix = classes.joinToString(", ", " (", ")")
1420
}
1521

1622
buildFeatures {
1723
buildConfig = true
1824
}
1925
}
2026

21-
dependencies {
22-
}
27+
dependencies {}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
de.binarynoise.ClassHunter.Hook
1+
de.binarynoise.classHunter.Hook

ClassHunter/src/main/java/de/binarynoise/Template/Hook.kt renamed to ClassHunter/src/main/java/de/binarynoise/classHunter/Hook.kt

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1-
package de.binarynoise.ClassHunter
1+
package de.binarynoise.classHunter
22

33
import android.util.Log
4+
import de.binarynoise.ClassHunter.BuildConfig
45
import de.robv.android.xposed.IXposedHookLoadPackage
56
import de.robv.android.xposed.callbacks.XC_LoadPackage
67

@@ -10,7 +11,7 @@ class Hook : IXposedHookLoadPackage {
1011
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
1112
Log.i(TAG, "*".repeat(50))
1213
Log.i(TAG, "loading package: ${lpparam.packageName}")
13-
Log.i(TAG, "hunting for ${BuildConfig.targetClass}")
14+
Log.i(TAG, "hunting for ${BuildConfig.targetClass.joinToString()}")
1415

1516
val classLoaders = mutableSetOf<ClassLoader>()
1617

@@ -28,30 +29,31 @@ class Hook : IXposedHookLoadPackage {
2829

2930
Log.i(TAG, "currently known classloaders:")
3031
classLoaders.forEach {
31-
Log.d(TAG, "${it.toObjectString()}" + " - " + it.toString())
32+
Log.v(TAG, "${it.toObjectString()} - $it")
3233

33-
try {
34-
val cls = Class.forName(BuildConfig.targetClass, false, it)
35-
Log.w(TAG, " - found class: ${cls.name}")
36-
37-
Log.i(TAG, " - methods:")
38-
cls.declaredMethods.forEach {
39-
Log.d(TAG, " - ${it.returnType.name} ${it.name}(${it.parameters.joinToString(", ") { it.name + " " + it.type.name }})")
34+
BuildConfig.targetClass.forEach { className ->
35+
try {
36+
val cls = Class.forName(className, false, it)
37+
Log.i(TAG, " - found class: ${cls.name} in package ${lpparam.packageName} by $it")
38+
39+
Log.i(TAG, " - methods:")
40+
cls.declaredMethods.forEach { m ->
41+
Log.v(TAG, " - ${m.returnType.name} ${m.name}(${m.parameters.joinToString(", ") { p -> p.name + " " + p.type.name }})")
42+
}
43+
44+
Log.i(TAG, " - fields:")
45+
cls.declaredFields.forEach { f ->
46+
Log.v(TAG, " - ${f.type.name} ${f.name}")
47+
}
48+
} catch (_: Throwable) {
4049
}
41-
42-
Log.i(TAG, " - fields:")
43-
cls.declaredFields.forEach {
44-
Log.d(TAG, " - ${it.type.name} ${it.name}")
45-
}
46-
} catch (_: Throwable) {
47-
4850
}
4951
}
5052
}
5153

5254
private fun collectParents(classLoader: ClassLoader, name: String, classLoaders: MutableSet<ClassLoader>) {
5355
generateSequence(classLoader) { it.parent }.forEach {
54-
Log.d(TAG, name + " - ${it.toObjectString()}")
56+
Log.v(TAG, name + " - ${it.toObjectString()}")
5557
classLoaders.add(it)
5658
}
5759
}

0 commit comments

Comments
 (0)