mirror of
https://github.com/revanced/revanced-patches
synced 2024-12-25 07:55:50 +01:00
feat(finanzonline): support any version (#2347)
This commit is contained in:
parent
d1823297ce
commit
cc66b1fc62
@ -2,12 +2,29 @@ package app.revanced.patches.finanzonline.detection.bootloader.fingerprints
|
|||||||
|
|
||||||
import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint
|
import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint
|
||||||
import org.jf.dexlib2.AccessFlags
|
import org.jf.dexlib2.AccessFlags
|
||||||
|
import org.jf.dexlib2.Opcode
|
||||||
|
|
||||||
|
// Located @ at.gv.bmf.bmf2go.taxequalization.tools.utils.AttestationHelper#isBootStateOk (3.0.1)
|
||||||
object BootStateFingerprint : MethodFingerprint(
|
object BootStateFingerprint : MethodFingerprint(
|
||||||
"Z",
|
"Z",
|
||||||
accessFlags = AccessFlags.PUBLIC.value,
|
accessFlags = AccessFlags.PUBLIC.value,
|
||||||
strings = listOf("Boot state of device: %s"),
|
opcodes = listOf(
|
||||||
customFingerprint = { methodDef, _ ->
|
Opcode.INVOKE_DIRECT,
|
||||||
methodDef.definingClass.endsWith("/AttestationHelper;")
|
Opcode.MOVE_RESULT_OBJECT,
|
||||||
}
|
Opcode.CONST_4,
|
||||||
|
Opcode.NEW_ARRAY,
|
||||||
|
Opcode.INVOKE_VIRTUAL,
|
||||||
|
Opcode.MOVE_RESULT_OBJECT,
|
||||||
|
Opcode.CONST_4,
|
||||||
|
Opcode.APUT_OBJECT,
|
||||||
|
Opcode.CONST_STRING,
|
||||||
|
Opcode.INVOKE_STATIC,
|
||||||
|
Opcode.SGET_OBJECT,
|
||||||
|
Opcode.IF_EQ,
|
||||||
|
Opcode.SGET_OBJECT,
|
||||||
|
Opcode.IF_NE,
|
||||||
|
Opcode.GOTO,
|
||||||
|
Opcode.MOVE,
|
||||||
|
Opcode.RETURN
|
||||||
|
)
|
||||||
)
|
)
|
||||||
|
@ -1,13 +0,0 @@
|
|||||||
package app.revanced.patches.finanzonline.detection.bootloader.fingerprints
|
|
||||||
|
|
||||||
import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint
|
|
||||||
import org.jf.dexlib2.AccessFlags
|
|
||||||
|
|
||||||
object BootloaderDetectionFingerprint : MethodFingerprint(
|
|
||||||
"Z",
|
|
||||||
accessFlags = AccessFlags.PUBLIC.value,
|
|
||||||
strings = listOf("Creation of attestation key succeeded", "Creation of attestation key failed"),
|
|
||||||
customFingerprint = { methodDef, _ ->
|
|
||||||
methodDef.definingClass.endsWith("/AttestationHelper;")
|
|
||||||
}
|
|
||||||
)
|
|
@ -0,0 +1,11 @@
|
|||||||
|
package app.revanced.patches.finanzonline.detection.bootloader.fingerprints
|
||||||
|
|
||||||
|
import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint
|
||||||
|
import org.jf.dexlib2.AccessFlags
|
||||||
|
|
||||||
|
// Located @ at.gv.bmf.bmf2go.taxequalization.tools.utils.AttestationHelper#createKey (3.0.1)
|
||||||
|
object CreateKeyFingerprint : MethodFingerprint(
|
||||||
|
"Z",
|
||||||
|
accessFlags = AccessFlags.PUBLIC.value,
|
||||||
|
strings = listOf("attestation", "SHA-256", "random", "EC", "AndroidKeyStore")
|
||||||
|
)
|
@ -11,7 +11,7 @@ import app.revanced.patcher.patch.PatchResult
|
|||||||
import app.revanced.patcher.patch.PatchResultSuccess
|
import app.revanced.patcher.patch.PatchResultSuccess
|
||||||
import app.revanced.patcher.patch.annotations.Patch
|
import app.revanced.patcher.patch.annotations.Patch
|
||||||
import app.revanced.patches.finanzonline.detection.bootloader.fingerprints.BootStateFingerprint
|
import app.revanced.patches.finanzonline.detection.bootloader.fingerprints.BootStateFingerprint
|
||||||
import app.revanced.patches.finanzonline.detection.bootloader.fingerprints.BootloaderDetectionFingerprint
|
import app.revanced.patches.finanzonline.detection.bootloader.fingerprints.CreateKeyFingerprint
|
||||||
import app.revanced.patches.finanzonline.detection.shared.annotations.DetectionCompatibility
|
import app.revanced.patches.finanzonline.detection.shared.annotations.DetectionCompatibility
|
||||||
|
|
||||||
|
|
||||||
@ -21,11 +21,11 @@ import app.revanced.patches.finanzonline.detection.shared.annotations.DetectionC
|
|||||||
@DetectionCompatibility
|
@DetectionCompatibility
|
||||||
@Version("0.0.1")
|
@Version("0.0.1")
|
||||||
class BootloaderDetectionPatch : BytecodePatch(
|
class BootloaderDetectionPatch : BytecodePatch(
|
||||||
listOf(BootloaderDetectionFingerprint, BootStateFingerprint)
|
listOf(CreateKeyFingerprint, BootStateFingerprint)
|
||||||
) {
|
) {
|
||||||
override fun execute(context: BytecodeContext): PatchResult {
|
override fun execute(context: BytecodeContext): PatchResult {
|
||||||
arrayOf(BootloaderDetectionFingerprint, BootStateFingerprint).forEach { fingerprint ->
|
arrayOf(CreateKeyFingerprint, BootStateFingerprint).forEach { fingerprint ->
|
||||||
fingerprint.result?.mutableMethod?.addInstruction(
|
fingerprint.result?.mutableMethod?.addInstructions(
|
||||||
0,
|
0,
|
||||||
"""
|
"""
|
||||||
const/4 v0, 0x1
|
const/4 v0, 0x1
|
||||||
@ -33,6 +33,7 @@ class BootloaderDetectionPatch : BytecodePatch(
|
|||||||
"""
|
"""
|
||||||
) ?: return fingerprint.toErrorResult()
|
) ?: return fingerprint.toErrorResult()
|
||||||
}
|
}
|
||||||
|
|
||||||
return PatchResultSuccess()
|
return PatchResultSuccess()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,10 +1,22 @@
|
|||||||
package app.revanced.patches.finanzonline.detection.root.fingerprints
|
package app.revanced.patches.finanzonline.detection.root.fingerprints
|
||||||
|
|
||||||
|
import app.revanced.patcher.extensions.or
|
||||||
import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint
|
import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint
|
||||||
|
import org.jf.dexlib2.AccessFlags
|
||||||
|
import org.jf.dexlib2.Opcode
|
||||||
|
|
||||||
|
// Located @ at.gv.bmf.bmf2go.taxequalization.tools.utils.RootDetection#isRooted (3.0.1)
|
||||||
object RootDetectionFingerprint : MethodFingerprint(
|
object RootDetectionFingerprint : MethodFingerprint(
|
||||||
"L",
|
"L",
|
||||||
customFingerprint = { methodDef, _ ->
|
accessFlags = AccessFlags.PUBLIC or AccessFlags.STATIC,
|
||||||
methodDef.definingClass == "Lat/gv/bmf/bmf2go/tools/utils/z;"
|
parameters = listOf("L"),
|
||||||
}
|
opcodes = listOf(
|
||||||
|
Opcode.NEW_INSTANCE,
|
||||||
|
Opcode.INVOKE_DIRECT,
|
||||||
|
Opcode.INVOKE_VIRTUAL,
|
||||||
|
Opcode.MOVE_RESULT,
|
||||||
|
Opcode.INVOKE_STATIC,
|
||||||
|
Opcode.MOVE_RESULT_OBJECT,
|
||||||
|
Opcode.RETURN_OBJECT
|
||||||
|
)
|
||||||
)
|
)
|
||||||
|
@ -29,6 +29,7 @@ class RootDetectionPatch : BytecodePatch(
|
|||||||
return-object v0
|
return-object v0
|
||||||
"""
|
"""
|
||||||
) ?: return RootDetectionFingerprint.toErrorResult()
|
) ?: return RootDetectionFingerprint.toErrorResult()
|
||||||
|
|
||||||
return PatchResultSuccess()
|
return PatchResultSuccess()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,6 +3,6 @@ package app.revanced.patches.finanzonline.detection.shared.annotations
|
|||||||
import app.revanced.patcher.annotation.Compatibility
|
import app.revanced.patcher.annotation.Compatibility
|
||||||
import app.revanced.patcher.annotation.Package
|
import app.revanced.patcher.annotation.Package
|
||||||
|
|
||||||
@Compatibility([Package("at.gv.bmf.bmf2go", arrayOf("2.2.0"))])
|
@Compatibility([Package("at.gv.bmf.bmf2go")])
|
||||||
@Target(AnnotationTarget.CLASS)
|
@Target(AnnotationTarget.CLASS)
|
||||||
internal annotation class DetectionCompatibility
|
internal annotation class DetectionCompatibility
|
||||||
|
Loading…
Reference in New Issue
Block a user