Esempio n. 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());
     }
   }
 }
Esempio n. 2
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();
 }
Esempio n. 3
0
 public String getName() {
   return runner.getName() + " + JarCrypter";
 }