<dependencies> <dependency> <groupId>com.ibm.wala</groupId> <artifactId>com.ibm.wala.core</artifactId> <version>1.5.4</version> </dependency> <dependency> <groupId>com.ibm.wala</groupId> <artifactId>com.ibm.wala.shrike</artifactId> <version>1.5.4</version> </dependency> </dependencies> import com.ibm.wala.shrikeBT.*; import com.ibm.wala.shrikeCT.*; import java.io.*; public class ShrikeExample { public static void main(String[] args) { try { Module M = ShrikeCTranslator.translate("Hello.class"); ClassReader CR = M.makeClassReader(); ClassWriter CW = new ClassWriter(CR); ClassReaderSource source = new ReaderInterpreterSource(CW); for (MethodData md : CR.getAllMethods()) { IMethod m = md.makeMethod(CW.getReader(), ClassReader.IGNORE_FRAMES); IInstruction[] instructions = m.getInstructions(); IInstruction[] newInstructions = new IInstruction[instructions.length + 1]; newInstructions[0] = AConstNullInstruction.make(); System.arraycopy(instructions, 0, newInstructions, 1, instructions.length); m.updateInstructions(Arrays.asList(newInstructions)); m.visitCode(); m.visitEnd(); } FileOutputStream fos = new FileOutputStream("HelloModified.class"); CW.emitTo(fos); fos.close(); } catch (Exception e) { e.printStackTrace(); } } }


上一篇:
下一篇:
切换中文