java - java字节码中方法表和方法体之间包含哪些信息

标签 java reverse-engineering bytecode decompiling

我正在尝试弄清楚java字节码的结构。直到方法表为止,所有流程都如 http://en.wikipedia.org/wiki/Java_class_file 中所述。但之后,方法体之间存在巨大差距(这是我通过传递反编译方法指令的十六进制代码发现的)

.....00 0300 0400 0000 00[00 02] - method count 
[00 0100 0500 0600 0100 0700 0000 2f00 0100 0100 0000 05] - unexplainable gap 
[2a b700 01b1] - method body
method body is
Code:
   Stack=1, Locals=1, Args_size=1
   0:   aload_0
   1:   invokespecial   #1; //Method java/lang/Object."<init>":()V
   4:   return

在第二个方法之前也发生同样的事情(不是相同的字节字符串,而是与字节序列之间的间隙) 另外,在方法表之后还有属性计数和属性表,我也无法解释它们(在 wiki 中,此 block 上没有结构定义)。

...[00 0000 02] - attribute count
00 0800 0000 0e00 0300 0000 0500 0400 0600 0700 0700 0900 0000 2000 0300 0000 0b00 0a00 0b00 0000 0400 0700 0e00 0f00 0100 0700 0400 1000 0f00 0200 0100 1100 0000 0200 12

您能否提供任何资源来了解此详细信息?

源代码很简单

package ru.javamining.decompile;

public class ClassA {
    public int localStackTest(){
        int intVar=1500;
        int intVar1 = 198765;
        return intVar + intVar1;
    }
}

最佳答案

看看documentationmethod_info 不仅仅包含代码。

关于java - java字节码中方法表和方法体之间包含哪些信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12293360/

相关文章:

java - 给 RxJava Observable 一些东西以从另一个方法发出

java - 将整数转换为 java 类类型的数组

python - 在不安装所需模块的情况下运行 Python 程序

java删除dynamodb中的所有项目

java - 无法用 OAuth 身份验证代码交换访问 token

java - 好的软件工程与安全

excel - 关于如何突破 Excel 中 32,767 个文本限制的新想法

java - Android 应用程序中 key 的反黑客解决方案?

java - 在同一项目中使用 ASM 和 Javassist 的注意事项

python - 在只读 Docker 容器中运行 python