Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions app/src/main/java/org/lsposed/corepatch/Config.kt
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import org.lsposed.corepatch.XposedHelper.prefs

object Config {
const val BYPASS_DOWNGRADE = "downgrade"
const val BYPASS_MIN_SDK = "bypass_min_sdk"
const val BYPASS_VERIFICATION = "bypass_verification"
const val BYPASS_RESOURCE_ARSC_RESTRICTIONS = "bypass_resource_arsc_restrictions"
const val BYPASS_DIGEST = "bypass_digest"
Expand All @@ -17,6 +18,7 @@ object Config {

private val allConfig = arrayOf(
BYPASS_DOWNGRADE,
BYPASS_MIN_SDK,
BYPASS_VERIFICATION,
BYPASS_RESOURCE_ARSC_RESTRICTIONS,
BYPASS_DIGEST,
Expand All @@ -36,6 +38,10 @@ object Config {
return prefs.getBoolean(BYPASS_DOWNGRADE, false)
}

fun isBypassMinSdkEnabled(): Boolean {
return prefs.getBoolean(BYPASS_MIN_SDK, false)
}

fun isBypassVerificationEnabled(): Boolean {
return prefs.getBoolean(BYPASS_VERIFICATION, false)
}
Expand Down
4 changes: 4 additions & 0 deletions app/src/main/java/org/lsposed/corepatch/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,9 @@ class MainActivity : Activity() {
val bypassDowngrade = SwitchData(
getString(R.string.bypass_downgrade), getString(R.string.bypass_downgrade_summary), Config.BYPASS_DOWNGRADE
)
val bypassMinSdk = SwitchData(
getString(R.string.bypass_min_sdk), getString(R.string.bypass_min_sdk_summary), Config.BYPASS_MIN_SDK
)
val bypassVerification = SwitchData(
getString(R.string.bypass_verification), getString(R.string.bypass_verification_summary), Config.BYPASS_VERIFICATION
)
Expand Down Expand Up @@ -95,6 +98,7 @@ class MainActivity : Activity() {

val dataSet = arrayListOf(
bypassDowngrade,
bypassMinSdk,
bypassVerification,
bypassResourceArscRestrictions,
bypassDigest,
Expand Down
2 changes: 2 additions & 0 deletions app/src/main/java/org/lsposed/corepatch/XposedMain.kt
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import org.lsposed.corepatch.hook.ApkSignatureVerifierHook
import org.lsposed.corepatch.hook.ApkSigningBlockUtilsHook
import org.lsposed.corepatch.hook.ApplicationInfoHook
import org.lsposed.corepatch.hook.AssetManagerHook
import org.lsposed.corepatch.hook.FrameworkParsingPackageUtilsHook
import org.lsposed.corepatch.hook.InstallPackageHelperHook
import org.lsposed.corepatch.hook.KeySetManagerServiceHook
import org.lsposed.corepatch.hook.MessageDigestHook
Expand Down Expand Up @@ -42,6 +43,7 @@ class XposedMain : XposedModule() {
ApkSigningBlockUtilsHook,
ApplicationInfoHook,
AssetManagerHook,
FrameworkParsingPackageUtilsHook,
InstallPackageHelperHook,
KeySetManagerServiceHook,
MessageDigestHook,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
package org.lsposed.corepatch.hook

import android.annotation.SuppressLint
import org.lsposed.corepatch.Config
import org.lsposed.corepatch.XposedHelper.findClassIfExists
import org.lsposed.corepatch.XposedHelper.hookBefore

object FrameworkParsingPackageUtilsHook : BaseHook() {
override val name = "FrameworkParsingPackageUtilsHook"

@SuppressLint("PrivateApi")
override fun hook() {
// https://cs.android.com/android/platform/superproject/+/android-9.0.0_r61:frameworks/base/core/java/android/content/pm/PackageParser.java;l=2625
// public static int computeMinSdkVersion(int minVers, String minCode, int platformSdkVersion, String[] platformSdkCodenames, String[] outError)
// https://cs.android.com/android/platform/superproject/+/android-11.0.0_r1:frameworks/base/core/java/android/content/pm/parsing/ParsingPackageUtils.java;l=1382
// https://cs.android.com/android/platform/superproject/+/android-13.0.0_r1:frameworks/base/core/java/android/content/pm/parsing/FrameworkParsingPackageUtils.java;l=298
// public static ParseResult<Integer> computeMinSdkVersion(int minVers, String minCode, int platformSdkVersion, String[] platformSdkCodenames, ParseInput input)
listOf(
"android.content.pm.PackageParser",
"android.content.pm.parsing.ParsingPackageUtils",
"android.content.pm.parsing.FrameworkParsingPackageUtils",
).mapNotNull { findClassIfExists(it) }
.flatMap { clazz ->
clazz.declaredMethods.filter { m ->
m.name == "computeMinSdkVersion" && m.parameterTypes.take(3) ==
listOf(Int::class.java, String::class.java, Int::class.java)
}
}
.forEach { computeMinSdkVersionMethod ->
hookBefore(computeMinSdkVersionMethod) { callback ->
if (Config.isBypassMinSdkEnabled()) {
val minVers = callback.args[0] as Int
val minCode = callback.args[1] as String?
val platformSdkVersion = callback.args[2] as Int
if (minCode == null && minVers > platformSdkVersion) {
callback.args[0] = platformSdkVersion
}
}
}
}
}
}
2 changes: 2 additions & 0 deletions app/src/main/res/values-el/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
<string name="xposed_service_unavailable_summary">Βεβαιωθείτε ότι το πλαίσιο Xposed εκτελείται και ότι αυτή η μονάδα είναι ενεργοποιημένη.</string>
<string name="bypass_downgrade">Επιτρεπόμενη υποβάθμιση</string>
<string name="bypass_downgrade_summary">Επιτρέπει την υποβάθμιση εφαρμογών.</string>
<string name="bypass_min_sdk">Παράκαμψη περιορισμού ελάχιστης έκδοσης SDK</string>
<string name="bypass_min_sdk_summary">Επιτρέπει την εγκατάσταση APK των οποίων το minSdkVersion είναι μεγαλύτερο από την έκδοση του συστήματος.</string>
<string name="bypass_verification">Απενεργοποίηση επαλήθευσης σύνοψης</string>
<string name="bypass_verification_summary">Επιτρέπει την εγκατάσταση εφαρμογών μετά την τροποποίηση ενός αρχείου στο APK (αγνοεί το σφάλμα μη έγκυρης σύνοψης).</string>
<string name="bypass_resource_arsc_restrictions">Παράκαμψη περιορισμού στοίχισης του resources.arsc</string>
Expand Down
2 changes: 2 additions & 0 deletions app/src/main/res/values-fr/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
<string name="xposed_service_unavailable_summary">Assurez-vous que le framework Xposed est en cours d’exécution et que ce module est activé.</string>
<string name="bypass_downgrade">Permettre la rétrogradation</string>
<string name="bypass_downgrade_summary">Permettre la rétrogradation d\’applications.</string>
<string name="bypass_min_sdk">Contourner la version minimale du SDK</string>
<string name="bypass_min_sdk_summary">Autoriser l’installation des APK dont le minSdkVersion est supérieur à la version du système.</string>
<string name="bypass_verification">Désactiver la vérification digest</string>
<string name="bypass_verification_summary">Permettre l\’installation d\’applications après avoir modifier le fichier dans l\’apk (ignorer les erreures invalid digest).</string>
<string name="bypass_resource_arsc_restrictions">Contourner la contrainte d’alignement de resources.arsc</string>
Expand Down
2 changes: 2 additions & 0 deletions app/src/main/res/values-in/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
<string name="xposed_service_unavailable_summary">Pastikan framework Xposed berjalan dan modul ini diaktifkan.</string>
<string name="bypass_downgrade">Izinkan turun versi</string>
<string name="bypass_downgrade_summary">Izinkan turun versi aplikasi.</string>
<string name="bypass_min_sdk">Lewati pembatasan versi SDK minimum</string>
<string name="bypass_min_sdk_summary">Izinkan pemasangan APK dengan minSdkVersion yang lebih tinggi dari versi sistem.</string>
<string name="bypass_verification">Matikan verifikasi digest</string>
<string name="bypass_verification_summary">Izinkan pemasangan aplikasi setelah file dalam apk dimodifikasi (abaikan kesalahan digest yang tidak valid).</string>
<string name="bypass_resource_arsc_restrictions">Lewati pembatasan penyelarasan resources.arsc</string>
Expand Down
2 changes: 2 additions & 0 deletions app/src/main/res/values-it/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
<string name="xposed_service_unavailable_summary">Assicurati che il framework Xposed sia in esecuzione e che questo modulo sia abilitato.</string>
<string name="bypass_downgrade">Consenti ​​Downgrade</string>
<string name="bypass_downgrade_summary">Consenti il ​​downgrade delle applicazioni.</string>
<string name="bypass_min_sdk">Ignora il vincolo di versione minima dell’SDK</string>
<string name="bypass_min_sdk_summary">Consenti l’installazione di APK con minSdkVersion superiore alla versione del sistema.</string>
<string name="bypass_verification">Disabilita verifica digest</string>
<string name="bypass_verification_summary">Consente l\'installazione di app dopo aver modificato il file nell\'apk (ignora l\'errore digest non valido).</string>
<string name="bypass_resource_arsc_restrictions">Ignora il vincolo di allineamento di resources.arsc</string>
Expand Down
2 changes: 2 additions & 0 deletions app/src/main/res/values-ja/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
<string name="xposed_service_unavailable_summary">Xposed フレームワークが実行中で、このモジュールが有効になっていることを確認してください。</string>
<string name="bypass_downgrade">ダウングレードを許可する</string>
<string name="bypass_downgrade_summary">アプリのダウングレードを許可します。</string>
<string name="bypass_min_sdk">最小 SDK バージョンの制限を回避</string>
<string name="bypass_min_sdk_summary">minSdkVersion が現在のシステムバージョンより高い APK のインストールを許可します。</string>
<string name="bypass_verification">ダイジェストの検証を無効化する</string>
<string name="bypass_verification_summary">APK ファイルの変更後にアプリをインストールできるようにします。(無効なダイジェストのエラーを無視します)</string>
<string name="bypass_resource_arsc_restrictions">resources.arsc のアラインメント制限を回避</string>
Expand Down
2 changes: 2 additions & 0 deletions app/src/main/res/values-ko/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
<string name="xposed_service_unavailable_summary">Xposed 프레임워크가 실행 중이고 이 모듈이 활성화되어 있는지 확인하세요.</string>
<string name="bypass_downgrade">다운그레이드 허용</string>
<string name="bypass_downgrade_summary">애플리케이션 다운그레이드를 허용합니다.</string>
<string name="bypass_min_sdk">최소 SDK 버전 제한 우회</string>
<string name="bypass_min_sdk_summary">minSdkVersion이 현재 시스템 버전보다 높은 APK 설치를 허용합니다.</string>
<string name="bypass_verification">다이제스트 확인 비활성화</string>
<string name="bypass_verification_summary">apk의 파일을 수정한 후 앱을 설치할 수 있습니다. (잘못된 다이제스트 오류를 무시).</string>
<string name="bypass_resource_arsc_restrictions">resources.arsc 정렬 제한 우회</string>
Expand Down
2 changes: 2 additions & 0 deletions app/src/main/res/values-pt-rBR/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
<string name="xposed_service_unavailable_summary">Verifique se o framework Xposed está em execução e se este módulo está ativado.</string>
<string name="bypass_downgrade">Permitir downgrade</string>
<string name="bypass_downgrade_summary">Permite o downgrade de apps</string>
<string name="bypass_min_sdk">Ignorar restrição de versão mínima do SDK</string>
<string name="bypass_min_sdk_summary">Permitir a instalação de APKs cujo minSdkVersion seja maior que a versão do sistema.</string>
<string name="bypass_verification">Desativar verificação de integridade</string>
<string name="bypass_verification_summary">Permite instalar apps após modificar um arquivo no APK (ignore o erro de integridade inválido)</string>
<string name="bypass_resource_arsc_restrictions">Ignorar restrição de alinhamento do resources.arsc</string>
Expand Down
2 changes: 2 additions & 0 deletions app/src/main/res/values-ru/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
<string name="xposed_service_unavailable_summary">Убедитесь, что фреймворк Xposed запущен, а этот модуль включён.</string>
<string name="bypass_downgrade">Разрешить понижать версию.</string>
<string name="bypass_downgrade_summary">Разрешить переустановку приложений на прошлые версии.</string>
<string name="bypass_min_sdk">Обойти ограничение минимальной версии SDK</string>
<string name="bypass_min_sdk_summary">Разрешить установку APK, у которых minSdkVersion выше версии системы.</string>
<string name="bypass_verification">Отключить проверку дайджеста</string>
<string name="bypass_verification_summary">Позволяет устанавливать приложения после изменения файла в apk (игнорировать недопустимую ошибку дайджеста).</string>
<string name="bypass_resource_arsc_restrictions">Обойти ограничение выравнивания resources.arsc</string>
Expand Down
2 changes: 2 additions & 0 deletions app/src/main/res/values-tr-rTR/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
<string name="xposed_service_unavailable_summary">Xposed altyapısının çalıştığından ve bu modülün etkinleştirildiğinden emin olun.</string>
<string name="bypass_downgrade">Sürüm düşürmeye izin ver</string>
<string name="bypass_downgrade_summary">Uygulamaların sürüm düşürmesine izin ver.</string>
<string name="bypass_min_sdk">Minimum SDK sürümü kısıtlamasını atla</string>
<string name="bypass_min_sdk_summary">minSdkVersion değeri sistem sürümünden yüksek olan APK’ların yüklenmesine izin ver.</string>
<string name="bypass_verification">Özet doğrulamayı devre dışı bırak</string>
<string name="bypass_verification_summary">APK içindeki dosya değiştirildikten sonra uygulama yüklenmesine izin verir (geçersiz özet hatasını yoksayar).</string>
<string name="bypass_resource_arsc_restrictions">resources.arsc hizalama kısıtlamasını atla</string>
Expand Down
2 changes: 2 additions & 0 deletions app/src/main/res/values-zh-rCN/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
<string name="xposed_service_unavailable_summary">请确认 Xposed 框架正在运行,并且已启用本模块。</string>
<string name="bypass_downgrade">允许降级安装应用</string>
<string name="bypass_downgrade_summary">允许应用在安装新版本的情况下直接覆盖安装旧版本</string>
<string name="bypass_min_sdk">绕过最低 SDK 版本限制</string>
<string name="bypass_min_sdk_summary">允许安装 minSdkVersion 高于当前系统版本的 APK</string>
<string name="bypass_verification">禁用软件包管理器签名验证</string>
<string name="bypass_verification_summary">关闭安装应用时的签名验证,可以安装被篡改的应用</string>
<string name="bypass_resource_arsc_restrictions">绕过 resources.arsc 对齐限制</string>
Expand Down
2 changes: 2 additions & 0 deletions app/src/main/res/values-zh-rTW/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
<string name="xposed_service_unavailable_summary">請確認 Xposed 框架正在執行,並且已啟用本模組。</string>
<string name="bypass_downgrade">允許降版安裝應用程式</string>
<string name="bypass_downgrade_summary">允許應用程式在安裝新版本的情況下直接覆蓋安裝舊版本</string>
<string name="bypass_min_sdk">略過最低 SDK 版本限制</string>
<string name="bypass_min_sdk_summary">允許安裝 minSdkVersion 高於目前系統版本的 APK</string>
<string name="bypass_verification">停用套裝安裝程式簽名驗證</string>
<string name="bypass_verification_summary">停用安裝應用程式時的簽名驗證,可以安裝被修改的應用程式</string>
<string name="bypass_resource_arsc_restrictions">略過 resources.arsc 對齊限制</string>
Expand Down
2 changes: 2 additions & 0 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@
<string name="bypass_shared_user">Bypass shared user verification</string>
<string name="disable_verification_agent">Disable Package Verification Agent</string>
<string name="bypass_downgrade_summary">Allow installing an older version over a newer version.</string>
<string name="bypass_min_sdk">Bypass minimum SDK version check</string>
<string name="bypass_min_sdk_summary">Allow installing APKs whose minSdkVersion is higher than the system SDK version.</string>
<string name="bypass_verification_summary">Allow installing APKs with invalid or modified signatures.</string>
<string name="bypass_resource_arsc_restrictions">Bypass resources.arsc alignment restriction</string>
<string name="bypass_resource_arsc_restrictions_summary">Allow installing APKs whose resources.arsc is compressed or not 4-byte aligned on Android 11 and later.</string>
Expand Down
Loading