gpt4 book ai didi

android - 来自任务管理器的 ActivityManager.forceStopPackage()

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

这是我第一次在这里发帖。我不确定在这里问这个问题是否合适,但我似乎找不到其他更合适的地方。无论如何,这是我的问题。

我知道 API ActivityManager.forceStopPackage() 是一个内部 API,只能从系统进程调用。但是,令我疑惑的是,我的motorola atrix手机上内置的任务管理器应用程序(包名com.motorola.PerformanceManager)可以直接调用它而不是系统过程。我验证了两件事。

首先是来自ps命令的非系统进程:

app_64 13681 1379 170788 29820 ffffffff 00000000 S com.motorola.PerformanceManager

其次,它确实从它的 odex 文件中调用了 ActivityManager.forceStopPackage() API(反编译成 smali,然后是 dex,然后是 java)。从smali代码中已经可以看出是调用了这个API。

我还检查了它的 AndroidManifest.xml 文件,这对我来说似乎没什么特别的(论坛错误地将内容识别为 URL 并阻止我发布它们)。

list 文件包含 android.permission.FORCE_STOP_PACKAGES 权限,这应该是系统权限。即使有此权限,非系统应用程序仍会收到权限拒绝错误。我尝试使用反射以 android.permission.FORCE_STOP_PACKAGES 权限访问此 API,但仍然出现运行时错误。

现在,内置的任务管理器应用程序如何在不成为系统进程的情况下调用内部API。一种可能性是应用程序使用相同的平台私钥签名。但是,我不确定如何验证这一点。此外,它仍然应该是一个系统进程,在 list 文件中有额外的描述。

希望有人能回答我的问题。谢谢。

最佳答案

“android.permission.FORCE_STOP_PACKAGES”权限受平台签名保护。

如果你有 Android 源代码,请检查权限声明:

/frameworks/base/core/res/AndroidManifest.xml

...
<permission android:name="android.permission.FORCE_STOP_PACKAGES"
android:permissionGroup="android.permission-group.SYSTEM_TOOLS"
android:protectionLevel="signature"
...

可以看到它的保护级别是签名,然后查看SDK文档中的解释:

“机器人:保护级别”

http://developer.android.com/guide/topics/manifest/permission-element.html#plevel

“签名...只有在请求应用程序使用与声明权限的应用程序相同的证书签名时系统才授予的权限。如果证书匹配,系统会自动授予权限,而无需通知用户或询问以获得用户的明确认可”

该权限由平台签名的framework-res声明,所以要使用该权限的应用程序也必须使用相同的签名进行签名。

/frameworks/base/core/res/Android.mk

...
LOCAL_PACKAGE_NAME := framework-res
LOCAL_CERTIFICATE := platform
...

问候

陈子腾

关于android - 来自任务管理器的 ActivityManager.forceStopPackage(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6577591/

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