You've already forked android_translation_layer
mirror of
https://gitlab.com/android_translation_layer/android_translation_layer.git
synced 2025-10-27 11:48:10 -07:00
PackageManager.GET_SIGNATURES use real apk signature instead of dummy
WhatsApp needs its own signature to generate a valid authentication token
This commit is contained in:
@@ -101,7 +101,9 @@ public class Context extends Object {
|
||||
theme = r.newTheme();
|
||||
application_info = new ApplicationInfo();
|
||||
try (XmlResourceParser parser = assets.openXmlResourceParser("AndroidManifest.xml")) {
|
||||
pkg = new PackageParser(null).parsePackage(r, parser, 0, new String[1]);
|
||||
PackageParser packageParser = new PackageParser(native_get_apk_path());
|
||||
pkg = packageParser.parsePackage(r, parser, 0, new String[1]);
|
||||
packageParser.collectCertificates(pkg, 0);
|
||||
application_info = pkg.applicationInfo;
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
|
||||
@@ -1343,35 +1343,6 @@ public class PackageManager {
|
||||
*/
|
||||
public static final String EXTRA_REQUEST_PERMISSION_PERMISSION_LIST = "android.content.pm.extra.PERMISSION_LIST";
|
||||
|
||||
// dummy certificate
|
||||
public final static byte[] X509_DUMMY = (
|
||||
"-----BEGIN CERTIFICATE-----\n" +
|
||||
"MIIERjCCAy6gAwIBAgIJAIz+EYMBU6aQMA0GCSqGSIb3DQEBBQUAMIGiMQswCQYD\n" +
|
||||
"VQQGEwJDQTELMAkGA1UECBMCQkMxEjAQBgNVBAcTCVZhbmNvdXZlcjEWMBQGA1UE\n" +
|
||||
"ChMNd3d3LmN1Y2JjLmNvbTEUMBIGA1UECxQLY29tbW9uc19zc2wxHTAbBgNVBAMU\n" +
|
||||
"FGRlbW9faW50ZXJtZWRpYXRlX2NhMSUwIwYJKoZIhvcNAQkBFhZqdWxpdXNkYXZp\n" +
|
||||
"ZXNAZ21haWwuY29tMB4XDTA2MTIxMTE1MzE0MVoXDTI4MTEwNTE1MzE0MVowgaQx\n" +
|
||||
"CzAJBgNVBAYTAlVTMREwDwYDVQQIEwhNYXJ5bGFuZDEUMBIGA1UEBxMLRm9yZXN0\n" +
|
||||
"IEhpbGwxFzAVBgNVBAoTDmh0dHBjb21wb25lbnRzMRowGAYDVQQLExF0ZXN0IGNl\n" +
|
||||
"cnRpZmljYXRlczEQMA4GA1UEAxMHZm9vLmNvbTElMCMGCSqGSIb3DQEJARYWanVs\n" +
|
||||
"aXVzZGF2aWVzQGdtYWlsLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC\n" +
|
||||
"ggEBAMhjr5aCPoyp0R1iroWAfnEyBMGYWoCidH96yGPFjYLowez5aYKY1IOKTY2B\n" +
|
||||
"lYho4O84X244QrZTRl8kQbYtxnGh4gSCD+Z8gjZ/gMvLUlhqOb+WXPAUHMB39GRy\n" +
|
||||
"zerA/ZtrlUqf+lKo0uWcocxeRc771KN8cPH3nHZ0rV0Hx4ZAZy6U4xxObe4rtSVY\n" +
|
||||
"07hNKXAb2odnVqgzcYiDkLV8ilvEmoNWMWrp8UBqkTcpEhYhCYp3cTkgJwMSuqv8\n" +
|
||||
"BqnGd87xQU3FVZI4tbtkB+KzjD9zz8QCDJAfDjZHR03KNQ5mxOgXwxwKw6lGMaiV\n" +
|
||||
"JTxpTKqym93whYk93l3ocEe55c0CAwEAAaN7MHkwCQYDVR0TBAIwADAsBglghkgB\n" +
|
||||
"hvhCAQ0EHxYdT3BlblNTTCBHZW5lcmF0ZWQgQ2VydGlmaWNhdGUwHQYDVR0OBBYE\n" +
|
||||
"FJ8Ud78/OrbKOIJCSBYs2tDLXofYMB8GA1UdIwQYMBaAFHua2o+QmU5S0qzbswNS\n" +
|
||||
"yoemDT4NMA0GCSqGSIb3DQEBBQUAA4IBAQC3jRmEya6sQCkmieULcvx8zz1euCk9\n" +
|
||||
"fSez7BEtki8+dmfMXe3K7sH0lI8f4jJR0rbSCjpmCQLYmzC3NxBKeJOW0RcjNBpO\n" +
|
||||
"c2JlGO9auXv2GDP4IYiXElLJ6VSqc8WvDikv0JmCCWm0Zga+bZbR/EWN5DeEtFdF\n" +
|
||||
"815CLpJZNcYwiYwGy/CVQ7w2TnXlG+mraZOz+owr+cL6J/ZesbdEWfjoS1+cUEhE\n" +
|
||||
"HwlNrAu8jlZ2UqSgskSWlhYdMTAP9CPHiUv9N7FcT58Itv/I4fKREINQYjDpvQcx\n" +
|
||||
"SaTYb9dr5sB4WLNglk7zxDtM80H518VvihTcP7FHL+Gn6g4j5fkI98+S\n" +
|
||||
"-----END CERTIFICATE-----\n").getBytes();
|
||||
|
||||
|
||||
public PackageManager() {
|
||||
package_info = PackageParser.generatePackageInfo(Context.pkg, new int[0], 0, 0, 0, new HashSet<>(), new PackageUserState());
|
||||
}
|
||||
@@ -1411,10 +1382,7 @@ public class PackageManager {
|
||||
* @see #GET_UNINSTALLED_PACKAGES
|
||||
*/
|
||||
public PackageInfo getPackageInfo(String packageName, int flags) throws NameNotFoundException {
|
||||
if ((flags & GET_SIGNATURES) == GET_SIGNATURES) {
|
||||
package_info.signatures = new Signature[]{new Signature(X509_DUMMY)};
|
||||
}
|
||||
return package_info;
|
||||
return PackageParser.generatePackageInfo(Context.pkg, new int[0], flags, 0, 0, new HashSet<>(), new PackageUserState());
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -661,7 +661,7 @@ public class PackageParser {
|
||||
|
||||
final String name = je.getName();
|
||||
|
||||
if (name.startsWith("META-INF/"))
|
||||
if (name.startsWith("META-INF/") && !"META-INF/MANIFEST.MF".equals(name)) // MANIFEST.MF is always trusted, get certificate from it
|
||||
continue;
|
||||
|
||||
if (ANDROID_MANIFEST_FILENAME.equals(name)) {
|
||||
@@ -675,10 +675,10 @@ public class PackageParser {
|
||||
}
|
||||
|
||||
if (localCerts == null) {
|
||||
Slog.e(TAG, "Package " + pkg.packageName + " has no certificates at entry " + je.getName() + "; ignoring!");
|
||||
jarFile.close();
|
||||
mParseError = PackageManager.INSTALL_PARSE_FAILED_NO_CERTIFICATES;
|
||||
return false;
|
||||
// Slog.e(TAG, "Package " + pkg.packageName + " has no certificates at entry " + je.getName() + "; ignoring!");
|
||||
// jarFile.close();
|
||||
// mParseError = PackageManager.INSTALL_PARSE_FAILED_NO_CERTIFICATES;
|
||||
// return false;
|
||||
} else if (certs == null) {
|
||||
certs = localCerts;
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user