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 pE.<clinit>() calling method java.lang.System.getProperty()


    static pE()
    {
        pE.a = System.getProperty("line.separator");
        pE.b = pE.a.length();
        char[] v0_7 = new char[48];
        v0_7 = {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32};
        pE.c = v0_7;
        char[] v0_2 = new char[16];
        v0_2 = {48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 65, 66, 67, 68, 69, 70};
        pE.d = v0_2;
        return;
    }

Method hE.<clinit>() calling method java.lang.System.getProperty()


    static hE()
    {
        jE v2_32;
        hE.a = PD.a();
        hE.b = PD.a("jcifs.smb.client.lport", 0);
        hE.c = PD.a("jcifs.smb.client.maxMpxCount", 10);
        hE.d = PD.a("jcifs.smb.client.snd_buf_size", 16644);
        hE.e = PD.a("jcifs.smb.client.rcv_buf_size", 60416);
        hE.f = PD.a("jcifs.smb.client.useUnicode", 1);
        hE.g = PD.a("jcifs.smb.client.useUnicode", 0);
        hE.h = PD.a("jcifs.smb.client.useNtStatus", 1);
        hE.i = PD.a("jcifs.smb.client.signingPreferred", 0);
        hE.j = PD.a("jcifs.smb.client.useNTSmbs", 1);
        hE.k = PD.a("jcifs.smb.client.useExtendedSecurity", 1);
        hE.l = PD.a("jcifs.netbios.hostname", 0);
        hE.m = PD.a("jcifs.smb.lmCompatibility", 3);
        hE.n = ((int) (Math.random() * 65536.0));
        hE.o = java.util.TimeZone.getDefault();
        hE.p = PD.a("jcifs.smb.client.useBatching", 1);
        hE.q = PD.a("jcifs.encoding", PD.c);
        if (!hE.k) {
            v2_32 = 0;
        } else {
            v2_32 = 2048;
        }
        String v3_17;
        int v4_0 = 4;
        if (!hE.i) {
            v3_17 = 0;
        } else {
            v3_17 = 4;
        }
        String v3_19;
        if (!hE.h) {
            v3_19 = 0;
        } else {
            v3_19 = 16384;
        }
        String v3_21;
        if (!hE.f) {
            v3_21 = 0;
        } else {
            v3_21 = 32768;
        }
        jE v2_0;
        hE.r = ((((v2_32 | 3) | v3_17) | v3_19) | v3_21);
        if (!hE.j) {
            v2_0 = 0;
        } else {
            v2_0 = 16;
        }
        String v3_1;
        if (!hE.h) {
            v3_1 = 0;
        } else {
            v3_1 = 64;
        }
        if (!hE.f) {
            v4_0 = 0;
        }
        hE.s = (((v2_0 | v3_1) | v4_0) | 4096);
        hE.t = PD.a("jcifs.smb.client.flags2", hE.r);
        hE.u = PD.a("jcifs.smb.client.capabilities", hE.s);
        hE.v = PD.a("jcifs.smb.client.tcpNoDelay", 0);
        hE.w = PD.a("jcifs.smb.client.responseTimeout", 30000);
        hE.x = new java.util.LinkedList();
        hE.y = PD.a("jcifs.smb.client.ssnLimit", 250);
        hE.z = PD.a("jcifs.smb.client.soTimeout", 35000);
        hE.A = PD.a("jcifs.smb.client.connTimeout", 35000);
        hE.B = PD.a("jcifs.smb.client.nativeOs", System.getProperty("os.name"));
        hE.C = PD.a("jcifs.smb.client.nativeLanMan", "jCIFS");
        hE.D = new jE(0, 0, 0, 0);
        return;
    }

Method Rb.a() calling method java.lang.System.getProperty()


    public static void a(android.content.Context p5, java.io.File p6, java.io.File p7, String p8, String p9, boolean p10)
    {
        try {
            if (!ark>Rbark>.a.contains(p6)) {
                ark>Rbark>.a.add(p6);
                if (android.os.Build$VERSION.SDK_INT > 20) {
                    String v3_1 = new StringBuilder();
                    v3_1.append("MultiDex is not guaranteed to work in SDK version ");
                    v3_1.append(android.os.Build$VERSION.SDK_INT);
                    v3_1.append(": SDK version higher than ");
                    v3_1.append(20);
                    v3_1.append(" should be backed by ");
                    v3_1.append("runtime with built-in multidex capabilty but it\'s not the ");
                    v3_1.append("case here: java.vm.version=\"");
                    v3_1.append(System.getProperty("java.vm.version"));
                    v3_1.append("\"");
                    android.util.Log.w("MultiDex", v3_1.toString());
                }
                ClassLoader v1_3 = p5.getClassLoader();
                if (v1_3 != null) {
                    try {
                        ark>Rbark>.a(p5);
                    } catch (java.io.IOException v2_7) {
                        android.util.Log.w("MultiDex", "Something went wrong when trying to clear old MultiDex extraction, continuing without cleaning.", v2_7);
                    }
                    java.io.File v7_2 = ark>Rbark>.a(p5, p7, p8);
                    Ub v8_2 = new Ub(p6, v7_2);
                    java.io.IOException v6_2 = 0;
                    try {
                        try {
                            ark>Rbark>.a(v1_3, v7_2, v8_2.a(p5, p9, 0));
                        } catch (java.io.IOException v2_10) {
                            if (p10 == 0) {
                                throw v2_10;
                            } else {
                                android.util.Log.w("MultiDex", "Failed to install extracted secondary dex files, retrying with forced extraction", v2_10);
                                ark>Rbark>.a(v1_3, v7_2, v8_2.a(p5, p9, 1));
                            }
                        }
                        try {
                            v8_2.close();
                        } catch (java.io.IOException v6_2) {
                        }
                        if (v6_2 != null) {
                            throw v6_2;
                        } else {
                            return;
                        }
                    } catch (java.util.List v5_3) {
                        v8_2.close();
                        throw v5_3;
                    }
                } else {
                    android.util.Log.e("MultiDex", "Context class loader is null. Must be running in test mode. Skip patching.");
                    return;
                }
            } else {
                return;
            }
        } catch (java.util.List v5_5) {
            throw v5_5;
        }
    }

Method Rb.<clinit>() calling method java.lang.System.getProperty()


    static Rb()
    {
        Rb.a = new java.util.HashSet();
        Rb.b = Rb.a(System.getProperty("java.vm.version"));
        return;
    }

Method RD.<clinit>() calling method java.lang.System.getProperty()


    static RD()
    {
        RD.a = PD.a("jcifs.netbios.scope");
        RD.b = PD.a("jcifs.encoding", System.getProperty("file.encoding"));
        return;
    }

Method PD.<clinit>() calling method java.lang.System.getProperty()

Couldn't retrieve source code

Method JG.a() calling method java.lang.System.getProperty()


    public static String a(String p0, String p1)
    {
        try {
            String v0_1 = System.getProperty(p0);
        } catch (java.security.AccessControlException) {
            return p1;
        }
        if (v0_1 == null) {
            v0_1 = p1;
        }
        return v0_1;
    }

Method com.shockwave.pdfium.PdfiumCore.<clinit>() calling method java.lang.System.loadLibrary()


    static PdfiumCore()
    {
        try {
            System.loadLibrary("modpng");
            System.loadLibrary("modft2");
            System.loadLibrary("modpdfium");
            System.loadLibrary("jniPdfium");
        } catch (Object v0_9) {
            StringBuilder v2_1 = new StringBuilder();
            v2_1.append("Native libraries failed to load - ");
            v2_1.append(v0_9);
            android.util.Log.e(com.shockwave.pdfium.PdfiumCore.a, v2_1.toString());
        }
        com.shockwave.pdfium.PdfiumCore.b = java.io.FileDescriptor;
        com.shockwave.pdfium.PdfiumCore.c = 0;
        com.shockwave.pdfium.PdfiumCore.d = new Object();
        return;
    }

Method com.scottyab.rootbeer.RootBeerNative.<clinit>() calling method java.lang.System.loadLibrary()


    static RootBeerNative()
    {
        try {
            System.loadLibrary("tool-checker");
            com.scottyab.rootbeer.RootBeerNative.a = 1;
        } catch (UnsatisfiedLinkError v0_2) {
            eC.a(v0_2);
        }
        return;
    }

Method com.google.android.gms.vision.EngineManager.zza() calling method java.lang.System.loadLibrary()


    public final declared_synchronized boolean zza(android.content.Context p1)
    {
        try {
            System.loadLibrary(this.zzaj);
            return 1;
        } catch (Throwable v1_2) {
            throw v1_2;
        }
    }

Method Rb$c.a() calling method dalvik.system.DexFile.loadDex()


    public static void a(ClassLoader p10, java.util.List p11)
    {
        dalvik.system.DexFile[] v0_0 = p11.size();
        reflect.Field v1_1 = Rb.a(p10, "path");
        StringBuilder v2_1 = new StringBuilder(((String) v1_1.get(p10)));
        String[] v3_0 = new String[v0_0];
        java.io.File[] v4 = new java.io.File[v0_0];
        java.util.zip.ZipFile[] v5 = new java.util.zip.ZipFile[v0_0];
        dalvik.system.DexFile[] v0_1 = new dalvik.system.DexFile[v0_0];
        String v11_1 = p11.listIterator();
        while (v11_1.hasNext()) {
            dalvik.system.DexFile v6_2 = ((java.io.File) v11_1.next());
            String v7 = v6_2.getAbsolutePath();
            v2_1.append(58);
            v2_1.append(v7);
            int v8_1 = v11_1.previousIndex();
            v3_0[v8_1] = v7;
            v4[v8_1] = v6_2;
            v5[v8_1] = new java.util.zip.ZipFile(v6_2);
            dalvik.system.DexFile v6_4 = new StringBuilder();
            v6_4.append(v7);
            v6_4.append(".dex");
            v0_1[v8_1] = dalvik.system.DexFile.loadDex(v7, v6_4.toString(), 0);
        }
        v1_1.set(p10, v2_1.toString());
        Rb.a(p10, "mPaths", v3_0);
        Rb.a(p10, "mFiles", v4);
        Rb.a(p10, "mZips", v5);
        Rb.a(p10, "mDexs", v0_1);
        return;
    }

Method Rb$a.a() calling method dalvik.system.DexFile.loadDex()


    public final Object[] a(java.util.List p8)
    {
        Object[] v0_1 = new Object[p8.size()];
        int v2 = 0;
        while (v2 < v0_1.length) {
            Object v3_0 = ((java.io.File) p8.get(v2));
            v0_1[v2] = this.b.a(v3_0, dalvik.system.DexFile.loadDex(v3_0.getPath(), ark>Rb$aark>.a(v3_0), 0));
            v2++;
        }
        return v0_1;
    }

Method Cp.<init>() calling method dalvik.system.PathClassLoader.<init>()


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