标签: bytecode

如何在asm访问字段方法中提取字段的访问标志

我正在尝试使用访问者 API 通过 ASM 6 实现一些类转换。我需要知道某个字段是否具有特定的访问标志。例如,字段可以是 ACC_PUBLIC + ACC_STATIC。在visitField方法中,访问标志是9。那么我如何知道该字段是否是静态的?

谢谢

java bytecode java-bytecode-asm

0
推荐指数
1
解决办法
1295
查看次数

如何查找方法中调用的所有方法(包括 Lamda)?

我想列出一个方法调用的所有方法。

void create() throws MyException {
    System.out.println("TEST");
    of("String").map(String::valueOf).get();
}
Run Code Online (Sandbox Code Playgroud)

在这个方法中我想列出

  • 系统输出打印文件
  • 地图
  • 字符串::值
  • 得到();

我习惯了下面的代码,如何找到一个方法中调用的所有方法?

public class MethodFinder {

  public static void main(String[] args) throws Throwable {
    ClassPool cp = ClassPool.getDefault();
    CtClass ctClass = cp.get("MyClass");
    CtMethod method = ctClass.getDeclaredMethod("getItem1");
    method.instrument(
        new ExprEditor() {
            public void edit(MethodCall m)
                          throws CannotCompileException
            {
                System.out.println(m.getClassName() + "." + m.getMethodName() + " " + m.getSignature());
            }
        });
  }
}
Run Code Online (Sandbox Code Playgroud)

并获取除 String::valueOf 之外的所有方法

是否可以通过任何其他框架解决这个问题并不重要。

java bytecode cglib javassist byte-buddy

0
推荐指数
1
解决办法
1033
查看次数

没有代理的仪器 Java 字节码

是否可以在没有 Java 代理的情况下动态检测 Java 字节码?我之前使用 Java 代理检测过字节码,做了类似的事情:

ClassFileTransformer myTransformer = new Transformer();
instrument.addTransformer(myTransformer, true);
instrument.retransformClasses(classInstance);
instrument.removeTransformer(myTransformer);
Run Code Online (Sandbox Code Playgroud)

但是,如果不使用 Java 代理,这可能吗?我想要做的是调用一个方法,该方法将在 JVM 运行后的任何给定时间进行检测,而无需使用代理。

instrumentation bytecode agent java-bytecode-asm

0
推荐指数
1
解决办法
1244
查看次数

为什么.class文件不可读?

编译java文件时,它会生成.class文件.现在这个.class文件具有JVM解释的字节码.当我们在文本编辑器中打开.class文件时,它不是人类可读的.现在要查看字节码,可以使用像javap这样的反汇编程序.

我的问题是,为什么我们需要反汇编字节码才能查看字节码本身?

反汇编程序实际上做了什么,将.class文件转换为人类可读的格式?

java bytecode .class-file

-1
推荐指数
1
解决办法
1342
查看次数

Python是否在模块中隐式返回None?

dis当我注意到为模块生成的字节码时,我正在使用模块的Python字节码.给出一个名为的小测试模块mod.py:

if __name__ == "__main__":
    print("Hello World")
Run Code Online (Sandbox Code Playgroud)

我用它为compile()函数创建了一个代码对象:

>>> cobj = compile(open("mod.py").read(), "mod", "exec")
Run Code Online (Sandbox Code Playgroud)

然后,反汇编代码对象以查看字节码:

>>> dis.dis(cobj)
  1           0 LOAD_NAME                0 (__name__)
              3 LOAD_CONST               0 ('__main__')
              6 COMPARE_OP               2 (==)
              9 POP_JUMP_IF_FALSE       22

  2          12 LOAD_NAME                1 (print)
             15 LOAD_CONST               1 ('Hello World')
             18 CALL_FUNCTION            1 (1 positional, 0 keyword pair)
             21 POP_TOP
        >>   22 LOAD_CONST               2 (None)
             25 RETURN_VALUE
Run Code Online (Sandbox Code Playgroud)

让我印象深刻的是最后两个命令LOAD_CONSTRETURN_VALUE,如果我的理解是正确的,将常None值栈,因此返回.

模块是否隐式返回None,如果是,为什么?

python bytecode module python-2.7 python-3.x

-1
推荐指数
1
解决办法
174
查看次数

字节码是直接由python虚拟机执行还是转换为机器码由python虚拟机执行?

字节码直接由python虚拟机执行还是转换为机器码由python虚拟机执行?

\n

python 文档字节码状态如下\n \n这个 \xe2\x80\x9c 中间语言\xe2\x80\x9d 据说在执行与每个字节码对应的机器代码的虚拟机上运行。

\n

我阅读了 stackoverflow 中与 PVM 相关的所有问题,字节码 python 代码执行的最后一部分没有被任何人解释清楚

\n

以下 2 个流程中哪一个是正确的?

\n
    \n
  1. 字节码由VM转换为机器码,VM执行机器码?CPU 做了什么,那么它是否空闲?

    \n
  2. \n
  3. 字节码由VM转换为机器码,VM将机器码发送给CPU执行?

    \n
  4. \n
\n

python interpreter bytecode virtual-machine

-1
推荐指数
1
解决办法
931
查看次数

-2
推荐指数
1
解决办法
53
查看次数

java中的字节代码

如何在编译时生成字节代码.什么是口译员的使用?

java bytecode

-3
推荐指数
1
解决办法
463
查看次数

Java中的自定义类加载器

是否可以在java中创建自己的自定义类加载器.如果是那么请指导我.我想在类文件中进行更改而不是类混淆,这样就无法通过任何工具进行反转

java jvm bytecode classloader

-4
推荐指数
1
解决办法
8968
查看次数