gpt4 book ai didi

java - 如何从 Java .class 文件获取方法体偏移量

转载 作者:行者123 更新时间:2023-12-01 14:40:33 26 4
gpt4 key购买 nike

如何在 Java .class 文件中查找方法体的启动位置

例如。

package com.test;

class Hello
{

public static boolean isTrue() {
return true;
}

public static void main(String args[])
{

}
}

我想知道 Hello.class 上 isTrue() 方法体的起始位置

我可以在地址 0x0205 处使用十六进制编辑器找到 04 0C(字节码:iconst_1 ireturn),但我希望通过名称以编程方式为任何方法提供此值。

最佳答案

在 JVM 类文件格式中,偏移量不会存储到特定部分。相反,每个项目都有自己的长度,并且按顺序进行解析。这意味着为了找到方法代码,您至少必须能够解析常量池以获取每种类型并计算字符串长度,因为方法位于常量池之后。

此时您不妨使用功能齐全的类文件解析器。那里有很多图书馆。

附注在字节码级别,方法不是通过名称唯一标识的,而是通过(名称,描述符)对唯一标识的。多个方法可以具有相同的名称。字段也是如此。

关于java - 如何从 Java .class 文件获取方法体偏移量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16002935/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com