Skip to content

Commit b8c5fa4

Browse files
committed
feat(instagram): Add BypassIntegrityPatch patch
1 parent 5a4583a commit b8c5fa4

7 files changed

Lines changed: 520 additions & 98 deletions

File tree

extensions/instagram/src/main/java/app/revanced/extension/ExternalBrowserExtension.java

Lines changed: 0 additions & 39 deletions
This file was deleted.

patches/api/patches.api

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,10 @@ public final class li/auna/patches/instagram/layout/EnableDeveloperMenuPatchKt {
3030
public static final fun getEnableDeveloperMenuPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
3131
}
3232

33+
public final class li/auna/patches/instagram/misc/bypassintegrity/BypassIntegrityPatchKt {
34+
public static final fun getSignatureCheckPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
35+
}
36+
3337
public final class li/auna/patches/instagram/misc/extension/ExtensionPatchKt {
3438
public static final fun getSharedExtensionPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
3539
}
@@ -296,7 +300,12 @@ public final class li/auna/patches/youtube/layout/largepausebutton/LargePauseBut
296300
}
297301

298302
public final class li/auna/util/BytecodeUtilsKt {
303+
public static final fun addInstructionsAtControlFlowLabel (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;ILjava/lang/String;)V
304+
public static final fun addInstructionsAtControlFlowLabel (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;ILjava/lang/String;[Lapp/revanced/patcher/util/smali/ExternalLabel;)V
305+
public static final fun containsLiteralInstruction (Lcom/android/tools/smali/dexlib2/iface/Method;D)Z
306+
public static final fun containsLiteralInstruction (Lcom/android/tools/smali/dexlib2/iface/Method;F)Z
299307
public static final fun containsLiteralInstruction (Lcom/android/tools/smali/dexlib2/iface/Method;J)Z
308+
public static final fun findFreeRegister (Lcom/android/tools/smali/dexlib2/iface/Method;I[I)I
300309
public static final fun findInstructionIndicesReversed (Lcom/android/tools/smali/dexlib2/iface/Method;Lcom/android/tools/smali/dexlib2/Opcode;)Ljava/util/List;
301310
public static final fun findInstructionIndicesReversed (Lcom/android/tools/smali/dexlib2/iface/Method;Lkotlin/jvm/functions/Function1;)Ljava/util/List;
302311
public static final fun findInstructionIndicesReversedOrThrow (Lcom/android/tools/smali/dexlib2/iface/Method;Lcom/android/tools/smali/dexlib2/Opcode;)Ljava/util/List;
@@ -313,17 +322,27 @@ public final class li/auna/util/BytecodeUtilsKt {
313322
public static final fun indexOfFirstInstructionOrThrow (Lcom/android/tools/smali/dexlib2/iface/Method;Lcom/android/tools/smali/dexlib2/Opcode;)I
314323
public static synthetic fun indexOfFirstInstructionOrThrow$default (Lcom/android/tools/smali/dexlib2/iface/Method;ILcom/android/tools/smali/dexlib2/Opcode;ILjava/lang/Object;)I
315324
public static synthetic fun indexOfFirstInstructionOrThrow$default (Lcom/android/tools/smali/dexlib2/iface/Method;ILkotlin/jvm/functions/Function1;ILjava/lang/Object;)I
325+
public static final fun indexOfFirstInstructionReversed (Lcom/android/tools/smali/dexlib2/iface/Method;Lcom/android/tools/smali/dexlib2/Opcode;)I
316326
public static final fun indexOfFirstInstructionReversed (Lcom/android/tools/smali/dexlib2/iface/Method;Ljava/lang/Integer;Lcom/android/tools/smali/dexlib2/Opcode;)I
317327
public static final fun indexOfFirstInstructionReversed (Lcom/android/tools/smali/dexlib2/iface/Method;Ljava/lang/Integer;Lkotlin/jvm/functions/Function1;)I
318328
public static synthetic fun indexOfFirstInstructionReversed$default (Lcom/android/tools/smali/dexlib2/iface/Method;Ljava/lang/Integer;Lcom/android/tools/smali/dexlib2/Opcode;ILjava/lang/Object;)I
319329
public static synthetic fun indexOfFirstInstructionReversed$default (Lcom/android/tools/smali/dexlib2/iface/Method;Ljava/lang/Integer;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)I
330+
public static final fun indexOfFirstInstructionReversedOrThrow (Lcom/android/tools/smali/dexlib2/iface/Method;Lcom/android/tools/smali/dexlib2/Opcode;)I
320331
public static final fun indexOfFirstInstructionReversedOrThrow (Lcom/android/tools/smali/dexlib2/iface/Method;Ljava/lang/Integer;Lcom/android/tools/smali/dexlib2/Opcode;)I
321332
public static final fun indexOfFirstInstructionReversedOrThrow (Lcom/android/tools/smali/dexlib2/iface/Method;Ljava/lang/Integer;Lkotlin/jvm/functions/Function1;)I
322333
public static synthetic fun indexOfFirstInstructionReversedOrThrow$default (Lcom/android/tools/smali/dexlib2/iface/Method;Ljava/lang/Integer;Lcom/android/tools/smali/dexlib2/Opcode;ILjava/lang/Object;)I
323334
public static synthetic fun indexOfFirstInstructionReversedOrThrow$default (Lcom/android/tools/smali/dexlib2/iface/Method;Ljava/lang/Integer;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)I
335+
public static final fun indexOfFirstLiteralInstruction (Lcom/android/tools/smali/dexlib2/iface/Method;D)I
336+
public static final fun indexOfFirstLiteralInstruction (Lcom/android/tools/smali/dexlib2/iface/Method;F)I
324337
public static final fun indexOfFirstLiteralInstruction (Lcom/android/tools/smali/dexlib2/iface/Method;J)I
338+
public static final fun indexOfFirstLiteralInstructionOrThrow (Lcom/android/tools/smali/dexlib2/iface/Method;D)I
339+
public static final fun indexOfFirstLiteralInstructionOrThrow (Lcom/android/tools/smali/dexlib2/iface/Method;F)I
325340
public static final fun indexOfFirstLiteralInstructionOrThrow (Lcom/android/tools/smali/dexlib2/iface/Method;J)I
341+
public static final fun indexOfFirstLiteralInstructionReversed (Lcom/android/tools/smali/dexlib2/iface/Method;D)I
342+
public static final fun indexOfFirstLiteralInstructionReversed (Lcom/android/tools/smali/dexlib2/iface/Method;F)I
326343
public static final fun indexOfFirstLiteralInstructionReversed (Lcom/android/tools/smali/dexlib2/iface/Method;J)I
344+
public static final fun indexOfFirstLiteralInstructionReversedOrThrow (Lcom/android/tools/smali/dexlib2/iface/Method;D)I
345+
public static final fun indexOfFirstLiteralInstructionReversedOrThrow (Lcom/android/tools/smali/dexlib2/iface/Method;F)I
327346
public static final fun indexOfFirstLiteralInstructionReversedOrThrow (Lcom/android/tools/smali/dexlib2/iface/Method;J)I
328347
public static final fun indexOfFirstResourceId (Lcom/android/tools/smali/dexlib2/iface/Method;Ljava/lang/String;)I
329348
public static final fun indexOfFirstResourceIdOrThrow (Lcom/android/tools/smali/dexlib2/iface/Method;Ljava/lang/String;)I
Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,20 @@
11
package li.auna.patches.instagram.adblock
22

3-
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
43
import app.revanced.patcher.patch.bytecodePatch
4+
import li.auna.util.returnEarly
55

66
@Suppress("unused")
77
val adBlockPatch = bytecodePatch(
88
name = "Hide Ads",
99
description = "Hides ads in stories, discover, profile, etc. " +
1010
"An ad can still appear once when refreshing the home feed.",
1111
) {
12-
compatibleWith("com.instagram.android")
12+
compatibleWith(
13+
"com.instagram.android",
14+
"com.instagram.barcelona",
15+
)
1316

1417
execute {
15-
adInjectorFingerprint.method.addInstructions(
16-
0,
17-
"""
18-
const/4 v0, 0x0
19-
return v0
20-
""",
21-
)
18+
adInjectorFingerprint.method.returnEarly(false)
2219
}
2320
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package li.auna.patches.instagram.misc.bypassintegrity
2+
3+
import app.revanced.patcher.patch.bytecodePatch
4+
import li.auna.util.returnEarly
5+
6+
@Suppress("unused")
7+
val signatureCheckPatch = bytecodePatch(
8+
name = "Disable signature check",
9+
description = "Disables the signature check that causes the app to crash on startup."
10+
) {
11+
compatibleWith("com.instagram.android"("378.0.0.52.68"))
12+
13+
execute {
14+
isValidSignatureMethodFingerprint
15+
.match(isValidSignatureClassFingerprint.classDef)
16+
.method
17+
.returnEarly(true)
18+
}
19+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package li.auna.patches.instagram.misc.bypassintegrity
2+
3+
import app.revanced.patcher.fingerprint
4+
import li.auna.util.getReference
5+
import li.auna.util.indexOfFirstInstruction
6+
import com.android.tools.smali.dexlib2.iface.reference.MethodReference
7+
8+
internal val isValidSignatureClassFingerprint = fingerprint {
9+
strings("The provider for uri '", "' is not trusted: ")
10+
}
11+
12+
internal val isValidSignatureMethodFingerprint = fingerprint {
13+
parameters("L", "Z")
14+
returns("Z")
15+
custom { method, _ ->
16+
method.indexOfFirstInstruction {
17+
getReference<MethodReference>()?.name == "keySet"
18+
} >= 0
19+
}
20+
}

0 commit comments

Comments
 (0)