ASM中的visitMethod不访问Scala中的方法。
创始人
2024-11-11 12:01:18
0

要让ASM的visitMethod在访问Scala中的方法时起作用,需要使用Scala ASM库。示例代码如下:

import org.objectweb.asm.Opcodes import org.objectweb.asm.ClassWriter import org.objectweb.asm.MethodVisitor import scala.tools.asm.ScalaSigAttributeParsers import scala.tools.asm.ClassReader import org.objectweb.asm.ClassVisitor

/**

  • Example class with a method to visit using ASM in Scala. */ class MyClass {

/**

  • Example method to visit. */ def visitMe(): Unit = { println("Visited method using ASM in Scala") }

/**

  • Using ASM to visit the method. */ def visitMethod(): Unit = { val classWriter = new ClassWriter(0) classWriter.visit(Opcodes.V1_8, Opcodes.ACC_PUBLIC, "MyClass", null, "java/lang/Object", null)
val methodVisitor = classWriter.visitMethod(Opcodes.ACC_PUBLIC, "visitMe", "()V", null, null)
methodVisitor.visitCode()
methodVisitor.visitFieldInsn(Opcodes.GETSTATIC, "java/lang/System", "out", "Ljava/io/PrintStream;")
methodVisitor.visitLdcInsn("Visited method using ASM in Scala")
methodVisitor.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "java/io/PrintStream", "println", "(Ljava/lang/String;)V", false)
methodVisitor.visitInsn(Opcodes.RETURN)
methodVisitor.visitMaxs(0, 0)
methodVisitor.visitEnd()

val classReader = new ClassReader(classWriter.toByteArray())
val classVisitor = new ClassVisitor(Opcodes.ASM5) {
  override def visitMethod(access: Int, name: String, descriptor: String, signature: String, exceptions: Array[String]): MethodVisitor = {
    if (name == "visitMe") {
      methodVisitor
    } else {
      super.visitMethod(access, name, descriptor, signature, exceptions)
    }
  }
}
classReader.accept(classVisitor, 0)

} }

val myClass = new MyClass() myClass.visitMethod() // call ASM to visit the method

相关内容

热门资讯

9分钟指南书!九天大厅挂价格,... 9分钟指南书!九天大厅挂价格,新祥心辅助脚本(辅助)一贯真的是有辅助(哔哩哔哩)一、新祥心辅助脚本可...
第十分钟窍要!杭麻圈辅助工具,... 第十分钟窍要!杭麻圈辅助工具,天酷游戏交易平台(辅助)原来是有辅助(哔哩哔哩)1、完成天酷游戏交易平...
第六分钟举措!四川游戏家园手机... 第六分钟举措!四川游戏家园手机版辅助,三哥玩app辅助(辅助)果然有挂下载(哔哩哔哩)1、金币登录送...
第八分钟攻略!金州水鱼脚本,新... 第八分钟攻略!金州水鱼脚本,新九五有没有脚本(辅助)果然有挂软件(哔哩哔哩)1、让任何用户在无需新九...
第六分钟秘籍!天天川南辅助,超... 第六分钟秘籍!天天川南辅助,超级三加一辅助工具(辅助)果然是真的安装(哔哩哔哩)1、超级三加一辅助工...
第七分钟教程书!拼三张辅助器,... 第七分钟教程书!拼三张辅助器,海贝之城辅助软甲下载(辅助)原来真的有平台(哔哩哔哩)1、用户打开应用...
第五分钟指引!蜀渝牌乐汇挂机软... 第五分钟指引!蜀渝牌乐汇挂机软件,天酷辅助巡查系统(辅助)果然真的是有安装(哔哩哔哩)该软件可以轻松...
8分钟讲义!微友辅助器免费版v... 8分钟讲义!微友辅助器免费版v2.0,新财神正版辅助挂(辅助)真是真的是有辅助器(哔哩哔哩)1、8分...
8分钟策略!椰岛长胜辅助,随意... 8分钟策略!椰岛长胜辅助,随意玩聚乐部辅助(辅助)本来是有插件(哔哩哔哩)1、该软件可以轻松地帮助玩...
2分钟课程!陕麻圈是不是可以作... 2分钟课程!陕麻圈是不是可以作必弊,蜜蜂大厅辅助插件(辅助)一直真的是有软件(哔哩哔哩)1)陕麻圈是...