All pastes #130696 Raw Edit

nublets

public text v1 · immutable
#130696 ·published 2006-08-14 04:09 UTC
rendered paste body
import org.apache.bcel.classfile.JavaClass;
import org.apache.bcel.classfile.Method;
import org.apache.bcel.generic.*;
import org.apache.bcel.util.InstructionFinder;
import org.apache.bcel.Repository;
import java.util.Iterator;
import java.io.IOException;

public class Changer {
    Changer(JavaClass jc) {
        //Go through all the methods
        for (Method m : jc.getMethods())
            //if its the main method
            if (m.getName().equalsIgnoreCase("main")) {
                //Lets get the version number
                System.out.print("Found main\n");
		change(new MethodGen(m, jc.getClassName(), new ConstantPoolGen(jc.getConstantPool())));
            }
   
} 
public void change(MethodGen mg){
//GEt the instruction list
	
        InstructionList il = mg.getInstructionList();
        String iPat = "invokestatic";
	String pattern = "invokestatic[184](3) 765";
        InstructionFinder finder = new InstructionFinder(il);
	InstructionFactory factory =  new InstructionFactory(mg.getConstantPool());
        	for (Iterator it = finder.search(iPat); it.hasNext();) {
        	InstructionHandle[] match = (InstructionHandle[]) it.next();
		INVOKESTATIC invokestatic = (INVOKESTATIC) match[0].getInstruction();
		System.out.println(invokestatic.toString());
		//System.out.println(invokestatic.getReturnType().toString());
		}
	
}

}