Compare commits

...

4 Commits

Author SHA1 Message Date
Romain
15ee4cd9d1
Merge 6ab589b342 into 15cbade984 2024-05-13 08:44:03 +02:00
semantic-release-bot
15cbade984 chore(release): 4.8.0-dev.17 [skip ci]
# [4.8.0-dev.17](https://github.com/ReVanced/revanced-patches/compare/v4.8.0-dev.16...v4.8.0-dev.17) (2024-05-12)

### Features

* **Photomath:** Support version `8.37.0` ([#3109](https://github.com/ReVanced/revanced-patches/issues/3109)) ([fb02b48](fb02b481e2))
2024-05-12 23:47:30 +00:00
Starmania
6ab589b342 Dumped the API 2024-05-10 14:55:10 +02:00
Starmania
e8f7333a34 feat(piccomafr): Add No tracking patch (#2626) 2024-05-09 15:35:57 +02:00
7 changed files with 142 additions and 1 deletions

View File

@ -1,3 +1,10 @@
# [4.8.0-dev.17](https://github.com/ReVanced/revanced-patches/compare/v4.8.0-dev.16...v4.8.0-dev.17) (2024-05-12)
### Features
* **Photomath:** Support version `8.37.0` ([#3109](https://github.com/ReVanced/revanced-patches/issues/3109)) ([fb02b48](https://github.com/ReVanced/revanced-patches/commit/fb02b481e2be8c2bc4441dc5b3dc6a9df3a2a379))
# [4.8.0-dev.16](https://github.com/ReVanced/revanced-patches/compare/v4.8.0-dev.15...v4.8.0-dev.16) (2024-05-12)

View File

@ -487,6 +487,12 @@ public final class app/revanced/patches/photomath/misc/unlock/plus/UnlockPlusPat
public synthetic fun execute (Lapp/revanced/patcher/data/Context;)V
}
public final class app/revanced/patches/piccomafr/tracking/DisableTrackingPatch : app/revanced/patcher/patch/BytecodePatch {
public static final field INSTANCE Lapp/revanced/patches/piccomafr/tracking/DisableTrackingPatch;
public fun execute (Lapp/revanced/patcher/data/BytecodeContext;)V
public synthetic fun execute (Lapp/revanced/patcher/data/Context;)V
}
public final class app/revanced/patches/pixiv/ads/HideAdsPatch : app/revanced/patcher/patch/BytecodePatch {
public static final field INSTANCE Lapp/revanced/patches/pixiv/ads/HideAdsPatch;
public fun execute (Lapp/revanced/patcher/data/BytecodeContext;)V

View File

@ -1,4 +1,4 @@
org.gradle.parallel = true
org.gradle.caching = true
kotlin.code.style = official
version = 4.8.0-dev.16
version = 4.8.0-dev.17

View File

@ -0,0 +1,85 @@
package app.revanced.patches.piccomafr.tracking
import app.revanced.patcher.data.BytecodeContext
import app.revanced.patcher.extensions.InstructionExtensions.addInstruction
import app.revanced.patcher.extensions.InstructionExtensions.getInstructions
import app.revanced.patcher.extensions.InstructionExtensions.replaceInstruction
import app.revanced.patcher.patch.BytecodePatch
import app.revanced.patcher.patch.annotation.CompatiblePackage
import app.revanced.patcher.patch.annotation.Patch
import app.revanced.patches.piccomafr.tracking.fingerprints.FacebookSDKFingerprint
import app.revanced.patches.piccomafr.tracking.fingerprints.FirebaseInstallFingerprint
import app.revanced.patches.piccomafr.tracking.fingerprints.AppMesurementFingerprint
import app.revanced.util.exception
import com.android.tools.smali.dexlib2.Opcode
import com.android.tools.smali.dexlib2.builder.instruction.BuilderInstruction21c
import com.android.tools.smali.dexlib2.iface.instruction.formats.Instruction21c
import com.android.tools.smali.dexlib2.iface.reference.StringReference
import com.android.tools.smali.dexlib2.immutable.reference.ImmutableStringReference
import java.util.logging.Logger
@Patch(
name = "Disable tracking",
description = "Enable every debug possibilities of the app.",
compatiblePackages = [CompatiblePackage(
"com.piccomaeurope.fr",
[
"6.4.0", "6.4.1", "6.4.2", "6.4.3", "6.4.4", "6.4.5",
"6.5.0", "6.5.1", "6.5.2", "6.5.3", "6.5.4",
"6.6.0", "6.6.1", "6.6.2"
],
)]
)
@Suppress("unused")
object DisableTrackingPatch : BytecodePatch(
setOf(FacebookSDKFingerprint, FirebaseInstallFingerprint, AppMesurementFingerprint),
) {
private val logger = Logger.getLogger(DisableTrackingPatch::class.java.name)
override fun execute(context: BytecodeContext) {
val fbSDK = FacebookSDKFingerprint.result?.mutableMethod
?: throw FacebookSDKFingerprint.exception
fbSDK.getInstructions().withIndex()
.filter { (_, instruction) -> instruction.opcode == Opcode.CONST_STRING }
.forEach { (index, instruction) ->
instruction as Instruction21c
fbSDK.replaceInstruction(
index,
BuilderInstruction21c(
Opcode.CONST_STRING,
instruction.registerA,
ImmutableStringReference("example.com"),
),
)
}
// =====
val firebaseInit = FirebaseInstallFingerprint.result?.mutableMethod
?: throw FirebaseInstallFingerprint.exception
firebaseInit.getInstructions().withIndex()
.filter { (_, instruction) -> instruction.opcode == Opcode.CONST_STRING }
.filter { (_, instruction) -> ((instruction as? Instruction21c)?.reference as? StringReference)?.string == "firebaseinstallations.googleapis.com" }
.forEach { (index, instruction) ->
instruction as Instruction21c
firebaseInit.replaceInstruction(
index,
BuilderInstruction21c(
Opcode.CONST_STRING,
instruction.registerA,
ImmutableStringReference("example.com"),
),
)
}
// =====
AppMesurementFingerprint.result?.mutableMethod?.addInstruction(
0, "return-void"
) ?: throw AppMesurementFingerprint.exception
}
}

View File

@ -0,0 +1,15 @@
package app.revanced.patches.piccomafr.tracking.fingerprints
import app.revanced.patcher.extensions.or
import app.revanced.patcher.fingerprint.MethodFingerprint
import com.android.tools.smali.dexlib2.AccessFlags
internal object AppMesurementFingerprint : MethodFingerprint(
accessFlags = AccessFlags.PRIVATE or AccessFlags.FINAL,
strings = listOf(
"config/app/",
"Fetching remote configuration"
),
returnType = "V"
)

View File

@ -0,0 +1,15 @@
package app.revanced.patches.piccomafr.tracking.fingerprints
import app.revanced.patcher.extensions.or
import app.revanced.patcher.fingerprint.MethodFingerprint
import com.android.tools.smali.dexlib2.AccessFlags
internal object FacebookSDKFingerprint : MethodFingerprint(
accessFlags = AccessFlags.STATIC or AccessFlags.CONSTRUCTOR,
strings = listOf(
"instagram.com",
"facebook.com"
),
returnType = "V"
)

View File

@ -0,0 +1,13 @@
package app.revanced.patches.piccomafr.tracking.fingerprints
import app.revanced.patcher.fingerprint.MethodFingerprint
import com.android.tools.smali.dexlib2.AccessFlags
internal object FirebaseInstallFingerprint : MethodFingerprint(
accessFlags = AccessFlags.PRIVATE.value,
strings = listOf(
"https://%s/%s/%s",
"firebaseinstallations.googleapis.com"
)
)