51、Java编程基础与JVM字节码分析

Java编程基础与JVM字节码分析

1. 引言

Java有一些知名的反编译器,对JVM字节码进行反编译比底层的x86代码要容易,原因如下:
- 数据类型的信息更丰富。
- JVM内存模型更加严谨和清晰。
- Java编译器不做任何优化(JVM的即时编译器JIT在运行时进行优化),因此类文件中的字节码通常可读性较高。

了解JVM知识在以下场景中会很有用:
- 对类文件进行快速简单的修补,无需重新编译反编译器的结果。
- 分析混淆代码。
- 分析较新Java编译器生成的代码,而此时可能还没有更新的反编译器。
- 构建自己的混淆器。
- 构建针对JVM的编译器代码生成器(如Scala、Clojure等)。

在后续示例中,除非特别说明,均使用JDK 1.7。反编译类文件的通用命令是: javap -c -verbose

2. 返回值

在Java中,通常所说的“函数”实际上是“方法”,因为每个方法都与某个类相关联,不能在类外部定义方法。为了简便,下面仍将其称为“函数”。

2.1 返回整数0

public class ret
{
    public static int main(String[] args)
    {
        return 0;
    }
}

编译命令: javac ret.java
反编译命令: javap -c

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值