diff --git a/src/main/kotlin/app/revanced/patches/googlerecorder/restrictions/fingereprints/OnApplicationCreateFingerprint.kt b/src/main/kotlin/app/revanced/patches/googlerecorder/restrictions/fingereprints/OnApplicationCreateFingerprint.kt new file mode 100644 index 000000000..9eb26b8bd --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/googlerecorder/restrictions/fingereprints/OnApplicationCreateFingerprint.kt @@ -0,0 +1,12 @@ +package app.revanced.patches.googlerecorder.restrictions.fingereprints + +import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint + +object OnApplicationCreateFingerprint : MethodFingerprint( + strings = listOf("com.google.android.feature.PIXEL_2017_EXPERIENCE"), + customFingerprint = custom@{ methodDef, classDef -> + if (methodDef.name != "onCreate") return@custom false + + classDef.type.endsWith("RecorderApplication;") + } +) diff --git a/src/main/kotlin/app/revanced/patches/googlerecorder/restrictions/patch/RemoveDeviceRestrictions.kt b/src/main/kotlin/app/revanced/patches/googlerecorder/restrictions/patch/RemoveDeviceRestrictions.kt new file mode 100644 index 000000000..292d43fcf --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/googlerecorder/restrictions/patch/RemoveDeviceRestrictions.kt @@ -0,0 +1,42 @@ +package app.revanced.patches.googlerecorder.restrictions.patch + +import app.revanced.extensions.toErrorResult +import app.revanced.patcher.annotation.Description +import app.revanced.patcher.annotation.Name +import app.revanced.patcher.annotation.Version +import app.revanced.patcher.data.BytecodeContext +import app.revanced.patcher.extensions.InstructionExtensions.addInstruction +import app.revanced.patcher.extensions.InstructionExtensions.getInstruction +import app.revanced.patcher.extensions.InstructionExtensions.removeInstructions +import app.revanced.patcher.patch.BytecodePatch +import app.revanced.patcher.patch.PatchResult +import app.revanced.patcher.patch.PatchResultSuccess +import app.revanced.patcher.patch.annotations.Patch +import app.revanced.patches.googlerecorder.restrictions.fingereprints.OnApplicationCreateFingerprint +import org.jf.dexlib2.iface.instruction.OneRegisterInstruction + +@Patch +@Name("remove-device-restrictions") +@Description("Removes restrictions from using the app on any device.") +@Version("0.0.1") +class RemoveDeviceRestrictions : BytecodePatch( + listOf(OnApplicationCreateFingerprint) +) { + override fun execute(context: BytecodeContext): PatchResult { + OnApplicationCreateFingerprint.result?.let { + val featureStringIndex = it.scanResult.stringsScanResult!!.matches.first().index + + it.mutableMethod.apply { + // Remove check for device restrictions. + removeInstructions(featureStringIndex - 2, 5) + + val featureAvailableRegister = getInstruction(featureStringIndex).registerA + + // Override "isPixelDevice()" to return true. + addInstruction(featureStringIndex, "const/4 v$featureAvailableRegister, 0x1") + } + } ?: return OnApplicationCreateFingerprint.toErrorResult() + + return PatchResultSuccess() + } +} \ No newline at end of file