Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package asm.fr.mcnanotech.nhg.asm;
- import java.util.*;
- import org.objectweb.asm.*;
- public class NHGClassTransformerDump implements Opcodes {
- public static byte[] dump () throws Exception {
- ClassWriter cw = new ClassWriter(0);
- FieldVisitor fv;
- MethodVisitor mv;
- AnnotationVisitor av0;
- cw.visit(V1_6, ACC_PUBLIC + ACC_SUPER, "fr/mcnanotech/nhg/asm/NHGClassTransformer", null, "java/lang/Object", new String[] { "net/minecraft/launchwrapper/IClassTransformer" });
- cw.visitSource("NHGClassTransformer.java", null);
- {
- mv = cw.visitMethod(ACC_PUBLIC, "<init>", "()V", null, null);
- mv.visitCode();
- Label l0 = new Label();
- mv.visitLabel(l0);
- mv.visitLineNumber(13, l0);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "<init>", "()V", false);
- mv.visitInsn(RETURN);
- Label l1 = new Label();
- mv.visitLabel(l1);
- mv.visitLocalVariable("this", "Lfr/mcnanotech/nhg/asm/NHGClassTransformer;", null, l0, l1, 0);
- mv.visitMaxs(1, 1);
- mv.visitEnd();
- }
- {
- mv = cw.visitMethod(ACC_PUBLIC, "transform", "(Ljava/lang/String;Ljava/lang/String;[B)[B", null, null);
- mv.visitCode();
- Label l0 = new Label();
- mv.visitLabel(l0);
- mv.visitLineNumber(18, l0);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitLdcInsn("xz");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "equals", "(Ljava/lang/Object;)Z", false);
- Label l1 = new Label();
- mv.visitJumpInsn(IFNE, l1);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitLdcInsn("net.minecraft.entity.monster.EntityCreeper");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "equals", "(Ljava/lang/Object;)Z", false);
- Label l2 = new Label();
- mv.visitJumpInsn(IFEQ, l2);
- mv.visitLabel(l1);
- mv.visitLineNumber(20, l1);
- mv.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 0);
- mv.visitVarInsn(ALOAD, 1);
- mv.visitVarInsn(ALOAD, 3);
- mv.visitInsn(ICONST_1);
- mv.visitMethodInsn(INVOKESPECIAL, "fr/mcnanotech/nhg/asm/NHGClassTransformer", "patchClassASM", "(Ljava/lang/String;[BZ)[B", false);
- mv.visitInsn(ARETURN);
- mv.visitLabel(l2);
- mv.visitLineNumber(23, l2);
- mv.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 3);
- mv.visitInsn(ARETURN);
- Label l3 = new Label();
- mv.visitLabel(l3);
- mv.visitLocalVariable("this", "Lfr/mcnanotech/nhg/asm/NHGClassTransformer;", null, l0, l3, 0);
- mv.visitLocalVariable("nameClassVanilla", "Ljava/lang/String;", null, l0, l3, 1);
- mv.visitLocalVariable("nameClassCustom", "Ljava/lang/String;", null, l0, l3, 2);
- mv.visitLocalVariable("byteCode", "[B", null, l0, l3, 3);
- mv.visitMaxs(4, 4);
- mv.visitEnd();
- }
- {
- mv = cw.visitMethod(ACC_PRIVATE, "patchClassASM", "(Ljava/lang/String;[BZ)[B", null, null);
- mv.visitCode();
- Label l0 = new Label();
- mv.visitLabel(l0);
- mv.visitLineNumber(28, l0);
- mv.visitLdcInsn("");
- mv.visitVarInsn(ASTORE, 4);
- Label l1 = new Label();
- mv.visitLabel(l1);
- mv.visitLineNumber(30, l1);
- mv.visitVarInsn(ILOAD, 3);
- Label l2 = new Label();
- mv.visitJumpInsn(IFEQ, l2);
- Label l3 = new Label();
- mv.visitLabel(l3);
- mv.visitLineNumber(32, l3);
- mv.visitLdcInsn("func_70069_a");
- mv.visitVarInsn(ASTORE, 4);
- Label l4 = new Label();
- mv.visitLabel(l4);
- mv.visitLineNumber(33, l4);
- Label l5 = new Label();
- mv.visitJumpInsn(GOTO, l5);
- mv.visitLabel(l2);
- mv.visitLineNumber(36, l2);
- mv.visitFrame(Opcodes.F_APPEND,1, new Object[] {"java/lang/String"}, 0, null);
- mv.visitLdcInsn("fall");
- mv.visitVarInsn(ASTORE, 4);
- mv.visitLabel(l5);
- mv.visitLineNumber(39, l5);
- mv.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
- mv.visitTypeInsn(NEW, "org/objectweb/asm/tree/ClassNode");
- mv.visitInsn(DUP);
- mv.visitMethodInsn(INVOKESPECIAL, "org/objectweb/asm/tree/ClassNode", "<init>", "()V", false);
- mv.visitVarInsn(ASTORE, 5);
- Label l6 = new Label();
- mv.visitLabel(l6);
- mv.visitLineNumber(40, l6);
- mv.visitTypeInsn(NEW, "org/objectweb/asm/ClassReader");
- mv.visitInsn(DUP);
- mv.visitVarInsn(ALOAD, 2);
- mv.visitMethodInsn(INVOKESPECIAL, "org/objectweb/asm/ClassReader", "<init>", "([B)V", false);
- mv.visitVarInsn(ASTORE, 6);
- Label l7 = new Label();
- mv.visitLabel(l7);
- mv.visitLineNumber(41, l7);
- mv.visitVarInsn(ALOAD, 6);
- mv.visitVarInsn(ALOAD, 5);
- mv.visitInsn(ICONST_0);
- mv.visitMethodInsn(INVOKEVIRTUAL, "org/objectweb/asm/ClassReader", "accept", "(Lorg/objectweb/asm/ClassVisitor;I)V", false);
- Label l8 = new Label();
- mv.visitLabel(l8);
- mv.visitLineNumber(43, l8);
- mv.visitVarInsn(ALOAD, 5);
- mv.visitFieldInsn(GETFIELD, "org/objectweb/asm/tree/ClassNode", "methods", "Ljava/util/List;");
- mv.visitMethodInsn(INVOKEINTERFACE, "java/util/List", "iterator", "()Ljava/util/Iterator;", true);
- mv.visitVarInsn(ASTORE, 7);
- Label l9 = new Label();
- mv.visitLabel(l9);
- mv.visitLineNumber(44, l9);
- Label l10 = new Label();
- mv.visitJumpInsn(GOTO, l10);
- Label l11 = new Label();
- mv.visitLabel(l11);
- mv.visitLineNumber(46, l11);
- mv.visitFrame(Opcodes.F_APPEND,3, new Object[] {"org/objectweb/asm/tree/ClassNode", "org/objectweb/asm/ClassReader", "java/util/Iterator"}, 0, null);
- mv.visitVarInsn(ALOAD, 7);
- mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Iterator", "next", "()Ljava/lang/Object;", true);
- mv.visitTypeInsn(CHECKCAST, "org/objectweb/asm/tree/MethodNode");
- mv.visitVarInsn(ASTORE, 8);
- Label l12 = new Label();
- mv.visitLabel(l12);
- mv.visitLineNumber(47, l12);
- mv.visitInsn(ICONST_M1);
- mv.visitVarInsn(ISTORE, 9);
- Label l13 = new Label();
- mv.visitLabel(l13);
- mv.visitLineNumber(49, l13);
- mv.visitVarInsn(ALOAD, 8);
- mv.visitFieldInsn(GETFIELD, "org/objectweb/asm/tree/MethodNode", "name", "Ljava/lang/String;");
- mv.visitVarInsn(ALOAD, 4);
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "equals", "(Ljava/lang/Object;)Z", false);
- mv.visitJumpInsn(IFEQ, l10);
- mv.visitVarInsn(ALOAD, 8);
- mv.visitFieldInsn(GETFIELD, "org/objectweb/asm/tree/MethodNode", "desc", "Ljava/lang/String;");
- mv.visitLdcInsn("(F)V");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "equals", "(Ljava/lang/Object;)Z", false);
- mv.visitJumpInsn(IFEQ, l10);
- Label l14 = new Label();
- mv.visitLabel(l14);
- mv.visitLineNumber(51, l14);
- mv.visitInsn(ACONST_NULL);
- mv.visitVarInsn(ASTORE, 10);
- Label l15 = new Label();
- mv.visitLabel(l15);
- mv.visitLineNumber(52, l15);
- mv.visitInsn(ACONST_NULL);
- mv.visitVarInsn(ASTORE, 11);
- Label l16 = new Label();
- mv.visitLabel(l16);
- mv.visitLineNumber(54, l16);
- mv.visitVarInsn(ALOAD, 8);
- mv.visitFieldInsn(GETFIELD, "org/objectweb/asm/tree/MethodNode", "instructions", "Lorg/objectweb/asm/tree/InsnList;");
- mv.visitMethodInsn(INVOKEVIRTUAL, "org/objectweb/asm/tree/InsnList", "iterator", "()Ljava/util/ListIterator;", false);
- mv.visitVarInsn(ASTORE, 12);
- Label l17 = new Label();
- mv.visitLabel(l17);
- mv.visitLineNumber(55, l17);
- mv.visitInsn(ICONST_M1);
- mv.visitVarInsn(ISTORE, 13);
- Label l18 = new Label();
- mv.visitLabel(l18);
- mv.visitLineNumber(57, l18);
- Label l19 = new Label();
- mv.visitJumpInsn(GOTO, l19);
- Label l20 = new Label();
- mv.visitLabel(l20);
- mv.visitLineNumber(59, l20);
- mv.visitFrame(Opcodes.F_FULL, 14, new Object[] {"fr/mcnanotech/nhg/asm/NHGClassTransformer", "java/lang/String", "[B", Opcodes.INTEGER, "java/lang/String", "org/objectweb/asm/tree/ClassNode", "org/objectweb/asm/ClassReader", "java/util/Iterator", "org/objectweb/asm/tree/MethodNode", Opcodes.INTEGER, "org/objectweb/asm/tree/AbstractInsnNode", "org/objectweb/asm/tree/AbstractInsnNode", "java/util/Iterator", Opcodes.INTEGER}, 0, new Object[] {});
- mv.visitIincInsn(13, 1);
- Label l21 = new Label();
- mv.visitLabel(l21);
- mv.visitLineNumber(60, l21);
- mv.visitVarInsn(ALOAD, 12);
- mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Iterator", "next", "()Ljava/lang/Object;", true);
- mv.visitTypeInsn(CHECKCAST, "org/objectweb/asm/tree/AbstractInsnNode");
- mv.visitVarInsn(ASTORE, 10);
- Label l22 = new Label();
- mv.visitLabel(l22);
- mv.visitLineNumber(62, l22);
- mv.visitVarInsn(ALOAD, 10);
- mv.visitMethodInsn(INVOKEVIRTUAL, "org/objectweb/asm/tree/AbstractInsnNode", "getOpcode", "()I", false);
- mv.visitIntInsn(BIPUSH, 110);
- mv.visitJumpInsn(IF_ICMPNE, l19);
- Label l23 = new Label();
- mv.visitLabel(l23);
- mv.visitLineNumber(64, l23);
- mv.visitVarInsn(ALOAD, 10);
- mv.visitVarInsn(ASTORE, 11);
- Label l24 = new Label();
- mv.visitLabel(l24);
- mv.visitLineNumber(65, l24);
- mv.visitVarInsn(ILOAD, 13);
- mv.visitVarInsn(ISTORE, 9);
- mv.visitLabel(l19);
- mv.visitLineNumber(57, l19);
- mv.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
- mv.visitVarInsn(ALOAD, 12);
- mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Iterator", "hasNext", "()Z", true);
- mv.visitJumpInsn(IFNE, l20);
- Label l25 = new Label();
- mv.visitLabel(l25);
- mv.visitLineNumber(69, l25);
- mv.visitVarInsn(ALOAD, 8);
- mv.visitFieldInsn(GETFIELD, "org/objectweb/asm/tree/MethodNode", "instructions", "Lorg/objectweb/asm/tree/InsnList;");
- mv.visitVarInsn(ILOAD, 9);
- mv.visitInsn(ICONST_2);
- mv.visitInsn(ISUB);
- mv.visitMethodInsn(INVOKEVIRTUAL, "org/objectweb/asm/tree/InsnList", "get", "(I)Lorg/objectweb/asm/tree/AbstractInsnNode;", false);
- mv.visitVarInsn(ASTORE, 14);
- Label l26 = new Label();
- mv.visitLabel(l26);
- mv.visitLineNumber(70, l26);
- mv.visitVarInsn(ALOAD, 8);
- mv.visitFieldInsn(GETFIELD, "org/objectweb/asm/tree/MethodNode", "instructions", "Lorg/objectweb/asm/tree/InsnList;");
- mv.visitVarInsn(ILOAD, 9);
- mv.visitInsn(ICONST_1);
- mv.visitInsn(ISUB);
- mv.visitMethodInsn(INVOKEVIRTUAL, "org/objectweb/asm/tree/InsnList", "get", "(I)Lorg/objectweb/asm/tree/AbstractInsnNode;", false);
- mv.visitVarInsn(ASTORE, 15);
- Label l27 = new Label();
- mv.visitLabel(l27);
- mv.visitLineNumber(71, l27);
- mv.visitVarInsn(ALOAD, 8);
- mv.visitFieldInsn(GETFIELD, "org/objectweb/asm/tree/MethodNode", "instructions", "Lorg/objectweb/asm/tree/InsnList;");
- mv.visitVarInsn(ILOAD, 9);
- mv.visitMethodInsn(INVOKEVIRTUAL, "org/objectweb/asm/tree/InsnList", "get", "(I)Lorg/objectweb/asm/tree/AbstractInsnNode;", false);
- mv.visitVarInsn(ASTORE, 16);
- Label l28 = new Label();
- mv.visitLabel(l28);
- mv.visitLineNumber(73, l28);
- mv.visitVarInsn(ALOAD, 8);
- mv.visitFieldInsn(GETFIELD, "org/objectweb/asm/tree/MethodNode", "instructions", "Lorg/objectweb/asm/tree/InsnList;");
- mv.visitVarInsn(ALOAD, 14);
- mv.visitMethodInsn(INVOKEVIRTUAL, "org/objectweb/asm/tree/InsnList", "remove", "(Lorg/objectweb/asm/tree/AbstractInsnNode;)V", false);
- Label l29 = new Label();
- mv.visitLabel(l29);
- mv.visitLineNumber(74, l29);
- mv.visitVarInsn(ALOAD, 8);
- mv.visitFieldInsn(GETFIELD, "org/objectweb/asm/tree/MethodNode", "instructions", "Lorg/objectweb/asm/tree/InsnList;");
- mv.visitVarInsn(ALOAD, 15);
- mv.visitMethodInsn(INVOKEVIRTUAL, "org/objectweb/asm/tree/InsnList", "remove", "(Lorg/objectweb/asm/tree/AbstractInsnNode;)V", false);
- Label l30 = new Label();
- mv.visitLabel(l30);
- mv.visitLineNumber(75, l30);
- mv.visitVarInsn(ALOAD, 8);
- mv.visitFieldInsn(GETFIELD, "org/objectweb/asm/tree/MethodNode", "instructions", "Lorg/objectweb/asm/tree/InsnList;");
- mv.visitVarInsn(ALOAD, 16);
- mv.visitMethodInsn(INVOKEVIRTUAL, "org/objectweb/asm/tree/InsnList", "remove", "(Lorg/objectweb/asm/tree/AbstractInsnNode;)V", false);
- Label l31 = new Label();
- mv.visitLabel(l31);
- mv.visitLineNumber(77, l31);
- mv.visitFieldInsn(GETSTATIC, "java/lang/System", "out", "Ljava/io/PrintStream;");
- mv.visitLdcInsn("Patching complete!");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/io/PrintStream", "println", "(Ljava/lang/String;)V", false);
- Label l32 = new Label();
- mv.visitLabel(l32);
- mv.visitLineNumber(78, l32);
- Label l33 = new Label();
- mv.visitJumpInsn(GOTO, l33);
- mv.visitLabel(l10);
- mv.visitLineNumber(44, l10);
- mv.visitFrame(Opcodes.F_FULL, 8, new Object[] {"fr/mcnanotech/nhg/asm/NHGClassTransformer", "java/lang/String", "[B", Opcodes.INTEGER, "java/lang/String", "org/objectweb/asm/tree/ClassNode", "org/objectweb/asm/ClassReader", "java/util/Iterator"}, 0, new Object[] {});
- mv.visitVarInsn(ALOAD, 7);
- mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Iterator", "hasNext", "()Z", true);
- mv.visitJumpInsn(IFNE, l11);
- mv.visitLabel(l33);
- mv.visitLineNumber(82, l33);
- mv.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
- mv.visitTypeInsn(NEW, "org/objectweb/asm/ClassWriter");
- mv.visitInsn(DUP);
- mv.visitInsn(ICONST_3);
- mv.visitMethodInsn(INVOKESPECIAL, "org/objectweb/asm/ClassWriter", "<init>", "(I)V", false);
- mv.visitVarInsn(ASTORE, 8);
- Label l34 = new Label();
- mv.visitLabel(l34);
- mv.visitLineNumber(83, l34);
- mv.visitVarInsn(ALOAD, 5);
- mv.visitVarInsn(ALOAD, 8);
- mv.visitMethodInsn(INVOKEVIRTUAL, "org/objectweb/asm/tree/ClassNode", "accept", "(Lorg/objectweb/asm/ClassVisitor;)V", false);
- Label l35 = new Label();
- mv.visitLabel(l35);
- mv.visitLineNumber(84, l35);
- mv.visitVarInsn(ALOAD, 8);
- mv.visitMethodInsn(INVOKEVIRTUAL, "org/objectweb/asm/ClassWriter", "toByteArray", "()[B", false);
- mv.visitInsn(ARETURN);
- Label l36 = new Label();
- mv.visitLabel(l36);
- mv.visitLocalVariable("this", "Lfr/mcnanotech/nhg/asm/NHGClassTransformer;", null, l0, l36, 0);
- mv.visitLocalVariable("nameClassVanilla", "Ljava/lang/String;", null, l0, l36, 1);
- mv.visitLocalVariable("byteCode", "[B", null, l0, l36, 2);
- mv.visitLocalVariable("obfuscated", "Z", null, l0, l36, 3);
- mv.visitLocalVariable("targetMethodName", "Ljava/lang/String;", null, l1, l36, 4);
- mv.visitLocalVariable("classNode", "Lorg/objectweb/asm/tree/ClassNode;", null, l6, l36, 5);
- mv.visitLocalVariable("classReader", "Lorg/objectweb/asm/ClassReader;", null, l7, l36, 6);
- mv.visitLocalVariable("methods", "Ljava/util/Iterator;", "Ljava/util/Iterator<Lorg/objectweb/asm/tree/MethodNode;>;", l9, l36, 7);
- mv.visitLocalVariable("m", "Lorg/objectweb/asm/tree/MethodNode;", null, l12, l10, 8);
- mv.visitLocalVariable("fdiv_index", "I", null, l13, l10, 9);
- mv.visitLocalVariable("currentNode", "Lorg/objectweb/asm/tree/AbstractInsnNode;", null, l15, l10, 10);
- mv.visitLocalVariable("targetNode", "Lorg/objectweb/asm/tree/AbstractInsnNode;", null, l16, l10, 11);
- mv.visitLocalVariable("iter", "Ljava/util/Iterator;", "Ljava/util/Iterator<Lorg/objectweb/asm/tree/AbstractInsnNode;>;", l17, l10, 12);
- mv.visitLocalVariable("index", "I", null, l18, l10, 13);
- mv.visitLocalVariable("remNode", "Lorg/objectweb/asm/tree/AbstractInsnNode;", null, l26, l10, 14);
- mv.visitLocalVariable("remNode1", "Lorg/objectweb/asm/tree/AbstractInsnNode;", null, l27, l10, 15);
- mv.visitLocalVariable("remNode2", "Lorg/objectweb/asm/tree/AbstractInsnNode;", null, l28, l10, 16);
- mv.visitLocalVariable("writer", "Lorg/objectweb/asm/ClassWriter;", null, l34, l36, 8);
- mv.visitMaxs(3, 17);
- mv.visitEnd();
- }
- cw.visitEnd();
- return cw.toByteArray();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement