gpt4 book ai didi

android - 如何防止其他应用程序定义相同的权限名称

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:38:52 24 4
gpt4 key购买 nike

我的应用程序使用 android:protectionLevel="signature"定义了一个权限。

<permission android:name="my.app.permission.EXAMPLE" android:protectionLevel="signature" />

我的 Intent 是制作只能由我签名的应用程序启动的应用程序模块。这些应用程序模块在其 Activity 中具有 android:permission。这很好用。但...第三方应用可以使用相同的权限名称并将保护级别更改为正常,如下所示

<permission android:name="my.app.permission.EXAMPLE" android:protectionLevel="normal" />

如果先安装我的应用程序,我可以防止其他应用程序覆盖权限。但是,如果有人卸载我的应用程序然后安装他的应用程序,它会重新定义权限。

是否可以防止其他应用程序使用相同的权限名称,例如,为该权限提供唯一的ID,如应用程序包?

虽然 Manifest 是加密的,但当它试图启动需要此权限的 Activity 时,任何人都可以在 log cat 中读取权限名称(抛出具有所需权限名称的异常)。

最佳答案

没有强制,只有约定。与 Java 世界的其他部分一样,它松散地依赖于域名注册基础设施。这个想法是在您的权限名称前加上您拥有的公共(public)互联网域名(例如 com.myawesomecompany.myapp.MYPERMISSION)。

域名的唯一性自然是由注册商社区强制执行的。

是的,系统对滥用开放。

编辑:如果您要保护基于广播的 channel ,您可以根据需要添加双向签名检查。使用权限名称作为第二个参数调用 Context.sendBroadcast()。

EDIT2:我觉得您在闭眼关注更大的 Android 应用程序安全图片时想得太多了。这并不令人印象深刻。滥用特权基础架构并不是入侵 Android 应用程序的方式。如果我打算拦截你的 Intent ,我就不会组装一个虚假的 Intent 接收器( Activity 、服务)。相反,我会使用调试器连接到您应用程序中的真正接收器、签名和所有内容。

使用公开可用的工具,只需几分钟即可为给定的 APK 组合一个 Eclipse 项目。将其加载到 Eclipse 中,连接到正在运行的进程,在相关系统 API 中设置断点(Android 是开源的,记住),瞧。通过一些额外的努力,您可以获得 APK 的反编译 Java 源代码并根据您的方法进行调试,而不是系统方法。

关于android - 如何防止其他应用程序定义相同的权限名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11458458/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com