Info Call to dynamic code loading API

Description

List of all dynamic code loading API calls in the application. Loading code from untrsuted sources could allow the execution of malicious code in the context of the current application.

Recommendation

This entry is informative, no recommendations applicable.

Technical details

Method rx.c.e.i.<clinit>() calling method java.lang.System.getProperty()


    static i()
    {
        rx.c.e.i.c = Boolean.valueOf(System.getProperty("rx.just.strong-mode", "false")).booleanValue();
        return;
    }

Method rx.c.e.g.<clinit>() calling method java.lang.System.getProperty()


    static g()
    {
        int v0 = 128;
        if (rx.c.e.f.a()) {
            v0 = 16;
        }
        String v1_6 = System.getProperty("rx.ring-buffer.size");
        if (v1_6 != null) {
            try {
                v0 = Integer.parseInt(v1_6);
            } catch (String v2_0) {
                System.err.println(new StringBuilder().append("Failed to set \'rx.buffer.size\' with value ").append(v1_6).append(" => ").append(v2_0.getMessage()).toString());
            }
        }
        rx.c.e.g.b = v0;
        return;
    }

Method rx.c.e.b.y.<clinit>() calling method java.lang.System.getProperty()


    static y()
    {
        int v0_0 = 1;
        if (System.getProperty("rx.unsafe-disable") == null) {
            v0_0 = 0;
        }
        rx.c.e.b.y.b = v0_0;
        try {
            int v0_1 = sun.misc.Unsafe.getDeclaredField("theUnsafe");
            v0_1.setAccessible(1);
            int v0_3 = ((sun.misc.Unsafe) v0_1.get(0));
        } catch (int v0) {
            v0_3 = 0;
        }
        rx.c.e.b.y.a = v0_3;
        return;
    }

Method io.intercom.com.bumptech.glide.load.c.j$a.<clinit>() calling method java.lang.System.getProperty()


    static j$a()
    {
        io.intercom.com.bumptech.glide.load.c.j$a.a = System.getProperty("http.agent");
        java.util.Map v0_4 = new java.util.HashMap(2);
        if (!android.text.TextUtils.isEmpty(io.intercom.com.bumptech.glide.load.c.j$a.a)) {
            v0_4.put("User-Agent", java.util.Collections.singletonList(new io.intercom.com.bumptech.glide.load.c.j$b(io.intercom.com.bumptech.glide.load.c.j$a.a)));
        }
        v0_4.put("Accept-Encoding", java.util.Collections.singletonList(new io.intercom.com.bumptech.glide.load.c.j$b("identity")));
        io.intercom.com.bumptech.glide.load.c.j$a.b = java.util.Collections.unmodifiableMap(v0_4);
        return;
    }

Method com.squareup.okhttp.j.<clinit>() calling method java.lang.System.getProperty()


    static j()
    {
        com.squareup.okhttp.j v0_10;
        if (com.squareup.okhttp.j.desiredAssertionStatus()) {
            v0_10 = 0;
        } else {
            v0_10 = 1;
        }
        long v2_2;
        com.squareup.okhttp.j.b = v0_10;
        com.squareup.okhttp.j v0_1 = System.getProperty("http.keepAlive");
        long v2_1 = System.getProperty("http.keepAliveDuration");
        String v4 = System.getProperty("http.maxConnections");
        if (v2_1 == 0) {
            v2_2 = 300000;
        } else {
            v2_2 = Long.parseLong(v2_1);
        }
        if ((v0_1 == null) || (Boolean.parseBoolean(v0_1))) {
            if (v4 == null) {
                com.squareup.okhttp.j.c = new com.squareup.okhttp.j(5, v2_2);
            } else {
                com.squareup.okhttp.j.c = new com.squareup.okhttp.j(Integer.parseInt(v4), v2_2);
            }
        } else {
            com.squareup.okhttp.j.c = new com.squareup.okhttp.j(0, v2_2);
        }
        return;
    }

Method com.amazonaws.util.VersionInfoUtils.d() calling method java.lang.System.getProperty()


    static String d()
    {
        String v0_1 = new StringBuilder(128);
        v0_1.append("aws-sdk-");
        v0_1.append(com.amazonaws.util.StringUtils.b(com.amazonaws.util.VersionInfoUtils.b()));
        v0_1.append("/");
        v0_1.append(com.amazonaws.util.VersionInfoUtils.a());
        v0_1.append(" ");
        v0_1.append(com.amazonaws.util.VersionInfoUtils.a(System.getProperty("os.name")));
        v0_1.append("/");
        v0_1.append(com.amazonaws.util.VersionInfoUtils.a(System.getProperty("os.version")));
        v0_1.append(" ");
        v0_1.append(com.amazonaws.util.VersionInfoUtils.a(System.getProperty("java.vm.name")));
        v0_1.append("/");
        v0_1.append(com.amazonaws.util.VersionInfoUtils.a(System.getProperty("java.vm.version")));
        v0_1.append("/");
        v0_1.append(com.amazonaws.util.VersionInfoUtils.a(System.getProperty("java.version")));
        String v1_25 = System.getProperty("user.language");
        String v2_1 = System.getProperty("user.region");
        if ((v1_25 != null) && (v2_1 != null)) {
            v0_1.append(" ");
            v0_1.append(com.amazonaws.util.VersionInfoUtils.a(v1_25));
            v0_1.append("_");
            v0_1.append(com.amazonaws.util.VersionInfoUtils.a(v2_1));
        }
        return v0_1.toString();
    }

Method com.amazonaws.regions.RegionUtils.c() calling method java.lang.System.getProperty()


    private static void c()
    {
        java.io.FileInputStream v0_1 = System.getProperty("com.amazonaws.regions.RegionUtils.fileOverride");
        if (com.amazonaws.regions.RegionUtils.b.isDebugEnabled()) {
            com.amazonaws.regions.RegionUtils.b.debug(new StringBuilder().append("Using local override of the regions file (").append(v0_1).append(") to initiate regions data...").toString());
        }
        com.amazonaws.regions.RegionUtils.a(new java.io.FileInputStream(new java.io.File(v0_1)));
        return;
    }

Method com.amazonaws.regions.RegionUtils.b() calling method java.lang.System.getProperty()


    public static declared_synchronized void b()
    {
        try {
            if (System.getProperty("com.amazonaws.regions.RegionUtils.fileOverride") != null) {
                try {
                    com.amazonaws.regions.RegionUtils.c();
                } catch (RuntimeException v0_7) {
                    throw new RuntimeException("Couldn\'t find regions override file specified", v0_7);
                }
            }
        } catch (RuntimeException v0_5) {
            throw v0_5;
        }
        if (com.amazonaws.regions.RegionUtils.a == null) {
            com.amazonaws.regions.RegionUtils.d();
        }
        if (com.amazonaws.regions.RegionUtils.a != null) {
            return;
        } else {
            throw new RuntimeException("Failed to initialize the regions.");
        }
    }

Method com.amazonaws.metrics.AwsSdkMetrics.<clinit>() calling method java.lang.System.getProperty()


    static AwsSdkMetrics()
    {
        int v0_6;
        int v0_5 = new com.amazonaws.metrics.AwsSdkMetrics[0];
        com.amazonaws.metrics.AwsSdkMetrics.q = v0_5;
        com.amazonaws.metrics.AwsSdkMetrics.a = new StringBuilder().append("com.amazonaws.management:type=").append(com.amazonaws.metrics.AwsSdkMetrics.getSimpleName()).toString();
        com.amazonaws.metrics.AwsSdkMetrics.i = "AWSSDK/Java";
        int v3_2 = System.getProperty("com.amazonaws.sdk.enableDefaultMetrics");
        if (v3_2 == 0) {
            v0_6 = 0;
        } else {
            v0_6 = 1;
        }
        com.amazonaws.metrics.AwsSdkMetrics.b = v0_6;
        if (com.amazonaws.metrics.AwsSdkMetrics.b) {
            String[] v7 = v3_2.split(",");
            int v8 = v7.length;
            int v6 = 0;
            int v0_1 = 0;
            int v3_1 = 0;
            int v4 = 0;
            while (v6 < v8) {
                String v5_14 = v7[v6].trim();
                if ((v4 != 0) || (!"excludeMachineMetrics".equals(v5_14))) {
                    if ((v3_1 != 0) || (!"includePerHostMetrics".equals(v5_14))) {
                        if ((v0_1 != 0) || (!"useSingleMetricNamespace".equals(v5_14))) {
                            org.apache.commons.logging.Log v9_15 = v5_14.split("=");
                            if (v9_15.length == 2) {
                                StringBuilder v10_8 = v9_15[0].trim();
                                org.apache.commons.logging.Log v9_17 = v9_15[1].trim();
                                try {
                                    if (!"credentialFile".equals(v10_8)) {
                                        if (!"cloudwatchRegion".equals(v10_8)) {
                                            if (!"metricQueueSize".equals(v10_8)) {
                                                if (!"getQueuePollTimeoutMilli".equals(v10_8)) {
                                                    if (!"metricNameSpace".equals(v10_8)) {
                                                        if (!"jvmMetricName".equals(v10_8)) {
                                                            if (!"hostMetricName".equals(v10_8)) {
                                                                org.apache.commons.logging.LogFactory.getLog(com.amazonaws.metrics.AwsSdkMetrics).debug(new StringBuilder().append("Ignoring unrecognized parameter: ").append(v5_14).toString());
                                                            } else {
                                                                com.amazonaws.metrics.AwsSdkMetrics.l = v9_17;
                                                            }
                                                        } else {
                                                            com.amazonaws.metrics.AwsSdkMetrics.k = v9_17;
                                                        }
                                                    } else {
                                                        com.amazonaws.metrics.AwsSdkMetrics.i = v9_17;
                                                    }
                                                } else {
                                                    String v5_3 = new Long(v9_17);
                                                    if (v5_3.intValue() >= 1000) {
                                                        com.amazonaws.metrics.AwsSdkMetrics.h = v5_3;
                                                    } else {
                                                        throw new IllegalArgumentException("getQueuePollTimeoutMilli must be at least 1000");
                                                    }
                                                }
                                            } else {
                                                String v5_7 = new Integer(v9_17);
                                                if (v5_7.intValue() >= 1) {
                                                    com.amazonaws.metrics.AwsSdkMetrics.g = v5_7;
                                                } else {
                                                    throw new IllegalArgumentException("metricQueueSize must be at least 1");
                                                }
                                            }
                                        } else {
                                            com.amazonaws.metrics.AwsSdkMetrics.f = com.amazonaws.regions.Regions.a(v9_17);
                                        }
                                    } else {
                                        com.amazonaws.metrics.AwsSdkMetrics.a(v9_17);
                                    }
                                } catch (String v5_11) {
                                    org.apache.commons.logging.LogFactory.getLog(com.amazonaws.metrics.AwsSdkMetrics).debug("Ignoring failure", v5_11);
                                }
                            }
                        } else {
                            v0_1 = 1;
                        }
                    } else {
                        v3_1 = 1;
                    }
                } else {
                    v4 = 1;
                }
                v6++;
            }
            com.amazonaws.metrics.AwsSdkMetrics.d = v4;
            com.amazonaws.metrics.AwsSdkMetrics.e = v3_1;
            com.amazonaws.metrics.AwsSdkMetrics.m = v0_1;
        }
        com.amazonaws.metrics.AwsSdkMetrics.n = new com.amazonaws.metrics.AwsSdkMetrics$MetricRegistry();
        return;
    }

Method com.amazonaws.auth.SystemPropertiesCredentialsProvider.a() calling method java.lang.System.getProperty()


    public com.amazonaws.auth.AWSCredentials a()
    {
        if ((System.getProperty("aws.accessKeyId") == null) || (System.getProperty("aws.secretKey") == null)) {
            throw new com.amazonaws.AmazonClientException("Unable to load AWS credentials from Java system properties (aws.accessKeyId and aws.secretKey)");
        } else {
            return new com.amazonaws.auth.BasicAWSCredentials(System.getProperty("aws.accessKeyId"), System.getProperty("aws.secretKey"));
        }
    }

Method com.amazonaws.AmazonWebServiceClient.b() calling method java.lang.System.getProperty()


    protected static boolean b()
    {
        int v0_2;
        if (System.getProperty("com.amazonaws.sdk.enableRuntimeProfiling") == null) {
            v0_2 = 0;
        } else {
            v0_2 = 1;
        }
        return v0_2;
    }

Method android.support.multidex.MultiDex.install() calling method java.lang.System.getProperty()


    public static void install(android.content.Context p6)
    {
        android.util.Log.i("MultiDex", "install");
        if (!android.support.multidex.MultiDex.IS_VM_MULTIDEX_CAPABLE) {
            if (android.os.Build$VERSION.SDK_INT >= 4) {
                try {
                    RuntimeException v0_0 = android.support.multidex.MultiDex.getApplicationInfo(p6);
                } catch (RuntimeException v0_2) {
                    android.util.Log.e("MultiDex", "Multidex installation failure", v0_2);
                    throw new RuntimeException(new StringBuilder().append("Multi dex installation failed (").append(v0_2.getMessage()).append(").").toString());
                }
                if (v0_0 != null) {
                    String v2_7 = v0_0.sourceDir;
                    if (!android.support.multidex.MultiDex.installedApk.contains(v2_7)) {
                        android.support.multidex.MultiDex.installedApk.add(v2_7);
                        if (android.os.Build$VERSION.SDK_INT > 20) {
                            android.util.Log.w("MultiDex", new StringBuilder().append("MultiDex is not guaranteed to work in SDK version ").append(android.os.Build$VERSION.SDK_INT).append(": SDK version higher than ").append(20).append(" should be backed by ").append("runtime with built-in multidex capabilty but it\'s not the ").append("case here: java.vm.version=\"").append(System.getProperty("java.vm.version")).append("\"").toString());
                        }
                        try {
                            String v2_12 = p6.getClassLoader();
                        } catch (RuntimeException v0_12) {
                            android.util.Log.w("MultiDex", "Failure while trying to obtain Context class loader. Must be running in test mode. Skip patching.", v0_12);
                        }
                        if (v2_12 != null) {
                            try {
                                android.support.multidex.MultiDex.clearOldDexDir(p6);
                            } catch (java.io.File v3_18) {
                                android.util.Log.w("MultiDex", "Something went wrong when trying to clear old MultiDex extraction, continuing without cleaning.", v3_18);
                            }
                            java.io.File v3_20 = new java.io.File(v0_0.dataDir, android.support.multidex.MultiDex.SECONDARY_FOLDER_NAME);
                            boolean v4_14 = android.support.multidex.MultiDexExtractor.load(p6, v0_0, v3_20, 0);
                            if (!android.support.multidex.MultiDex.checkValidZipFiles(v4_14)) {
                                android.util.Log.w("MultiDex", "Files were not valid zip files.  Forcing a reload.");
                                RuntimeException v0_14 = android.support.multidex.MultiDexExtractor.load(p6, v0_0, v3_20, 1);
                                if (!android.support.multidex.MultiDex.checkValidZipFiles(v0_14)) {
                                    throw new RuntimeException("Zip files were not valid.");
                                } else {
                                    android.support.multidex.MultiDex.installSecondaryDexes(v2_12, v3_20, v0_14);
                                }
                            } else {
                                android.support.multidex.MultiDex.installSecondaryDexes(v2_12, v3_20, v4_14);
                            }
                            android.util.Log.i("MultiDex", "install done");
                        } else {
                            android.util.Log.e("MultiDex", "Context class loader is null. Must be running in test mode. Skip patching.");
                        }
                    } else {
                    }
                }
            } else {
                throw new RuntimeException(new StringBuilder().append("Multi dex installation failed. SDK ").append(android.os.Build$VERSION.SDK_INT).append(" is unsupported. Min SDK version is ").append(4).append(".").toString());
            }
        } else {
            android.util.Log.i("MultiDex", "VM has multidex support, MultiDex support library is disabled.");
        }
        return;
    }

Method android.support.multidex.MultiDex.<clinit>() calling method java.lang.System.getProperty()


    static MultiDex()
    {
        android.support.multidex.MultiDex.SECONDARY_FOLDER_NAME = new StringBuilder().append("code_cache").append(java.io.File.separator).append("secondary-dexes").toString();
        android.support.multidex.MultiDex.installedApk = new java.util.HashSet();
        android.support.multidex.MultiDex.IS_VM_MULTIDEX_CAPABLE = android.support.multidex.MultiDex.isVMMultidexCapable(System.getProperty("java.vm.version"));
        return;
    }

Method com.getkeepsafe.relinker.d.b() calling method java.lang.System.load()


    public void b(String p1)
    {
        System.load(p1);
        return;
    }

Method com.getkeepsafe.relinker.d.a() calling method java.lang.System.loadLibrary()


    public void a(String p1)
    {
        System.loadLibrary(p1);
        return;
    }

Method android.support.multidex.MultiDex$V4.install() calling method dalvik.system.DexFile.loadDex()


    private static void install(ClassLoader p11, java.util.List p12)
    {
        dalvik.system.DexFile[] v1_0 = p12.size();
        reflect.Field v2 = android.support.multidex.MultiDex.access$300(p11, "path");
        StringBuilder v3_1 = new StringBuilder(((String) v2.get(p11)));
        String[] v4 = new String[v1_0];
        java.io.File[] v5 = new java.io.File[v1_0];
        java.util.zip.ZipFile[] v6 = new java.util.zip.ZipFile[v1_0];
        dalvik.system.DexFile[] v1_1 = new dalvik.system.DexFile[v1_0];
        java.util.ListIterator v7 = p12.listIterator();
        while (v7.hasNext()) {
            String v0_8 = ((java.io.File) v7.next());
            String v8 = v0_8.getAbsolutePath();
            v3_1.append(58).append(v8);
            int v9_2 = v7.previousIndex();
            v4[v9_2] = v8;
            v5[v9_2] = v0_8;
            v6[v9_2] = new java.util.zip.ZipFile(v0_8);
            v1_1[v9_2] = dalvik.system.DexFile.loadDex(v8, new StringBuilder().append(v8).append(".dex").toString(), 0);
        }
        v2.set(p11, v3_1.toString());
        android.support.multidex.MultiDex.access$400(p11, "mPaths", v4);
        android.support.multidex.MultiDex.access$400(p11, "mFiles", v5);
        android.support.multidex.MultiDex.access$400(p11, "mZips", v6);
        android.support.multidex.MultiDex.access$400(p11, "mDexs", v1_1);
        return;
    }

Method com.google.android.gms.dynamite.h.<init>() calling method dalvik.system.PathClassLoader.<init>()


    h(String p1, ClassLoader p2)
    {
        super(p1, p2);
        return;
    }

Method com.google.android.gms.internal.zzdc.zza() calling method dalvik.system.DexClassLoader.<init>()


    public static com.google.android.gms.internal.zzdc zza(android.content.Context p9, String p10, String p11, boolean p12)
    {
        int v0_0 = 1;
        void v3_0 = new com.google.android.gms.internal.zzdc(p9);
        v3_0.e = java.util.concurrent.Executors.newCachedThreadPool();
        v3_0.j = p12;
        if (p12) {
            v3_0.k = v3_0.e.submit(new com.google.android.gms.internal.ke(v3_0));
        }
        v3_0.e.execute(new com.google.android.gms.internal.kh(v3_0));
        try {
            String v2_5;
            com.google.android.gms.internal.zzdc.q = com.google.android.gms.common.zze.zzaew();
        } catch (int v0) {
            v3_0.a(0, 1);
            if ((!com.google.android.gms.internal.zzdh.zzaq()) || (!((Boolean) com.google.android.gms.ads.internal.zzbv.zzen().zzd(com.google.android.gms.internal.zzmu.zzbmb)).booleanValue())) {
                v3_0.g = new com.google.android.gms.internal.zzcx(0);
                v3_0.h = v3_0.g.zzl(p10);
                try {
                    int v0_29 = v3_0.a.getCacheDir();
                } catch (int v0_14) {
                    throw new com.google.android.gms.internal.zzcz(v0_14);
                } catch (int v0_13) {
                    throw new com.google.android.gms.internal.zzcz(v0_13);
                }
                if (v0_29 == 0) {
                    v0_29 = v3_0.a.getDir("dex", 0);
                    if (v0_29 == 0) {
                        throw new com.google.android.gms.internal.zzcz();
                    }
                }
                String v1_19 = v0_29;
                Object[] v5_5 = new Object[2];
                v5_5[0] = v1_19;
                v5_5[1] = "1493867303508";
                String v4_9 = new java.io.File(String.format("%s/%s.jar", v5_5));
                if (!v4_9.exists()) {
                    int v0_35 = v3_0.g.zzb(v3_0.h, p11);
                    v4_9.createNewFile();
                    Object[] v5_8 = new java.io.FileOutputStream(v4_9);
                    v5_8.write(v0_35, 0, v0_35.length);
                    v5_8.close();
                }
                v3_0.b(v1_19, "1493867303508");
                try {
                    v3_0.f = new dalvik.system.DexClassLoader(v4_9.getAbsolutePath(), v1_19.getAbsolutePath(), 0, v3_0.a.getClassLoader());
                } catch (int v0_3) {
                    com.google.android.gms.internal.zzdc.a(v4_9);
                    v3_0 = v3_0.a(v1_19, "1493867303508");
                    Object[] v5_2 = new Object[2];
                    v5_2[0] = v1_19;
                    v5_2[1] = "1493867303508";
                    com.google.android.gms.internal.zzdc.a(String.format("%s/%s.dex", v5_2));
                    throw v0_3;
                }
                com.google.android.gms.internal.zzdc.a(v4_9);
                v3_0 = v3_0.a(v1_19, "1493867303508");
                String v4_4 = new Object[2];
                v4_4[0] = v1_19;
                v4_4[1] = "1493867303508";
                com.google.android.gms.internal.zzdc.a(String.format("%s/%s.dex", v4_4));
                v3_0.n = new com.google.android.gms.internal.zzco(v3_0);
                v3_0.s = 1;
                return v3_0;
            } else {
                throw new IllegalStateException("Task Context initialization must not be called from the UI thread.");
            }
        }
        if (com.google.android.gms.common.zze.zzbx(v3_0.a) <= 0) {
            v2_5 = 0;
        } else {
            v2_5 = 1;
        }
        v3_0.b = v2_5;
        if (com.google.android.gms.internal.zzdc.q.isGooglePlayServicesAvailable(v3_0.a) != 0) {
            v0_0 = 0;
        }
        v3_0.p = v0_0;
    }