如何读懂晦涩的 Class 文件
Android开发者功能开发几乎都是面向 Java/Kotlin 语法编程,对于 class文件 的关注相对较少。 当你反编译 class文件 或程序编译期修改字节码亦做代码注入时,读懂字节码成为一道绕不开的槛。 文章主要描述如何快速读懂一个 class文件 。涉及到的 JVM 指令及字节码结构已做了整理,这部分知识平时用到的时候查一下便可,用多了自然记住了。即使你是一个新手,按照下面的思路整合,你也可以从 0 上手。 读完本篇文章你会收获: Class 文件结构长啥样 JVM 操作指令有哪些 如何从二进制流中读懂 Class 文件 举个栗子🌰 带你入门 编写一个简单的 java文件 。 使用 javac 编译 TestClass.java 输出 TestClass.Class ,得到的二进制流文件。可以通过工具查看其内容,在 MAC 平台上推荐使用 iHex-Hex Editor 以十六进制格式查看,大概长这个样子。 这看起来像 天书 ,无从下手。实际上任何编程产物最终都会演化成二进制,它必定是按照某种规则来申明对应逻辑。 Java 虚拟机为了能够解析这个文件,要求其内容必须严格按照格式来排版,这种结构格式便是 Class文件结构 。但是单单知道里面有哪些内容还不够,虚拟机还需要一套规则来操作这些内容,这些规则便是 字节码操作指令 。 要读懂这些 天书 ,先得了解 天书