diff --git a/GrantAllPermissions/Readme.md b/GrantAllPermissions/Readme.md
new file mode 100644
index 0000000..5176e1e
--- /dev/null
+++ b/GrantAllPermissions/Readme.md
@@ -0,0 +1,13 @@
+# GrantAllPermissions
+
+Make Android grant all permissions requested by apps.
+
+This module grants all permissions from system-side when applied to `android`
+and pretends all permissions are granted when applied to individual apps.
+
+Please note:
+- This module should only be used for development and testing purposes
+ and should never be run on production devices.
+- This module will grant the
+ [notification permission](https://developer.android.com/develop/ui/views/notifications/notification-permission)
+ and thus all apps will be able to send notifications.
diff --git a/GrantAllPermissions/build.gradle.kts b/GrantAllPermissions/build.gradle.kts
new file mode 100644
index 0000000..68a85e4
--- /dev/null
+++ b/GrantAllPermissions/build.gradle.kts
@@ -0,0 +1,13 @@
+plugins {
+ alias(libs.plugins.buildlogic.android.application)
+ alias(libs.plugins.buildlogic.kotlin.android)
+}
+
+android {
+ namespace = "com.programminghoch10.GrantAllPermissions"
+
+ defaultConfig {
+ minSdk = 21
+ targetSdk = 35
+ }
+}
diff --git a/GrantAllPermissions/src/main/AndroidManifest.xml b/GrantAllPermissions/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..a38338c
--- /dev/null
+++ b/GrantAllPermissions/src/main/AndroidManifest.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/GrantAllPermissions/src/main/assets/xposed_init b/GrantAllPermissions/src/main/assets/xposed_init
new file mode 100644
index 0000000..68f5b1e
--- /dev/null
+++ b/GrantAllPermissions/src/main/assets/xposed_init
@@ -0,0 +1 @@
+com.programminghoch10.GrantAllPermissions.Hook
diff --git a/GrantAllPermissions/src/main/java/com/programminghoch10/GrantAllPermissions/Hook.kt b/GrantAllPermissions/src/main/java/com/programminghoch10/GrantAllPermissions/Hook.kt
new file mode 100644
index 0000000..a354861
--- /dev/null
+++ b/GrantAllPermissions/src/main/java/com/programminghoch10/GrantAllPermissions/Hook.kt
@@ -0,0 +1,51 @@
+package com.programminghoch10.GrantAllPermissions
+
+import android.content.pm.PackageManager
+import de.robv.android.xposed.IXposedHookLoadPackage
+import de.robv.android.xposed.XC_MethodReplacement
+import de.robv.android.xposed.XposedBridge
+import de.robv.android.xposed.XposedHelpers
+import de.robv.android.xposed.callbacks.XC_LoadPackage
+import de.robv.android.xposed.XC_MethodHook as MethodHook
+
+class Hook : IXposedHookLoadPackage {
+
+ private val returnPermissionGrantedHook = XC_MethodReplacement.returnConstant(PackageManager.PERMISSION_GRANTED)
+
+ override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
+ when (lpparam.packageName) {
+ "android" -> androidHook(lpparam)
+ else -> appHook(lpparam)
+ }
+ }
+
+ private fun androidHook(lpparam: XC_LoadPackage.LoadPackageParam) {
+ val ActivityManagerServiceClass = XposedHelpers.findClass("com.android.server.am.ActivityManagerService", lpparam.classLoader)
+ XposedBridge.hookAllMethods(ActivityManagerServiceClass, "checkComponentPermission", returnPermissionGrantedHook)
+ XposedBridge.hookAllMethods(ActivityManagerServiceClass, "checkPermissionForDevice", returnPermissionGrantedHook)
+ XposedBridge.hookAllMethods(ActivityManagerServiceClass, "checkPermission", returnPermissionGrantedHook)
+ val PermissionManagerServiceClass = XposedHelpers.findClass("com.android.server.pm.permission.PermissionManagerService", lpparam.classLoader)
+ XposedBridge.hookAllMethods(PermissionManagerServiceClass, "checkPermission", returnPermissionGrantedHook)
+ XposedBridge.hookAllMethods(PermissionManagerServiceClass, "checkUidPermission", returnPermissionGrantedHook)
+ XposedHelpers.findAndHookMethod(
+ PermissionManagerServiceClass,
+ "getAllPermissionStates",
+ String::class.java,
+ String::class.java,
+ Int::class.java,
+ object : MethodHook() {
+ override fun afterHookedMethod(param: MethodHookParam) {
+ @Suppress("UNCHECKED_CAST") val result = param.result as Map
+ result.forEach { (_, value) -> XposedHelpers.setBooleanField(value, "mGranted", true) }
+ }
+ })
+ }
+
+ private fun appHook(lpparam: XC_LoadPackage.LoadPackageParam) {
+ val PermissionManagerClass = XposedHelpers.findClass("android.permission.PermissionManager", lpparam.classLoader)
+ XposedHelpers.findAndHookMethod(PermissionManagerClass, "checkPermission", returnPermissionGrantedHook)
+ XposedHelpers.findAndHookMethod(PermissionManagerClass, "checkPermissionUncached", returnPermissionGrantedHook)
+ val PermissionCheckerManagerClass = XposedHelpers.findClass("android.permission.PermissionChecker", lpparam.classLoader)
+ XposedBridge.hookAllMethods(PermissionCheckerManagerClass, "checkPermission", returnPermissionGrantedHook)
+ }
+}
diff --git a/GrantAllPermissions/src/main/res/values/arrays.xml b/GrantAllPermissions/src/main/res/values/arrays.xml
new file mode 100644
index 0000000..db6e46a
--- /dev/null
+++ b/GrantAllPermissions/src/main/res/values/arrays.xml
@@ -0,0 +1,6 @@
+
+
+
+ - android
+
+
diff --git a/README.md b/README.md
index 1341bd3..e0f8ab8 100644
--- a/README.md
+++ b/README.md
@@ -16,6 +16,7 @@ A collection of small Xposed Modules.
| [Don'tResetIfBootedAndConnected](DontResetIfBootedAndConnected) | [@binarynoise](https://github.com/binarynoise) | | [GitHub](https://github.com/binarynoise/XposedModulets/releases?q=dontResetIfBootedAndConnected) |
| [FreeNotifications](FreeNotifications) | [@binarynoise](https://github.com/binarynoise) | Enables customization for all Notification Channels again | [GitHub](https://github.com/binarynoise/XposedModulets/releases?q=freeNotifications) [IzzyOnDroid](https://apt.izzysoft.de/fdroid/index/apk/de.binarynoise.freeNotifications) |
| [GalaxyWearable](GalaxyWearable) | [@programminghoch10](https://github.com/programminghoch10) | Enables running Samsung's GalaxyWearable app and compantions on modded Samsung devices. | [GitHub](https://github.com/binarynoise/XposedModulets/releases?q=GalaxyWearable) |
+| [GrantAllPermissions](GrantAllPermissions) | [@programminghoch10](https://github.com/programminghoch10) | Grant all permissions | [GitHub](https://github.com/binarynoise/XposedModulets/releases?q=GrantAllPermissions)
| [MotionEventMod](MotionEventMod) | [@programminghoch10](https://github.com/programminghoch10) | Disable touch input for some seconds after the stylus was in use | [GitHub](https://github.com/binarynoise/XposedModulets/releases?q=MotionEventMod) |
| [MuteSlf4jWarnings](MuteSlf4jWarnings) | [@binarynoise](https://github.com/binarynoise) | Mutes all slf4j warnings | [GitHub](https://github.com/binarynoise/XposedModulets/releases?q=muteSlf4jWarnings) |
| [OpenWifiOnTop](OpenWifiOnTop) | [@binarynoise](https://github.com/binarynoise) | Prioritizes open Wi-Fi networks in the Wi-Fi picker | [GitHub](https://github.com/binarynoise/XposedModulets/releases?q=OpenWifiOnTop) |
diff --git a/modules.gradle.kts b/modules.gradle.kts
index a3d053f..4724e73 100644
--- a/modules.gradle.kts
+++ b/modules.gradle.kts
@@ -11,6 +11,7 @@ include(":DontResetIfBootedAndConnected")
include(":EnableCallRecording")
include(":FreeNotifications")
include(":GalaxyWearable")
+include(":GrantAllPermissions")
include(":KeepSplitScreenRatio")
include(":MotionEventMod")
include(":MuteSlf4jWarnings")