Skip to content

Commit

Permalink
feat: Add (WIP) Signature Checker
Browse files Browse the repository at this point in the history
  • Loading branch information
Sculas committed Apr 14, 2022
1 parent 80276c7 commit ae4c7b2
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 1 deletion.
5 changes: 4 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -111,4 +111,7 @@ gradle-app.setting
.gradletasknamecache

# # Work around https://youtrack.jetbrains.com/issue/IDEA-116898
# gradle/wrapper/gradle-wrapper.properties
# gradle/wrapper/gradle-wrapper.properties

# Potentially copyrighted test APK
stock.apk
39 changes: 39 additions & 0 deletions src/test/kotlin/app/revanced/patches/SignatureChecker.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package app.revanced.patches

import app.revanced.patcher.Patcher
import app.revanced.patcher.signature.MethodSignature
import app.revanced.patcher.signature.PatternScanMethod
import org.junit.Test
import java.io.File

internal class SignatureChecker {
@Test
fun checkSignatures() {
val file = File("stock.apk")
if (!file.exists()) {
throw IllegalStateException("Missing stock.apk! To run this test, please place stock.apk here: ${file.absolutePath}")
}
val patcher = Patcher(file)
patcher.addPatches(Index.patches.map { it() })
val unresolved = mutableListOf<MethodSignature>()
for (signature in patcher.resolveSignatures()) {
if (!signature.resolved) unresolved.add(signature)

val patternScanMethod = signature.metadata.patternScanMethod
if (patternScanMethod is PatternScanMethod.Fuzzy) {
val warnings = patternScanMethod.warnings
println("Signature ${signature.metadata.name} had ${warnings.size} warnings!")
for (warning in warnings) {
println(warning.toString())
}
}
}
if (unresolved.isNotEmpty()) {
val base = Exception("${unresolved.size} signatures were not resolved.")
for (signature in unresolved) {
base.addSuppressed(Exception("Signature ${signature.metadata.name} was not resolved!"))
}
throw base
}
}
}

0 comments on commit ae4c7b2

Please sign in to comment.