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.internal.util.unsafe.UnsafeAccess.<clinit>() calling method java.lang.System.getProperty()


    static UnsafeAccess()
    {
        int v0_0 = 1;
        if (System.getProperty("rx.unsafe-disable") == null) {
            v0_0 = 0;
        }
        rx.internal.util.unsafe.UnsafeAccess.DISABLED_BY_USER = 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.internal.util.unsafe.UnsafeAccess.UNSAFE = v0_3;
        return;
    }

Method okhttp3.internal.huc.OkHttpURLConnection.defaultUserAgent() calling method java.lang.System.getProperty()


    private String defaultUserAgent()
    {
        String v0_2;
        String v0_1 = System.getProperty("http.agent");
        if (v0_1 == null) {
            v0_2 = okhttp3.internal.Version.userAgent();
        } else {
            v0_2 = okhttp3.internal.Util.toHumanReadableAscii(v0_1);
        }
        return v0_2;
    }

Method okhttp3.internal.SystemPropertiesConnectionPool.<clinit>() calling method java.lang.System.getProperty()


    static SystemPropertiesConnectionPool()
    {
        int v0_1;
        int v0_2 = System.getProperty("http.keepAlive");
        if ((v0_2 == 0) || (Boolean.parseBoolean(v0_2))) {
            int v0_5 = System.getProperty("http.maxConnections");
            if (v0_5 == 0) {
                v0_1 = 5;
            } else {
                v0_1 = Integer.parseInt(v0_5);
            }
        } else {
            v0_1 = 0;
        }
        long v2;
        okhttp3.ConnectionPool v1_1 = System.getProperty("http.keepAliveDuration");
        if (v1_1 == null) {
            v2 = 300000;
        } else {
            v2 = Long.parseLong(v1_1);
        }
        okhttp3.internal.SystemPropertiesConnectionPool.INSTANCE = new okhttp3.ConnectionPool(v0_1, v2, java.util.concurrent.TimeUnit.MILLISECONDS);
        return;
    }

Method rx.internal.util.g.<clinit>() calling method java.lang.System.getProperty()


    static g()
    {
        rx.internal.util.g.f = rx.internal.operators.NotificationLite.a();
        rx.internal.util.g.b = 128;
        if (rx.internal.util.e.a()) {
            rx.internal.util.g.b = 16;
        }
        StringBuilder v1_0 = System.getProperty("rx.ring-buffer.size");
        if (v1_0 != null) {
            try {
                rx.internal.util.g.b = Integer.parseInt(v1_0);
            } catch (String v0_3) {
                System.err.println(new StringBuilder().append("Failed to set \'rx.buffer.size\' with value ").append(v1_0).append(" => ").append(v0_3.getMessage()).toString());
            }
        }
        rx.internal.util.g.c = rx.internal.util.g.b;
        rx.internal.util.g.d = new rx.internal.util.g$1();
        rx.internal.util.g.e = new rx.internal.util.g$2();
        return;
    }

Method rx.internal.util.ScalarSynchronousObservable.<clinit>() calling method java.lang.System.getProperty()


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

Method com.yandex.promolib.impl.ct.<clinit>() calling method java.lang.System.getProperty()


    static ct()
    {
        com.yandex.promolib.impl.ct.b = com.yandex.promolib.impl.ct.getSimpleName();
        com.yandex.promolib.impl.ct.a = System.getProperty("line.separator");
        return;
    }

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


    static i()
    {
        long v0_1;
        com.squareup.okhttp.i v2_2 = System.getProperty("http.keepAlive");
        long v0_3 = System.getProperty("http.keepAliveDuration");
        int v3_3 = System.getProperty("http.maxConnections");
        if (v0_3 == 0) {
            v0_1 = 300000;
        } else {
            v0_1 = Long.parseLong(v0_3);
        }
        if ((v2_2 == null) || (Boolean.parseBoolean(v2_2))) {
            if (v3_3 == 0) {
                com.squareup.okhttp.i.a = new com.squareup.okhttp.i(5, v0_1);
            } else {
                com.squareup.okhttp.i.a = new com.squareup.okhttp.i(Integer.parseInt(v3_3), v0_1);
            }
        } else {
            com.squareup.okhttp.i.a = new com.squareup.okhttp.i(0, v0_1);
        }
        return;
    }

Method com.google.common.util.concurrent.AbstractFuture.<clinit>() calling method java.lang.System.getProperty()


    static AbstractFuture()
    {
        com.google.common.util.concurrent.AbstractFuture.a = Boolean.parseBoolean(System.getProperty("guava.concurrent.generate_cancellation_cause", "false"));
        com.google.common.util.concurrent.AbstractFuture.b = java.util.logging.Logger.getLogger(com.google.common.util.concurrent.AbstractFuture.getName());
        try {
            com.google.common.util.concurrent.AbstractFuture$SynchronizedHelper v0_4 = new com.google.common.util.concurrent.AbstractFuture$UnsafeAtomicHelper(0);
        } catch (com.google.common.util.concurrent.AbstractFuture$SynchronizedHelper v0_5) {
            Throwable v6 = v0_5;
            try {
                v0_4 = new com.google.common.util.concurrent.AbstractFuture$SafeAtomicHelper(java.util.concurrent.atomic.AtomicReferenceFieldUpdater.newUpdater(com.google.common.util.concurrent.AbstractFuture$Waiter, Thread, "b"), java.util.concurrent.atomic.AtomicReferenceFieldUpdater.newUpdater(com.google.common.util.concurrent.AbstractFuture$Waiter, com.google.common.util.concurrent.AbstractFuture$Waiter, "c"), java.util.concurrent.atomic.AtomicReferenceFieldUpdater.newUpdater(com.google.common.util.concurrent.AbstractFuture, com.google.common.util.concurrent.AbstractFuture$Waiter, "g"), java.util.concurrent.atomic.AtomicReferenceFieldUpdater.newUpdater(com.google.common.util.concurrent.AbstractFuture, com.google.common.util.concurrent.AbstractFuture$Listener, "f"), java.util.concurrent.atomic.AtomicReferenceFieldUpdater.newUpdater(com.google.common.util.concurrent.AbstractFuture, Object, "e"));
            } catch (com.google.common.util.concurrent.AbstractFuture$SynchronizedHelper v0_8) {
                com.google.common.util.concurrent.AbstractFuture.b.log(java.util.logging.Level.SEVERE, "UnsafeAtomicHelper is broken!", v6);
                com.google.common.util.concurrent.AbstractFuture.b.log(java.util.logging.Level.SEVERE, "SafeAtomicHelper is broken!", v0_8);
                v0_4 = new com.google.common.util.concurrent.AbstractFuture$SynchronizedHelper(0);
            }
        }
        com.google.common.util.concurrent.AbstractFuture.c = v0_4;
        com.google.common.util.concurrent.AbstractFuture.d = new Object();
        return;
    }

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


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

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


    public static void a(android.content.Context p6)
    {
        android.util.Log.i("MultiDex", "install");
        if (!ark>android.support.multidex.aark>.c) {
            if (android.os.Build$VERSION.SDK_INT >= 4) {
                try {
                    RuntimeException v0_0 = ark>android.support.multidex.aark>.b(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 (!ark>android.support.multidex.aark>.b.contains(v2_7)) {
                        ark>android.support.multidex.aark>.b.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 {
                                ark>android.support.multidex.aark>.c(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, ark>android.support.multidex.aark>.a);
                            boolean v4_14 = android.support.multidex.b.a(p6, v0_0, v3_20, 0);
                            if (!ark>android.support.multidex.aark>.a(v4_14)) {
                                android.util.Log.w("MultiDex", "Files were not valid zip files.  Forcing a reload.");
                                RuntimeException v0_14 = android.support.multidex.b.a(p6, v0_0, v3_20, 1);
                                if (!ark>android.support.multidex.aark>.a(v0_14)) {
                                    throw new RuntimeException("Zip files were not valid.");
                                } else {
                                    ark>android.support.multidex.aark>.a(v2_12, v3_20, v0_14);
                                }
                            } else {
                                ark>android.support.multidex.aark>.a(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.a.<clinit>() calling method java.lang.System.getProperty()


    static a()
    {
        android.support.multidex.a.a = new StringBuilder().append("code_cache").append(java.io.File.separator).append("secondary-dexes").toString();
        android.support.multidex.a.b = new java.util.HashSet();
        android.support.multidex.a.c = android.support.multidex.a.a(System.getProperty("java.vm.version"));
        return;
    }

Method ru.yandex.disk.util.cc$1.a() calling method java.lang.System.getenv()


    public String a(String p2)
    {
        return System.getenv(p2);
    }

Method com.yandex.metrica.impl.NativeCrashesHelper.a() calling method java.lang.System.loadLibrary()


    boolean a()
    {
        try {
            System.loadLibrary("YandexMetricaNativeModule");
            int v0_1 = 1;
        } catch (int v0) {
            v0_1 = 0;
        }
        return v0_1;
    }

Method com.adobe.creativesdk.aviary.internal.headless.utils.CameraUtils.<clinit>() calling method java.lang.System.loadLibrary()


    static CameraUtils()
    {
        System.loadLibrary("aviary_native2");
        return;
    }

Method com.adobe.creativesdk.aviary.internal.headless.moa.MoaAccessors.<clinit>() calling method java.lang.System.loadLibrary()


    static MoaAccessors()
    {
        System.loadLibrary("encoders");
        System.loadLibrary("aviary_native2");
        return;
    }

Method com.adobe.creativesdk.aviary.internal.headless.moa.Moa.<clinit>() calling method java.lang.System.loadLibrary()


    static Moa()
    {
        com.adobe.creativesdk.aviary.internal.headless.moa.Moa.M_LOCK = new Object();
        System.loadLibrary("encoders");
        System.loadLibrary("aviary_native2");
        return;
    }

Method android.support.multidex.a$c.b() calling method dalvik.system.DexFile.loadDex()


    private static void b(ClassLoader p11, java.util.List p12)
    {
        dalvik.system.DexFile[] v1_0 = p12.size();
        reflect.Field v2 = android.support.multidex.a.a(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.a.a(p11, "mPaths", v4);
        android.support.multidex.a.a(p11, "mFiles", v5);
        android.support.multidex.a.a(p11, "mZips", v6);
        android.support.multidex.a.a(p11, "mDexs", v1_1);
        return;
    }