mirror of
https://github.com/ReVanced/revanced-patches.git
synced 2024-11-13 02:14:28 +01:00
feat(Digitales Amt): Bump compatibility to 3.0.2
(#3217)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
This commit is contained in:
parent
c04c54eb26
commit
f21fa5894b
8 changed files with 74 additions and 38 deletions
|
@ -1,21 +1,26 @@
|
||||||
package app.revanced.patches.idaustria.detection.root
|
package app.revanced.patches.idaustria.detection.root
|
||||||
|
|
||||||
import app.revanced.patcher.data.BytecodeContext
|
import app.revanced.patcher.data.BytecodeContext
|
||||||
import app.revanced.patcher.extensions.InstructionExtensions.addInstruction
|
|
||||||
import app.revanced.patcher.patch.BytecodePatch
|
import app.revanced.patcher.patch.BytecodePatch
|
||||||
import app.revanced.patcher.patch.annotation.CompatiblePackage
|
import app.revanced.patcher.patch.annotation.CompatiblePackage
|
||||||
import app.revanced.patcher.patch.annotation.Patch
|
import app.revanced.patcher.patch.annotation.Patch
|
||||||
import app.revanced.patches.idaustria.detection.root.fingerprints.RootDetectionFingerprint
|
import app.revanced.patches.idaustria.detection.root.fingerprints.AttestationSupportedCheckFingerprint
|
||||||
|
import app.revanced.patches.idaustria.detection.root.fingerprints.BootloaderCheckFingerprint
|
||||||
|
import app.revanced.patches.idaustria.detection.root.fingerprints.RootCheckFingerprint
|
||||||
|
import app.revanced.util.Utils.returnEarly
|
||||||
|
|
||||||
@Patch(
|
@Patch(
|
||||||
name = "Remove root detection",
|
name = "Remove root detection",
|
||||||
description = "Removes the check for root permissions and unlocked bootloader.",
|
description = "Removes the check for root permissions and unlocked bootloader.",
|
||||||
compatiblePackages = [CompatiblePackage("at.gv.oe.app", ["2.7.1"])]
|
compatiblePackages = [CompatiblePackage("at.gv.oe.app", ["3.0.2"])]
|
||||||
)
|
)
|
||||||
@Suppress("unused")
|
@Suppress("unused")
|
||||||
object RootDetectionPatch : BytecodePatch(
|
object RootDetectionPatch : BytecodePatch(
|
||||||
setOf(RootDetectionFingerprint)
|
setOf(AttestationSupportedCheckFingerprint, BootloaderCheckFingerprint, RootCheckFingerprint)
|
||||||
) {
|
) {
|
||||||
override fun execute(context: BytecodeContext) =
|
override fun execute(context: BytecodeContext) = listOf(
|
||||||
RootDetectionFingerprint.result!!.mutableMethod.addInstruction(0, "return-void")
|
AttestationSupportedCheckFingerprint,
|
||||||
|
BootloaderCheckFingerprint,
|
||||||
|
RootCheckFingerprint
|
||||||
|
).returnEarly(true)
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
package app.revanced.patches.idaustria.detection.root.fingerprints
|
||||||
|
|
||||||
|
import app.revanced.patcher.fingerprint.MethodFingerprint
|
||||||
|
import com.android.tools.smali.dexlib2.AccessFlags
|
||||||
|
|
||||||
|
object AttestationSupportedCheckFingerprint : MethodFingerprint(
|
||||||
|
"V",
|
||||||
|
accessFlags = AccessFlags.PUBLIC.value,
|
||||||
|
customFingerprint = { methodDef, _ ->
|
||||||
|
methodDef.name == "attestationSupportCheck" &&
|
||||||
|
methodDef.definingClass.endsWith("/DeviceIntegrityCheck;")
|
||||||
|
}
|
||||||
|
)
|
|
@ -0,0 +1,13 @@
|
||||||
|
package app.revanced.patches.idaustria.detection.root.fingerprints
|
||||||
|
|
||||||
|
import app.revanced.patcher.fingerprint.MethodFingerprint
|
||||||
|
import com.android.tools.smali.dexlib2.AccessFlags
|
||||||
|
|
||||||
|
object BootloaderCheckFingerprint : MethodFingerprint(
|
||||||
|
"Z",
|
||||||
|
accessFlags = AccessFlags.PUBLIC.value,
|
||||||
|
customFingerprint = { methodDef, _ ->
|
||||||
|
methodDef.name == "bootloaderCheck" &&
|
||||||
|
methodDef.definingClass.endsWith("/DeviceIntegrityCheck;")
|
||||||
|
}
|
||||||
|
)
|
|
@ -3,10 +3,11 @@ package app.revanced.patches.idaustria.detection.root.fingerprints
|
||||||
import app.revanced.patcher.fingerprint.MethodFingerprint
|
import app.revanced.patcher.fingerprint.MethodFingerprint
|
||||||
import com.android.tools.smali.dexlib2.AccessFlags
|
import com.android.tools.smali.dexlib2.AccessFlags
|
||||||
|
|
||||||
object RootDetectionFingerprint : MethodFingerprint(
|
object RootCheckFingerprint : MethodFingerprint(
|
||||||
"V",
|
"V",
|
||||||
accessFlags = AccessFlags.PUBLIC.value,
|
accessFlags = AccessFlags.PUBLIC.value,
|
||||||
customFingerprint = { methodDef, _ ->
|
customFingerprint = { methodDef, _ ->
|
||||||
|
methodDef.name == "rootCheck" &&
|
||||||
methodDef.definingClass.endsWith("/DeviceIntegrityCheck;")
|
methodDef.definingClass.endsWith("/DeviceIntegrityCheck;")
|
||||||
}
|
}
|
||||||
)
|
)
|
|
@ -10,7 +10,7 @@ import app.revanced.patches.idaustria.detection.signature.fingerprints.SpoofSign
|
||||||
@Patch(
|
@Patch(
|
||||||
name = "Spoof signature",
|
name = "Spoof signature",
|
||||||
description = "Spoofs the signature of the app.",
|
description = "Spoofs the signature of the app.",
|
||||||
compatiblePackages = [CompatiblePackage("at.gv.oe.app", ["2.7.1"])]
|
compatiblePackages = [CompatiblePackage("at.gv.oe.app", ["3.0.2"])]
|
||||||
)
|
)
|
||||||
@Suppress("unused")
|
@Suppress("unused")
|
||||||
object SpoofSignaturePatch : BytecodePatch(
|
object SpoofSignaturePatch : BytecodePatch(
|
||||||
|
|
|
@ -11,7 +11,7 @@ import app.revanced.patches.songpal.badge.fingerprints.ShowNotificationFingerpri
|
||||||
@Patch(
|
@Patch(
|
||||||
name = "Remove notification badge",
|
name = "Remove notification badge",
|
||||||
description = "Removes the red notification badge from the activity tab.",
|
description = "Removes the red notification badge from the activity tab.",
|
||||||
compatiblePackages = [CompatiblePackage("com.sony.songpal.mdr")]
|
compatiblePackages = [CompatiblePackage("com.sony.songpal.mdr", ["10.1.0"])]
|
||||||
)
|
)
|
||||||
@Suppress("unused")
|
@Suppress("unused")
|
||||||
object RemoveNotificationBadgePatch : BytecodePatch(setOf(ShowNotificationFingerprint)) {
|
object RemoveNotificationBadgePatch : BytecodePatch(setOf(ShowNotificationFingerprint)) {
|
||||||
|
|
32
src/main/kotlin/app/revanced/util/Utils.kt
Normal file
32
src/main/kotlin/app/revanced/util/Utils.kt
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
package app.revanced.util
|
||||||
|
|
||||||
|
import app.revanced.extensions.exception
|
||||||
|
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
|
||||||
|
import app.revanced.patcher.fingerprint.MethodFingerprint
|
||||||
|
|
||||||
|
object Utils {
|
||||||
|
/**
|
||||||
|
* Return the resolved methods of [MethodFingerprint]s early.
|
||||||
|
*/
|
||||||
|
fun List<MethodFingerprint>.returnEarly(bool: Boolean = false) {
|
||||||
|
val const = if (bool) "0x1" else "0x0"
|
||||||
|
this.forEach { fingerprint ->
|
||||||
|
fingerprint.result?.let { result ->
|
||||||
|
val stringInstructions = when (result.method.returnType.first()) {
|
||||||
|
'L' -> """
|
||||||
|
const/4 v0, $const
|
||||||
|
return-object v0
|
||||||
|
"""
|
||||||
|
'V' -> "return-void"
|
||||||
|
'I', 'Z' -> """
|
||||||
|
const/4 v0, $const
|
||||||
|
return v0
|
||||||
|
"""
|
||||||
|
else -> throw Exception("This case should never happen.")
|
||||||
|
}
|
||||||
|
|
||||||
|
result.mutableMethod.addInstructions(0, stringInstructions)
|
||||||
|
} ?: throw fingerprint.exception
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,13 +1,12 @@
|
||||||
package app.revanced.util.microg
|
package app.revanced.util.microg
|
||||||
|
|
||||||
import app.revanced.extensions.exception
|
|
||||||
import app.revanced.patcher.data.BytecodeContext
|
import app.revanced.patcher.data.BytecodeContext
|
||||||
import app.revanced.patcher.extensions.InstructionExtensions.addInstruction
|
import app.revanced.patcher.extensions.InstructionExtensions.addInstruction
|
||||||
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
|
|
||||||
import app.revanced.patcher.extensions.InstructionExtensions.replaceInstruction
|
import app.revanced.patcher.extensions.InstructionExtensions.replaceInstruction
|
||||||
import app.revanced.patcher.fingerprint.MethodFingerprint
|
import app.revanced.patcher.fingerprint.MethodFingerprint
|
||||||
import app.revanced.patcher.util.proxy.mutableTypes.MutableClass
|
import app.revanced.patcher.util.proxy.mutableTypes.MutableClass
|
||||||
import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod
|
import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod
|
||||||
|
import app.revanced.util.Utils.returnEarly
|
||||||
import app.revanced.util.microg.Constants.ACTIONS
|
import app.revanced.util.microg.Constants.ACTIONS
|
||||||
import app.revanced.util.microg.Constants.AUTHORITIES
|
import app.revanced.util.microg.Constants.AUTHORITIES
|
||||||
import app.revanced.util.microg.Constants.MICROG_VENDOR
|
import app.revanced.util.microg.Constants.MICROG_VENDOR
|
||||||
|
@ -213,31 +212,4 @@ internal object MicroGBytecodeHelper {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Return the resolved methods of a list of [MethodFingerprint] early.
|
|
||||||
*/
|
|
||||||
private fun List<MethodFingerprint>.returnEarly() {
|
|
||||||
this.forEach { fingerprint ->
|
|
||||||
fingerprint.result?.let { result ->
|
|
||||||
val stringInstructions = when (result.method.returnType.first()) {
|
|
||||||
'L' -> """
|
|
||||||
const/4 v0, 0x0
|
|
||||||
return-object v0
|
|
||||||
"""
|
|
||||||
|
|
||||||
'V' -> "return-void"
|
|
||||||
'I' -> """
|
|
||||||
const/4 v0, 0x0
|
|
||||||
return v0
|
|
||||||
"""
|
|
||||||
|
|
||||||
else -> throw Exception("This case should never happen.")
|
|
||||||
}
|
|
||||||
result.mutableMethod.addInstructions(
|
|
||||||
0, stringInstructions
|
|
||||||
)
|
|
||||||
} ?: throw fingerprint.exception
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue