feat(ProtonVPN): Add Unlock split tunneling patch (#6353)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
This commit is contained in:
parent
315931cbf8
commit
e0f33468e6
3 changed files with 58 additions and 0 deletions
|
|
@ -649,6 +649,10 @@ public final class app/revanced/patches/protonvpn/delay/RemoveDelayPatchKt {
|
||||||
public static final fun getRemoveDelayPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
public static final fun getRemoveDelayPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public final class app/revanced/patches/protonvpn/splittunneling/UnlockSplitTunnelingKt {
|
||||||
|
public static final fun getUnlockSplitTunnelingPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||||
|
}
|
||||||
|
|
||||||
public final class app/revanced/patches/rar/misc/annoyances/purchasereminder/HidePurchaseReminderPatchKt {
|
public final class app/revanced/patches/rar/misc/annoyances/purchasereminder/HidePurchaseReminderPatchKt {
|
||||||
public static final fun getHidePurchaseReminderPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
public static final fun getHidePurchaseReminderPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,20 @@
|
||||||
|
package app.revanced.patches.protonvpn.splittunneling
|
||||||
|
|
||||||
|
import app.revanced.patcher.fingerprint
|
||||||
|
import com.android.tools.smali.dexlib2.AccessFlags
|
||||||
|
import com.android.tools.smali.dexlib2.Opcode
|
||||||
|
|
||||||
|
internal val enableSplitTunnelingUiFingerprint = fingerprint {
|
||||||
|
strings("currentModeAppNames")
|
||||||
|
opcodes(
|
||||||
|
Opcode.MOVE_OBJECT,
|
||||||
|
Opcode.MOVE_FROM16,
|
||||||
|
Opcode.INVOKE_DIRECT_RANGE
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
internal val initializeSplitTunnelingSettingsUIFingerprint = fingerprint {
|
||||||
|
custom { method, _ ->
|
||||||
|
method.name == "applyRestrictions"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,34 @@
|
||||||
|
package app.revanced.patches.protonvpn.splittunneling
|
||||||
|
|
||||||
|
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
|
||||||
|
import app.revanced.patcher.extensions.InstructionExtensions.removeInstruction
|
||||||
|
import app.revanced.patcher.extensions.InstructionExtensions.replaceInstruction
|
||||||
|
import app.revanced.patcher.patch.bytecodePatch
|
||||||
|
import app.revanced.util.getReference
|
||||||
|
import app.revanced.util.indexOfFirstInstructionOrThrow
|
||||||
|
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
|
||||||
|
import com.android.tools.smali.dexlib2.iface.reference.MethodReference
|
||||||
|
|
||||||
|
@Suppress("unused")
|
||||||
|
val unlockSplitTunnelingPatch =
|
||||||
|
bytecodePatch(
|
||||||
|
name = "Unlock split tunneling",
|
||||||
|
) {
|
||||||
|
compatibleWith("ch.protonvpn.android")
|
||||||
|
|
||||||
|
execute {
|
||||||
|
val registerIndex = enableSplitTunnelingUiFingerprint.patternMatch!!.endIndex - 1
|
||||||
|
|
||||||
|
enableSplitTunnelingUiFingerprint.method.apply {
|
||||||
|
val register = getInstruction<OneRegisterInstruction>(registerIndex).registerA
|
||||||
|
replaceInstruction(registerIndex, "const/4 v$register, 0x0")
|
||||||
|
}
|
||||||
|
|
||||||
|
initializeSplitTunnelingSettingsUIFingerprint.method.apply {
|
||||||
|
val initSettingsIndex = indexOfFirstInstructionOrThrow {
|
||||||
|
getReference<MethodReference>()?.name == "getSplitTunneling"
|
||||||
|
}
|
||||||
|
removeInstruction(initSettingsIndex - 1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue