Den*_*nix 9 permissions android
我的应用程序使用android:protectionLevel ="signature"定义权限.
<permission android:name="my.app.permission.EXAMPLE" android:protectionLevel="signature" />
Run Code Online (Sandbox Code Playgroud)
我的目的是制作只能由我签名的应用程序启动的应用程序模块.这些应用程序模块在其活动中具有android:permission.这很好用.但是......第三方应用可以使用相同的权限名称并将保护级别更改为正常,如下所示
<permission android:name="my.app.permission.EXAMPLE" android:protectionLevel="normal" />
Run Code Online (Sandbox Code Playgroud)
如果我的应用程序首先安装,我可以阻止其他应用程序覆盖权限.但是,如果一个人卸载我的应用程序,然后安装他的应用程序,它将重新定义权限.
是否可以阻止其他应用程序使用相同的权限名称,例如,为权限提供应用程序包等唯一ID?
尽管Manifest已加密,但任何人在尝试启动需要此权限的活动时都可以读取log cat中的权限名称(抛出具有所需权限名称的异常).
没有强制执行,只有惯例.与Java世界的其他部分一样,它松散地依赖于域名注册基础设施.我们的想法是,您的权限名称前缀为您拥有的公共Internet域名(例如com.myawesomecompany.myapp.MYPERMISSION).
域名的唯一性自然由注册商社区强制执行.
是的,系统是开放的滥用.
编辑:如果您要保护基于广播的频道,您可以添加双向签名检查,如果您愿意的话.使用权限名称作为第二个参数调用Context.sendBroadcast().
编辑方式2:我觉得你正在过度思考这个问题,同时关注更大的Android应用程序安全图片.这并不令人印象深刻.滥用权限基础设施并不是攻击Android应用程序的方式.如果我打算拦截你的意图,我不会把假意接收者(活动,服务)放在一起.相反,我会将调试器连接到应用程序中的真正接收器,签名和所有.
使用公开可用的工具,为给定的APK投入Eclipse项目需要几分钟.将其加载到Eclipse中,连接到正在运行的进程,在相关的系统API中设置断点(Android是开源的,请记住),瞧.通过一些额外的努力,您可以获得APK的反编译Java源代码,并根据您的方法进行调试,而不是系统方法.
| 归档时间: |
|
| 查看次数: |
2071 次 |
| 最近记录: |