public static VPackage parsePackage(File packageFile) throws Throwable { PackageParser parser = PackageParserCompat.createParser(packageFile); PackageParser.Package p = PackageParserCompat.parsePackage(parser, packageFile, 0); if (p.requestedPermissions.contains("android.permission.FAKE_PACKAGE_SIGNATURE") && p.mAppMetaData != null && p.mAppMetaData.containsKey("fake-signature")) { String sig = p.mAppMetaData.getString("fake-signature"); p.mSignatures = new Signature[]{new Signature(sig)}; VLog.d(TAG, "Using fake-signature feature on : " + p.packageName); } else { try { PackageParserCompat.collectCertificates(parser, p, PackageParser.PARSE_IS_SYSTEM); } catch (Throwable e) { VLog.e(TAG, "collectCertificates failed", e); if (VirtualCore.get().getContext().getFileStreamPath(Constants.FAKE_SIGNATURE_FLAG).exists()) { VLog.w(TAG, "Using fake signature: " + p.packageName); p.mSignatures = new Signature[]{new Signature(FAKE_SIG)}; } else { throw e; } } } return buildPackageCache(p); }
public static VPackage parsePackage(File packageFile) throws Throwable { PackageParser parser = PackageParserCompat.createParser(packageFile); PackageParser.Package p = PackageParserCompat.parsePackage(parser, packageFile, 0); if (p.requestedPermissions.contains("android.permission.FAKE_PACKAGE_SIGNATURE") && p.mAppMetaData != null && p.mAppMetaData.containsKey("fake-signature")) { String sig = p.mAppMetaData.getString("fake-signature"); p.mSignatures = new Signature[]{new Signature(sig)}; VLog.d(TAG, "Using fake-signature feature on : " + p.packageName); } else { PackageParserCompat.collectCertificates(parser, p, PackageParser.PARSE_IS_SYSTEM); } return buildPackageCache(p); }
public static VPackage parsePackage(File packageFile) throws Throwable { PackageParser parser = PackageParserCompat.createParser(packageFile); PackageParser.Package p = PackageParserCompat.parsePackage(parser, packageFile, 0); if (p.requestedPermissions.contains("android.permission.FAKE_PACKAGE_SIGNATURE") && p.mAppMetaData != null && p.mAppMetaData.containsKey("fake-signature")) { String sig = p.mAppMetaData.getString("fake-signature"); p.mSignatures = new Signature[]{new Signature(sig)}; VLog.d(TAG, "Using fake-signature feature on : " + p.packageName); } else { try { PackageParserCompat.collectCertificates(parser, p, PackageParser.PARSE_IS_SYSTEM); } catch (Throwable e) { VLog.e(TAG, "collectCertificates failed", e); if (VirtualCore.get().getContext().getFileStreamPath(Constants.FAKE_SIGNATURE_FLAG).exists()) { VLog.w(TAG, "Using fake signature: " + p.packageName); p.mSignatures = new Signature[]{new Signature(FAKE_SIG)}; } else { throw e; } } } return buildPackageCache(p); }