gpt4 book ai didi

android - 以编程方式更改 list - Android 自定义权限

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:07:39 25 4
gpt4 key购买 nike

当前Android Permission System causes the following issue :

App A 定义了以下的自定义权限:

com.package.permission.READ_APP_DATA

当安装应用程序 B 并声明自定义权限时,它会被授予。

但是,如果应用 A 应用 B 之后安装,则该权限不会授予应用 B。

虽然这可能并不常见,但由于应用程序 B 通常是应用程序 A 的插件,所以它当然会发生并且对我的应用程序也是如此。

SuperUser 应用程序同意引入全局自定义权限 android.permission.ACCESS_SUPERUSER 如果用户决定切换 SuperUser 应用程序,这可能是个大问题。

为了处理这个问题,我打算在我的应用程序中使用以下代码来获得我即将开始声明的自定义权限:

checkPermissions(this, getCallingActivity().getPackageName()); // get the package name from the sender first

private boolean checkPermissions(Context context, String callingPackage) {

final List<PackageInfo> apps = context.getPackageManager().getInstalledPackages(PackageManager.GET_PERMISSIONS);

for (PackageInfo pi : apps) {

if (pi.packageName.equals(callingPackage)) {

String[] permissions = pi.requestedPermissions;

if (permissions != null) {
for (String permission : permissions) {
if (permission.equals("com.package.permission.READ_APP_DATA")) {
return true;
}
}
}
}
}
return false;

根据这个问题的标题:这种方法“安全”吗?或者有没有一种方法/root-hack 可以在安装后更改应用程序的 list 并将权限以编程方式“添加”到应用程序 B?

最佳答案

我不确定我的问题是否正确,因为我不知道安装后将权限侵入 list 如何连接到您在上面发布的代码。但要回答你的最后一段:

不是简单的方法。用户必须在他的设备上安装一个 mod,它可以在应用程序请求它们时即时授予任意权限。 IIRC list 文件本身仅在安装时进行解析。

所以我们在 mod 中使用的是改变类 com.android.server.pm.PackageManagerService 中的方法 grantPermissionsLPw

它用于授予启动器 android.permission.EXPAND_STATUS_BAR 权限,但它没有在其 list 中声明。

不过,我不确定这是否会用于您的应用程序。但总而言之:如果用户想授予应用程序任意、自定义权限:是的,这是可能的。

更新

当然,我可以详细说明一下。我可以看到两种情况发生

<强>1。静态模组

上述类位于services.jar 中。正如我们所知,像这样的文件可以被反编译、修改和重新编译。实际上,对这个文件的编辑相当容易。我不知道直接在电话上执行此操作的方法,但我认为这是可能的。只是不太可行,广泛的解决方案是可用的,因为它需要大量的处理能力。攻击者不能只提供一个通用文件。这些文件因设备而异,也因固件版本而异。要么,攻击者需要提供大量打过补丁的文件,或者通过将其上传到服务器、打补丁、重新下载并安装来实时打补丁。如果你问我,这种情况不太可能发生。

<强>2。动态模组

有不止一种可用的框架,它们允许在运行时更改流程。其中最受欢迎的是 Xposed Framework .基本上,它是一个修补过的 app_process 和一个相应的 API,利用 Reflection 来改变正在运行的进程。现在攻击者可以使用这个框架发布他的应用程序,并获得 root 访问权限,静默安装它。通过 root 访问权限,他甚至可以自己启用该模块,这通常需要用户交互。一旦启用了这样的模块,攻击者就可以 Hook 上述方法并更改请求的权限。他将通过获取包含所请求权限的对象字段来执行此操作,添加他需要的字段,然后运行添加最初定义的权限的原始方法。

请注意,这两种情况都需要用户自己安装恶意应用。你没有提到你的应用程序是做什么的,所以我真的不能帮助你评估风险。我只能说,攻击者可以做那样的事情。

关于android - 以编程方式更改 list - Android 自定义权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18573139/

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