From 139a23b7500a2d2577df47caf3fd0c5ec891a8d8 Mon Sep 17 00:00:00 2001 From: oSumAtrIX Date: Fri, 8 Apr 2022 18:19:48 +0200 Subject: [PATCH] feat: Improve `SignatureResolver` --- src/main/kotlin/app/revanced/patcher/Patcher.kt | 2 +- .../patcher/signature/SignatureResolverResult.kt | 2 +- .../{ => signature}/resolver/SignatureResolver.kt | 15 +++++---------- 3 files changed, 7 insertions(+), 12 deletions(-) rename src/main/kotlin/app/revanced/patcher/{ => signature}/resolver/SignatureResolver.kt (89%) diff --git a/src/main/kotlin/app/revanced/patcher/Patcher.kt b/src/main/kotlin/app/revanced/patcher/Patcher.kt index 042f6da2..6cbf314e 100644 --- a/src/main/kotlin/app/revanced/patcher/Patcher.kt +++ b/src/main/kotlin/app/revanced/patcher/Patcher.kt @@ -2,7 +2,7 @@ package app.revanced.patcher import app.revanced.patcher.cache.Cache import app.revanced.patcher.patch.Patch -import app.revanced.patcher.resolver.SignatureResolver +import app.revanced.patcher.signature.resolver.SignatureResolver import app.revanced.patcher.signature.MethodSignature import lanchon.multidexlib2.BasicDexFileNamer import lanchon.multidexlib2.DexIO diff --git a/src/main/kotlin/app/revanced/patcher/signature/SignatureResolverResult.kt b/src/main/kotlin/app/revanced/patcher/signature/SignatureResolverResult.kt index 0d9fd574..0d0e9fcb 100644 --- a/src/main/kotlin/app/revanced/patcher/signature/SignatureResolverResult.kt +++ b/src/main/kotlin/app/revanced/patcher/signature/SignatureResolverResult.kt @@ -2,7 +2,7 @@ package app.revanced.patcher.signature import app.revanced.patcher.proxy.ClassProxy import app.revanced.patcher.proxy.mutableTypes.MutableMethod -import app.revanced.patcher.resolver.SignatureResolver +import app.revanced.patcher.signature.resolver.SignatureResolver /** * Represents the result of a [SignatureResolver]. diff --git a/src/main/kotlin/app/revanced/patcher/resolver/SignatureResolver.kt b/src/main/kotlin/app/revanced/patcher/signature/resolver/SignatureResolver.kt similarity index 89% rename from src/main/kotlin/app/revanced/patcher/resolver/SignatureResolver.kt rename to src/main/kotlin/app/revanced/patcher/signature/resolver/SignatureResolver.kt index 883621fe..06e1485b 100644 --- a/src/main/kotlin/app/revanced/patcher/resolver/SignatureResolver.kt +++ b/src/main/kotlin/app/revanced/patcher/signature/resolver/SignatureResolver.kt @@ -1,4 +1,4 @@ -package app.revanced.patcher.resolver +package app.revanced.patcher.signature.resolver import app.revanced.patcher.cache.MethodMap import app.revanced.patcher.proxy.ClassProxy @@ -38,11 +38,6 @@ internal class SignatureResolver( } } - // TODO: remove? - for (signature in methodSignatures) { - if (methodMap.containsKey(signature.name)) continue - } - return methodMap } @@ -75,7 +70,7 @@ internal class SignatureResolver( } signature.methodParameters?.let { _ -> - if (!signature.methodParameters.all { signatureMethodParameter -> + if (signature.methodParameters.count() != method.parameterTypes.count() || !signature.methodParameters.all { signatureMethodParameter -> method.parameterTypes.any { methodParameter -> methodParameter.startsWith(signatureMethodParameter) } @@ -94,10 +89,10 @@ private operator fun ClassDef.component1() = this private operator fun ClassDef.component2() = this.methods private fun MutableIterable.scanFor(pattern: Array): PatternScanResult? { - // TODO: create var for count? - for (instructionIndex in 0 until this.count()) { + val count = this.count() + for (instructionIndex in 0 until count) { var patternIndex = 0 - while (instructionIndex + patternIndex < this.count()) { + while (instructionIndex + patternIndex < count) { if (this.elementAt(instructionIndex + patternIndex).opcode != pattern[patternIndex]) break if (++patternIndex < pattern.size) continue