删除签名验证会自动授予运行时权限吗?

Would removing signature verification grant runtime permission automatically?

系统应用程序无需用户交互即可获得权限,因为它们已使用与平台相同的密钥进行签名。

android:sharedUserId="android.uid.system" - can be used in manifest

在我的例子中,我无法访问平台密钥,因为 rom 是 big Sam Api 27+ 的存货。这让我想到了我的问题。如何进行?

禁用签名验证是否会为我的服务提供所需的权限?另一种解决方案是用它的 .images 解压 rom,然后用我自己的 unsign 和 resign 系统内的每个应用程序,但这是一个非常笨拙的解决方案,因为我不确定在创建 AOSP 修改后的 rom 时签名的是什么。

设备是可 root 的,但只是为了允许修改而不是作为最终目标,那会破坏目的。

我正在寻找指导,在哪里深入研究。也许有人曾经遇到过这个问题。

/// 删除 dm-verity 无效。考虑到此验证仅检查系统的完整性是否已更改,这是一个愚蠢的尝试。重新签署 /system/app/ 内的每个 apk 都不起作用。它使我的 android 无法启动。最可能的原因是我没有更改其他一些文件签名。

解决方法是修改services.jar

里面的签名验证方式

services.jar 有一个 PackageManagerService.smali 带有 CompareSignature 方法。

.method static compareSignatures
    .locals 7
    const/4 v0, 0x0
    return v0
.end method

修改此方法并将其重新打包回我的设备后,我创建了一个应用程序进行测试并获得了上述权限。最重要的功能是我现在可以访问的系统权限。 所有具有 "Not for use by third-party applications." 的功能均来自此处 https://android.izzysoft.de/applists/perms

这是目前为止我发现的唯一无需 root 即可运行的方法。我的测试设备是 Samsung Galaxy S4 5.0.1 我不知道它是否适用于较新的设备。