Skip to content

Commit 895f620

Browse files
chore: Merge branch dev to main (#39)
1 parent db514b8 commit 895f620

File tree

5 files changed

+69
-1
lines changed

5 files changed

+69
-1
lines changed

CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
1+
# [1.7.0-dev.1](https://github.com/brosssh/revanced-patches/compare/v1.6.1...v1.7.0-dev.1) (2025-07-11)
2+
3+
4+
### Features
5+
6+
* **Geocaching:** Premium patch for Geocaching. ([#38](https://github.com/brosssh/revanced-patches/issues/38)) ([df8adad](https://github.com/brosssh/revanced-patches/commit/df8adad82273d81ac7b129bc2bbe9a03196c55c6))
7+
18
## [1.6.1](https://github.com/Brosssh/revanced-patches/compare/v1.6.0...v1.6.1) (2025-05-14)
29

310

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
org.gradle.parallel = true
22
org.gradle.caching = true
33
kotlin.code.style = official
4-
version = 1.6.1
4+
version = 1.7.0-dev.1

patches/api/patches.api

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@ public final class app/revanced/patches/calistree/pro/UnlockProPatchKt {
22
public static final fun getUnlockProPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
33
}
44

5+
public final class app/revanced/patches/geocaching/subscription/UnlockProPatchKt {
6+
public static final fun getUnlockPremiumPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
7+
}
8+
59
public final class app/revanced/patches/hevy/subscription/UnlockSubscriptionPatchKt {
610
public static final fun getUnlockSubscriptionPatch ()Lapp/revanced/patcher/patch/RawResourcePatch;
711
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package app.revanced.patches.geocaching.subscription
2+
3+
import app.revanced.patcher.fingerprint
4+
5+
internal val userProfileDeserializerFingerprint = fingerprint {
6+
custom { methodDef, classDef ->
7+
classDef.endsWith("UserProfileResponse\$\$serializer;") && methodDef.name == "deserialize"
8+
}
9+
}
10+
11+
internal val ownProfileDeserializerFingerprint = fingerprint {
12+
custom { methodDef, classDef ->
13+
classDef.endsWith("OwnProfileResponse\$Profile\$\$serializer;") && methodDef.name == "deserialize"
14+
}
15+
}
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package app.revanced.patches.geocaching.subscription
2+
3+
import app.revanced.patcher.Fingerprint
4+
import app.revanced.patcher.extensions.InstructionExtensions.addInstruction
5+
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
6+
import app.revanced.patcher.patch.bytecodePatch
7+
import app.revanced.util.indexOfFirstInstructionOrThrow
8+
import com.android.tools.smali.dexlib2.Opcode
9+
import com.android.tools.smali.dexlib2.iface.instruction.RegisterRangeInstruction
10+
11+
@Suppress("unused")
12+
val unlockPremiumPatch = bytecodePatch(
13+
name = "Unlock Premium features",
14+
description = "WARNING: This only works via mount install (root required). Lists are still locked as they are server sided."
15+
) {
16+
compatibleWith("com.groundspeak.geocaching.intro")
17+
18+
execute {
19+
fun overrideRegister(fingerprint: Fingerprint, indexToOverride: Int) {
20+
with(fingerprint.method) {
21+
22+
val createUserProfileIndex = indexOfFirstInstructionOrThrow {
23+
opcode == Opcode.INVOKE_DIRECT_RANGE
24+
}
25+
26+
val createUserStartingRegister =
27+
getInstruction<RegisterRangeInstruction>(createUserProfileIndex).startRegister
28+
29+
val registerToOverwrite = createUserStartingRegister + 1 + indexToOverride
30+
31+
addInstruction(
32+
createUserProfileIndex,
33+
"const/16 v${registerToOverwrite}, 0x3"
34+
)
35+
}
36+
}
37+
38+
overrideRegister(userProfileDeserializerFingerprint, 13)
39+
40+
overrideRegister(ownProfileDeserializerFingerprint, 13)
41+
}
42+
}

0 commit comments

Comments
 (0)