Advertisement
Barteks2x

Untitled

Oct 13th, 2016
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.38 KB | None | 0 0
  1. public void dumpToDisk() throws Exception {
  2.         ASMifier.main(new String[]{"/home/bartosz/idea-test/test/WorldServer$1.class"});
  3.         File file = new File("/home/bartosz/idea-test/test/BadIDEA.class");
  4.         FileOutputStream fos = new FileOutputStream(file);
  5.         fos.write(dump());
  6.         fos.close();
  7.  
  8.         file = new File("/home/bartosz/idea-test/test/BadIDEA$1.class");
  9.         fos = new FileOutputStream(file);
  10.         fos.write(dump$1());
  11.         fos.close();
  12.  
  13.         file = new File("/home/bartosz/idea-test/test/BadIDEA$ServerBlockEventList.class");
  14.         fos = new FileOutputStream(file);
  15.         fos.write(dumpInner());
  16.         fos.close();
  17.     }
  18.  
  19.     public static byte[] dump() throws Exception {
  20.  
  21.         ClassWriter cw = new ClassWriter(0);
  22.         FieldVisitor fv;
  23.         MethodVisitor mv;
  24.         AnnotationVisitor av0;
  25.  
  26.         cw.visit(52, ACC_PUBLIC +
  27.                 ACC_SUPER, "test/BadIDEA", null, "java/lang/Object", new String[]{});
  28.  
  29.         cw.visitSource("BadIDEA.java", null);
  30.  
  31.         cw.visitInnerClass("test/BadIDEA$ServerBlockEventList", "test/BadIDEA", "ServerBlockEventList", ACC_STATIC);
  32.  
  33.         cw.visitInnerClass("test/BadIDEA$1", null, null, 0);
  34.  
  35.         {
  36.             fv = cw.visitField(ACC_PRIVATE +
  37.                     ACC_FINAL, "blockEventQueue", "[Ltest/BadIDEA$ServerBlockEventList;", null, null);
  38.             fv.visitEnd();
  39.         }
  40.         {
  41.             mv = cw.visitMethod(ACC_PUBLIC, "<init>", "()V", null, null);
  42.             mv.visitCode();
  43.             Label l6 = new Label();
  44.             mv.visitLabel(l6);
  45.             mv.visitLineNumber(102, l6);
  46.             mv.visitVarInsn(ALOAD, 0);
  47.             mv.visitInsn(ICONST_2);
  48.             mv.visitTypeInsn(ANEWARRAY, "test/BadIDEA$ServerBlockEventList");
  49.             mv.visitInsn(DUP);
  50.             mv.visitInsn(ICONST_0);
  51.             mv.visitTypeInsn(NEW, "test/BadIDEA$ServerBlockEventList");
  52.             mv.visitInsn(DUP);
  53.             mv.visitInsn(ACONST_NULL);
  54.             mv.visitMethodInsn(INVOKESPECIAL, "test/BadIDEA$ServerBlockEventList", "<init>", "(Ltest/BadIDEA$1;)V", false);
  55.             mv.visitInsn(AASTORE);
  56.             mv.visitInsn(DUP);
  57.             mv.visitInsn(ICONST_1);
  58.             mv.visitTypeInsn(NEW, "test/BadIDEA$ServerBlockEventList");
  59.             mv.visitInsn(DUP);
  60.             mv.visitInsn(ACONST_NULL);
  61.             mv.visitMethodInsn(INVOKESPECIAL, "test/BadIDEA$ServerBlockEventList", "<init>", "(Ltest/BadIDEA$1;)V", false);
  62.             mv.visitInsn(AASTORE);
  63.             mv.visitFieldInsn(PUTFIELD, "test/BadIDEA", "blockEventQueue", "[Ltest/BadIDEA$ServerBlockEventList;");
  64.             mv.visitMaxs(7, 7);
  65.             mv.visitEnd();
  66.         }
  67.         cw.visitEnd();
  68.  
  69.         return cw.toByteArray();
  70.     }
  71.  
  72.  
  73.     /*
  74.     public static byte[] dump() throws Exception {
  75.  
  76.         ClassWriter cw = new ClassWriter(0);
  77.         FieldVisitor fv;
  78.         MethodVisitor mv;
  79.         AnnotationVisitor av0;
  80.  
  81.         cw.visit(52, ACC_PUBLIC +
  82.                 ACC_SUPER, "test/BadIDEA", null, "java/lang/Object", new String[]{});
  83.  
  84.         cw.visitSource("WorldServer.java", null);
  85.  
  86.         cw.visitInnerClass("test/BadIDEA$ServerBlockEventList", "test/BadIDEA", "ServerBlockEventList", ACC_STATIC);
  87.  
  88.         cw.visitInnerClass("test/BadIDEA$1", null, null, 0);
  89.  
  90.         {
  91.             fv = cw.visitField(ACC_PRIVATE +
  92.                     ACC_FINAL, "blockEventQueue", "Ltest/BadIDEA$ServerBlockEventList;", null, null);
  93.             fv.visitEnd();
  94.         }
  95.  
  96.         {
  97.             mv = cw.visitMethod(ACC_PUBLIC, "<init>", "()V", null, null);
  98.             mv.visitCode();
  99.             mv.visitVarInsn(ALOAD, 0);
  100.             mv.visitTypeInsn(NEW, "test/BadIDEA$ServerBlockEventList");
  101.             mv.visitInsn(DUP);
  102.             mv.visitInsn(ACONST_NULL);
  103.             mv.visitMethodInsn(INVOKESPECIAL, "test/BadIDEA$ServerBlockEventList", "<init>", "(Ltest/BadIDEA$1;)V", false);
  104.             mv.visitFieldInsn(PUTFIELD, "test/BadIDEA", "blockEventQueue", "Ltest/BadIDEA$ServerBlockEventList;");
  105.             mv.visitMaxs(7, 7);
  106.             mv.visitEnd();
  107.         }
  108.         cw.visitEnd();
  109.  
  110.         return cw.toByteArray();
  111.     }*/
  112.  
  113.  
  114.     public static byte[] dumpInner() throws Exception {
  115.  
  116.         ClassWriter cw = new ClassWriter(0);
  117.         FieldVisitor fv;
  118.         MethodVisitor mv;
  119.         AnnotationVisitor av0;
  120.  
  121.         cw.visit(V1_6, ACC_SUPER, "test/BadIDEA$ServerBlockEventList", null, "java/lang/Object", null);
  122.  
  123.         cw.visitInnerClass("test/BadIDEA$ServerBlockEventList", "test/BadIDEA", "ServerBlockEventList", ACC_STATIC);
  124.  
  125.         cw.visitInnerClass("test/BadIDEA$1", null, null, 0);
  126.  
  127.         {
  128.             mv = cw.visitMethod(ACC_PRIVATE, "<init>", "()V", null, null);
  129.             mv.visitCode();
  130.             mv.visitVarInsn(ALOAD, 0);
  131.             mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "<init>", "()V", false);
  132.             mv.visitInsn(RETURN);
  133.             mv.visitMaxs(1, 1);
  134.             mv.visitEnd();
  135.         }
  136.         {
  137.             mv = cw.visitMethod(ACC_SYNTHETIC, "<init>", "(Ltest/BadIDEA$1;)V", null, null);
  138.             mv.visitCode();
  139.             mv.visitVarInsn(ALOAD, 0);
  140.             mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "<init>", "()V", false);
  141.             mv.visitInsn(RETURN);
  142.             mv.visitMaxs(1, 2);
  143.             mv.visitEnd();
  144.         }
  145.         cw.visitEnd();
  146.  
  147.         return cw.toByteArray();
  148.     }
  149.  
  150.     public static byte[] dump$1() throws Exception {
  151.  
  152.         ClassWriter cw = new ClassWriter(0);
  153.         FieldVisitor fv;
  154.         MethodVisitor mv;
  155.         AnnotationVisitor av0;
  156.  
  157.         cw.visit(V1_6, ACC_SUPER, "test/BadIDEA$1", null, "java/lang/Object", new String[]{
  158.                 "com/google/common/base/Predicate"
  159.         });
  160.  
  161.         cw.visitOuterClass("test/BadIDEA", "adjustPosToNearbyEntity", "(Lnet/minecraft/util/math/BlockPos;)Lnet/minecraft/util/math/BlockPos;");
  162.  
  163.         cw.visitInnerClass("test/BadIDEA$1", null, null, 0);
  164.  
  165.         {
  166.             mv = cw.visitMethod(0, "<init>", "(Ltest/BadIDEA;)V", null, null);
  167.             mv.visitCode();
  168.             mv.visitVarInsn(ALOAD, 0);
  169.             mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "<init>", "()V", false);
  170.             mv.visitInsn(RETURN);
  171.             mv.visitMaxs(1, 1);
  172.             mv.visitEnd();
  173.         }
  174.         cw.visitEnd();
  175.  
  176.         return cw.toByteArray();
  177.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement