Example #1
0
 protected static void testBuilder(final BuilderTestRunner runner, String name, String testArgs)
     throws Exception {
   String realName = name;
   if (runner.getName().indexOf('_') != -1 && !runner.getName().startsWith("CVE_")) {
     realName = runner.getName().substring(0, runner.getName().indexOf('_') + 1) + name;
     if (name.equals("BindMultiTCP")
         || name.startsWith("Integrated$")
         || name.startsWith("Spawn_")) return;
   }
   if (runner.getName().indexOf("Embedded") == -1
       && runner.getName().indexOf("Injector") == -1
       && name.indexOf("Integrated$") != -1) return;
   final String[] args = StageMenu.splitArgs(realName + " " + testArgs + " -- TestStub Fast");
   final StagerHandler.Loader loader =
       (runner.getName().indexOf("Injector") != -1) ? null : new StagerHandler.Loader(args);
   if (runner.getName().indexOf("[kill]") != -1) {
     if (name.startsWith("Spawn")) return;
     ((TestStub) loader.stageHandler).sendExit = true;
   }
   if (loader != null) loader.handleBefore(System.err, null);
   runner.runBuilder(loader == null ? args : loader.getArgs());
   final Throwable[] tt = new Throwable[1];
   Thread t =
       new Thread(
           new Runnable() {
             public void run() {
               try {
                 runner.runResult(loader == null ? args : loader.getArgs());
               } catch (Throwable t) {
                 tt[0] = t;
               }
             };
           });
   t.start();
   runner.waitReady();
   if (loader != null) loader.handleAfter(System.err, null);
   t.join();
   if (tt[0] != null) {
     /* #JDK1.4 */ try {
       throw new Exception("Builder result died", tt[0]);
     } catch (NoSuchMethodError ex2) /**/ {
       throw new Exception("Builder result died: " + tt[0].toString());
     }
   }
 }
Example #2
0
 public JarCrypterTestRunner(
     BuilderTestRunner runner, String jarName, JarLayout jarLayout, String[] layoutArgs) {
   this.runner = runner;
   this.jarName = jarName;
   this.jarLayout = jarLayout;
   this.layoutArgs = layoutArgs;
   try {
     Field f = runner.getClass().getField("loaderName");
     if (layoutArgs.length > 0) f.set(runner, layoutArgs[layoutArgs.length - 1]);
   } catch (Exception ex) {
   }
 }
Example #3
0
 public void runBuilder(String[] args) throws Exception {
   runner.runBuilder(args);
   String jarName = this.jarName;
   if (jarName.indexOf('*') != -1) jarName = Module.replaceString(jarName, "*", args[0]);
   new File(jarName).renameTo(new File("uncrypted.jar"));
   String[] crypterArgs =
       new String[] {
         "uncrypted.jar", jarName, "RnR", "HashNames", jarLayout.getName(),
       };
   if (layoutArgs.length > 0) {
     String[] tmp = crypterArgs;
     crypterArgs = new String[tmp.length + layoutArgs.length];
     System.arraycopy(tmp, 0, crypterArgs, 0, tmp.length);
     System.arraycopy(layoutArgs, 0, crypterArgs, tmp.length, layoutArgs.length);
   }
   new CryptedJarBuilder().build(crypterArgs);
   if (!new File("uncrypted.jar").delete()) throw new IOException("Unable to delete file");
 }
Example #4
0
 public static void main(String[] args) throws Exception {
   System.out.println("Testing builders...");
   String[] stagers = StagerTest.getStagers();
   BuilderTestRunner[] runners =
       new BuilderTestRunner[] {
         new ClassBuilderTestRunner(),
         new EmbeddedClassBuilderTestRunner(),
         new JarBuilderTestRunner(),
         new StripJarBuilderTestRunner(),
         new JarCrypterTestRunner(
             new StripJarBuilderTestRunner(),
             "stripped.jar",
             new MainClass(),
             new String[] {"StaLo"}),
         new EmbeddedJarBuilderTestRunner(),
         new StripEmbeddedJarBuilderTestRunner(),
         new LocalStageJarBuilderTestRunner(),
         new JarCrypterTestRunner(
             new LocalStageJarBuilderTestRunner(),
             "LocalStage.jar",
             new MainClass(),
             new String[] {"StaLo"}),
         /* #JDK1.5 */ new BuilderTest15.AgentJarBuilderTestRunner(), /**/
         /* #JDK1.5 */ new JarCrypterTestRunner(
             new BuilderTest15.AgentJarBuilderTestRunner(),
             "Agent_*.jar",
             new javapayload.crypter.Agent(),
             new String[0]), /**/
         new AppletJarBuilderTestRunner(),
         new NewNameAppletJarBuilderTestRunner(),
         new EmbeddedAppletJarBuilderTestRunner(),
         new JarCrypterTestRunner(
             new EmbeddedAppletJarBuilderTestRunner(),
             "EmbeddedAppletJar.jar",
             new SignedApplet(),
             new String[] {"javapayload.loader.AppletLoader", "AppLo"}),
         new EmbeddedNewNameAppletJarBuilderTestRunner(),
         // /* #JDK1.4 */new BuilderTest14.CVE_2008_5353TestRunner(), /**/
         // /* #JDK1.4 */new JarCrypterTestRunner(new BuilderTest14.CVE_2008_5353TestRunner(),
         // "cve.jar", new javapayload.crypter.SignedApplet(), new String[]
         // {"javapayload.exploit.CVE_2008_5353", "Expy"}), /**/
         // /* #JDK1.4 */new BuilderTest14.EmbeddedCVE_2008_5353TestRunner(), /**/
         // /* #JDK1.5 */new BuilderTest15.CVE_2010_0094TestRunner(), /**/
         // /* #JDK1.5 */new BuilderTest15.CVE_2010_4465TestRunner(), /**/
         // new CVE_2010_0840TestRunner(),
         /* #JDK1.6 */ new BuilderTest16.AttachInjectorTestRunner(), /**/
         /* #JDK1.3 */ new BuilderTest13.JDWPInjectorTestRunner(), /**/
         new RMIInjectorTestRunner(),
         // new JarCrypterTestRunner(new RMIInjectorTestRunner(), "rmitest.jar", new
         // javapayload.crypter.RMI(), new String[] {"javapayload.loader.rmi.LoaderImpl",
         // "RMILDR"}),
       };
   for (int i = 0; i < runners.length; i++) {
     BuilderTestRunner runner = runners[i];
     System.out.println("\t" + runner.getName());
     for (int j = 0; j < stagers.length; j++) {
       String name = stagers[j];
       System.out.println("\t\t" + name);
       String[] testArgs = StagerTest.getTestArgs(name);
       if (testArgs == null) continue;
       for (int k = 0; k < testArgs.length; k++) {
         System.out.println("\t\t\t" + testArgs[k]);
         testBuilder(runner, name, testArgs[k]);
       }
     }
     runner.cleanup();
   }
   System.out.println("Builder tests finished.");
   new ThreadWatchdogThread(5000).start();
 }
Example #5
0
 public void cleanup() throws Exception {
   runner.cleanup();
 }
Example #6
0
 public void runResult(String[] args) throws Exception {
   runner.runResult(args);
 }
Example #7
0
 public void waitReady() throws InterruptedException {
   runner.waitReady();
 }
Example #8
0
 public String getName() {
   return runner.getName() + " + JarCrypter";
 }