Java Code Examples for org.objectweb.asm.Opcodes#ANEWARRAY
The following examples show how to use
org.objectweb.asm.Opcodes#ANEWARRAY .
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: InstructionAdapter.java From Concurnas with MIT License | 6 votes |
@Override public void visitTypeInsn(final int opcode, final String type) { Type objectType = Type.getObjectType(type); switch (opcode) { case Opcodes.NEW: anew(objectType); break; case Opcodes.ANEWARRAY: newarray(objectType); break; case Opcodes.CHECKCAST: checkcast(objectType); break; case Opcodes.INSTANCEOF: instanceOf(objectType); break; default: throw new IllegalArgumentException(); } }
Example 2
Source File: AllocateInstrument.java From dacapobench with Apache License 2.0 | 6 votes |
public void visitTypeInsn(int opcode, String type) { if (firstInstruction) addInc(); super.visitTypeInsn(opcode, type); // we deal with Opcodes.NEW through the constructors if (opcode == Opcodes.ANEWARRAY) { int siteId = getNextSiteId(); addLog(true, siteId); } else if (DO_NEW_INVOKESPECIAL_SEQUENCE && opcode == Opcodes.NEW) { super.visitInsn(Opcodes.DUP); Triplet p = new Triplet(); p.type = type; p.var = this.localsBase + 1 + newTypeStack.size(); p.siteId = getNextSiteId(); if (this.maxLocals < p.var) { this.maxLocals = p.var; methodToLargestLocal.put(this.encodedName, new Integer( p.var)); } super.setLocalType(p.var, JAVA_LANG_OBJECT_TYPE); // super.newLocal(OBJECT_TYPE); newTypeStack.addLast(p); super.visitVarInsn(Opcodes.ASTORE, p.var); } }
Example 3
Source File: InstructionAdapter.java From JByteMod-Beta with GNU General Public License v2.0 | 6 votes |
@Override public void visitTypeInsn(final int opcode, final String type) { Type objectType = Type.getObjectType(type); switch (opcode) { case Opcodes.NEW: anew(objectType); break; case Opcodes.ANEWARRAY: newarray(objectType); break; case Opcodes.CHECKCAST: checkcast(objectType); break; case Opcodes.INSTANCEOF: instanceOf(objectType); break; default: throw new IllegalArgumentException(); } }
Example 4
Source File: StringEncryptionTransformer.java From deobfuscator with Apache License 2.0 | 6 votes |
private boolean isSmokeMethod(MethodNode method) { boolean containsArray = false; int putstatic = 0; int getstatic = 0; for(AbstractInsnNode ain : method.instructions.toArray()) if(ain.getOpcode() == Opcodes.ANEWARRAY) containsArray = true; else if(ain.getOpcode() == Opcodes.PUTSTATIC || ain.getOpcode() == Opcodes.GETSTATIC) if(((FieldInsnNode)ain).desc.equals("[Ljava/lang/String;")) { if(ain.getOpcode() == Opcodes.PUTSTATIC) putstatic++; else getstatic++; } return containsArray && putstatic == 2 && getstatic == 2; }
Example 5
Source File: AllocationMethodAdapter.java From allocation-instrumenter with Apache License 2.0 | 6 votes |
/** * new and anewarray bytecodes take a String operand for the type of the object or array element * so we hook them here. Note that new doesn't actually result in any instrumentation here; we * just do a bit of book-keeping and do the instrumentation following the constructor call * (because we're not allowed to touch the object until it is initialized). */ @Override public void visitTypeInsn(int opcode, String typeName) { if (opcode == Opcodes.NEW) { // We can't actually tag this object right after allocation because it // must be initialized with a ctor before we can touch it (Verifier // enforces this). Instead, we just note it and tag following // initialization. super.visitTypeInsn(opcode, typeName); ++outstandingAllocs; } else if (opcode == Opcodes.ANEWARRAY) { super.visitInsn(Opcodes.DUP); super.visitTypeInsn(opcode, typeName); invokeRecordAllocation(typeName); } else { super.visitTypeInsn(opcode, typeName); } }
Example 6
Source File: InstructionAdapter.java From JReFrameworker with MIT License | 6 votes |
@Override public void visitTypeInsn(final int opcode, final String type) { Type objectType = Type.getObjectType(type); switch (opcode) { case Opcodes.NEW: anew(objectType); break; case Opcodes.ANEWARRAY: newarray(objectType); break; case Opcodes.CHECKCAST: checkcast(objectType); break; case Opcodes.INSTANCEOF: instanceOf(objectType); break; default: throw new IllegalArgumentException(); } }
Example 7
Source File: InstructionAdapter.java From JReFrameworker with MIT License | 6 votes |
@Override public void visitTypeInsn(final int opcode, final String type) { Type objectType = Type.getObjectType(type); switch (opcode) { case Opcodes.NEW: anew(objectType); break; case Opcodes.ANEWARRAY: newarray(objectType); break; case Opcodes.CHECKCAST: checkcast(objectType); break; case Opcodes.INSTANCEOF: instanceOf(objectType); break; default: throw new IllegalArgumentException(); } }
Example 8
Source File: BytecodeTypeInference.java From bazel with Apache License 2.0 | 6 votes |
@Override public void visitTypeInsn(int opcode, String type) { String descriptor = convertToDescriptor(type); switch (opcode) { case Opcodes.NEW: // This should be UNINITIALIZED(label). Okay for type inference. pushDescriptor(descriptor); break; case Opcodes.ANEWARRAY: pop(); pushDescriptor('[' + descriptor); break; case Opcodes.CHECKCAST: pop(); pushDescriptor(descriptor); break; case Opcodes.INSTANCEOF: pop(); push(InferredType.INT); break; default: throw new RuntimeException("Unhandled opcode " + opcode); } super.visitTypeInsn(opcode, type); }
Example 9
Source File: JVMImpl.java From serianalyzer with GNU General Public License v3.0 | 5 votes |
/** * @param opcode * @param type * @param s */ static void handleJVMTypeInsn ( int opcode, String type, JVMStackState s ) { BaseType o; switch ( opcode ) { case Opcodes.NEW: s.push(new ObjectReferenceConstant(false, Type.getObjectType(type), type.replace('/', '.'))); break; case Opcodes.ANEWARRAY: s.pop(); if ( type.charAt(0) == '[' ) { s.push(new BasicVariable(Type.getObjectType("[" + type), "array", false)); //$NON-NLS-1$//$NON-NLS-2$ } else { s.push(new BasicVariable(Type.getObjectType("[L" + type + ";"), "array", false)); //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$ } break; case Opcodes.CHECKCAST: if ( log.isDebugEnabled() ) { log.debug("Checkcast " + type); //$NON-NLS-1$ } o = s.pop(); if ( o != null ) { o.addAlternativeType(Type.getObjectType(type)); s.push(o); } else { s.clear(); } break; case Opcodes.INSTANCEOF: o = s.pop(); if ( o != null ) { o.addAlternativeType(Type.getObjectType(type)); } s.push(new BasicConstant(Type.BOOLEAN_TYPE, "typeof " + o + " = " + type, ! ( o != null ) || o.isTainted())); //$NON-NLS-1$ //$NON-NLS-2$ break; } }
Example 10
Source File: ANewArrayStep.java From deobfuscator with Apache License 2.0 | 5 votes |
@Override public AbstractInsnNode tryMatch(InstructionMatcher matcher, AbstractInsnNode now) { if (now.getOpcode() != Opcodes.ANEWARRAY) { return null; } TypeInsnNode typeInsnNode = (TypeInsnNode) now; if (!(basic ? TransformerHelper.basicType(typeInsnNode.desc) : typeInsnNode.desc).equals(type)) { return null; } return now.getNext(); }
Example 11
Source File: MethodHookInjector.java From Hook-Manager with Mozilla Public License 2.0 | 5 votes |
@Override public void visitCode() { super.visitCode(); if(methodData.hasHookAt(HookPosition.METHOD_START)) { HookData hookData = methodData.getHook(HookPosition.METHOD_START); super.visitLdcInsn(className + "." + methodName + "|start"); if(hookData.collectsParams()) { super.visitIntInsn(Opcodes.BIPUSH, paramCount); super.visitTypeInsn(Opcodes.ANEWARRAY, "java/lang/Object"); for(byte i = 0; i < paramCount; i++) { super.visitInsn(Opcodes.DUP); super.visitIntInsn(Opcodes.BIPUSH, i); super.visitVarInsn(Opcodes.ALOAD, i); super.visitInsn(Opcodes.AASTORE); } } // TODO: Custom class path super.visitMethodInsn(Opcodes.INVOKESTATIC, "tk/wurst_client/hooks/HookManager", "hook", "(Ljava/lang/String;" + (hookData.collectsParams() ? "[Ljava/lang/Object;" : "") + ")V", false); } }
Example 12
Source File: MethodHookInjector.java From Hook-Manager with Mozilla Public License 2.0 | 5 votes |
@Override public void visitInsn(int opcode) { if(methodData.hasHookAt(HookPosition.METHOD_END) && opcode >= 172 && opcode <= 177) { HookData hookData = methodData.getHook(HookPosition.METHOD_END); super.visitLdcInsn(className + "." + methodName + "|end"); if(hookData.collectsParams()) { super.visitIntInsn(Opcodes.BIPUSH, paramCount); super.visitTypeInsn(Opcodes.ANEWARRAY, "java/lang/Object"); for(byte i = 0; i < paramCount; i++) { super.visitInsn(Opcodes.DUP); super.visitIntInsn(Opcodes.BIPUSH, i); super.visitVarInsn(Opcodes.ALOAD, i); super.visitInsn(Opcodes.AASTORE); } } // TODO: Custom class path super.visitMethodInsn(Opcodes.INVOKESTATIC, "tk/wurst_client/hooks/HookManager", "hook", "(Ljava/lang/String;" + (hookData.collectsParams() ? "[Ljava/lang/Object;" : "") + ")V", false); } super.visitInsn(opcode); }
Example 13
Source File: TypeInstruction.java From CodenameOne with GNU General Public License v2.0 | 4 votes |
@Override public void addDependencies(List<String> dependencyList) { String t = type.replace('.', '_').replace('/', '_').replace('$', '_'); t = unarray(t); actualType = t; if(t != null && !dependencyList.contains(t)) { dependencyList.add(t); } if(actualType == null) { // primitive array switch(type.charAt(type.length() - 1)) { case 'I': actualType = "JAVA_INT"; break; case 'J': actualType = "JAVA_LONG"; break; case 'B': actualType = "JAVA_BYTE"; break; case 'S': actualType = "JAVA_SHORT"; break; case 'F': actualType = "JAVA_FLOAT"; break; case 'D': actualType = "JAVA_DOUBLE"; break; case 'Z': actualType = "JAVA_BOOLEAN"; break; case 'C': actualType = "JAVA_CHAR"; break; } } if(opcode == Opcodes.ANEWARRAY) { if(type.startsWith("[")) { int dim = 2; String tt = type.substring(1); while(tt.startsWith("[")) { tt = tt.substring(1); dim++; } ByteCodeClass.addArrayType(actualType, dim); return; } ByteCodeClass.addArrayType(actualType, 1); } }
Example 14
Source File: TypeInstruction.java From CodenameOne with GNU General Public License v2.0 | 4 votes |
@Override public void appendInstruction(StringBuilder b, List<Instruction> l) { type = type.replace('.', '_').replace('/', '_').replace('$', '_'); b.append(" "); switch(opcode) { case Opcodes.NEW: b.append("PUSH_POINTER(__NEW_"); b.append(type); b.append("(threadStateData)); /* NEW */\n"); break; case Opcodes.ANEWARRAY: if(type.startsWith("[")) { int dim = 2; String t = type.substring(1); while(t.startsWith("[")) { t = t.substring(1); dim++; } b.append(" SP--;\n PUSH_POINTER(allocArray(threadStateData, (*SP).data.i, &class_array"); b.append(dim); b.append("__"); b.append(actualType); b.append(", sizeof(JAVA_OBJECT), "); b.append(dim); b.append("));\n SP[-1].data.o->__codenameOneParentClsReference = &class_array"); b.append(dim); b.append("__"); b.append(actualType); b.append("; /* ANEWARRAY multi */\n"); break; } b.append("SP--;\n PUSH_POINTER(__NEW_ARRAY_"); b.append(actualType); b.append("(threadStateData, SP[0].data.i));\n"); break; case Opcodes.CHECKCAST: b.append("BC_CHECKCAST("); b.append(type); b.append(");\n"); break; case Opcodes.INSTANCEOF: int pos = type.indexOf('['); if(pos > -1) { int count = 1; while(type.charAt(pos + 1) == '[') { count++; pos++; } b.append("BC_INSTANCEOF(cn1_array_"); b.append(count); b.append("_id_"); b.append(actualType); } else { b.append("BC_INSTANCEOF(cn1_class_id_"); b.append(actualType); } b.append(");\n"); break; } }