如何在ASM中获取类的ByteArray

时间:2013-12-29 08:26:15

标签: java bytearray method-call

我正在尝试使用CHA,XTA,RTA实现方法调用应用程序。为此,我使用ASM。下面应该是字节码变量?如何遍历所有类的Java项目。

ClassReader cr = new ClassReader(bytecode);
ClassNode cn = new ClassNode();
cr.accept(cn, ClassReader.SKIP_DEBUG);

  List methods = cn.methods;
  for (int i = 0; i < methods.size(); ++i) {
       MethodNode method = (MethodNode) methods.get(i);
       if (method.instructions.size() > 0) {..}
  }

1 个答案:

答案 0 :(得分:1)

每个类都在自己的文件中。您遍历类,与遍历文件的方式相同。 e.g。

 public static void traverse(File dir) {
     for(File file: dir.listFiles()) {
         if (file.isDirectory())
             traverse(file);
         else
             processWithASM(file);
     }
 }

如果类在JAR或ZIP文件中,则需要读取该文件。