您的位置:首页 > 移动开发 > Android开发

GTS:com.google.android.installpackageswhitelist.gts.GtsInstallPackagesWhitelistDeviceTest#testInstal

2017-07-10 18:42 821 查看
该项测试(Android Google Test Suite 5.0_r1新增的)是检查哪些apk添加了android.permission.INSTALL_PACKAGES权限(安装apk权限),有源码的apk只需将AndroidManifest.xml里对应权限去掉(但静默安就没权限了),没源码内置的第三方apk就麻烦了。

下面介绍修改framework绕过该项的fail,类似GTS:com.google.android.permission.gts.DefaultPermissionGrantPolicyTest#testDefaultGrants修改方法。

首先确认该测试的具体apk(testcases/GtsInstallPackagesWhitelistDeviceTestCases.apk),再反编译该apk并阅读代码

.line 58
invoke-virtual {v0, v1}, Landroid/content/pm/PackageManager;->getInstalledPackages(I)Ljava/util/List;
将getInstalledPackages返回的List<PackageInfo>把要绕过的apk删掉,再返回给...TestCases.apk,同上一篇修改ApplicationPackageManager,java
/** @hide */
@Override
public List<PackageInfo> getInstalledPackages(int flags, int userId) {
try {
String taker = mContext.getPackageName();
ParceledListSlice<PackageInfo> slice = mPM.getInstalledPackages(flags, userId);
List<PackageInfo> list = slice.getList();

if ("com.google.android.installpackageswhitelist.gts".equals(taker)) {
String[] whiteLists = new String[] {"com.telcel.contenedor", "com.facebook.system",
"com.portal", "com.naranya.claroapps", "com.android.systemui"};
Iterator<PackageInfo> it = list.iterator();
while(it.hasNext()) {
PackageInfo pi = it.next();
String packageName = pi.packageName;
if (Arrays.asList(whiteLists).contains(packageName)) {
Log.i(TAG, "getInstalledPackages remove packageName");
it.remove();
}
}
}
return list;
} catch (RemoteException e) {
throw new RuntimeException("Package manager has died", e);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐