class代码:

package my;public class MyTest {public static void main(String[] args) {String a = "abc";String r = a + "xyz" + "swq";}
}

执行编译,生成MyTest.class文件:

javac MyTest.java

执行反编译:

javap -c MyTest.class

也可以反编译到文件:

javap -c MyTest.class ->test.txt

反编译后的字节码:

Compiled from "MyTest.java"
public class my.MyTest {public my.MyTest();Code:0: aload_01: invokespecial #1                  // Method java/lang/Object."<init>":()V4: returnpublic static void main(java.lang.String[]);Code:0: ldc           #2                  // String abc2: astore_13: new           #3                  // class java/lang/StringBuilder6: dup7: invokespecial #4                  // Method java/lang/StringBuilder."<init>":()V10: aload_111: invokevirtual #5                  // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;14: ldc           #6                  // String xyz16: invokevirtual #5                  // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;19: ldc           #7                  // String swq21: invokevirtual #5                  // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;24: invokevirtual #8                  // Method java/lang/StringBuilder.toString:()Ljava/lang/String;27: astore_228: return
}

查看class文件:

javap -verbose MyTest.class ->test2.txt

class文件信息:

Classfile /E:/workspace/idea/ccpx/target/test-classes/my/MyTest.classLast modified 2019-7-14; size 624 bytesMD5 checksum 58bed288d9160333441c618441885985Compiled from "MyTest.java"
public class my.MyTestminor version: 0major version: 52flags: ACC_PUBLIC, ACC_SUPER
Constant pool:#1 = Methodref          #10.#27        // java/lang/Object."<init>":()V#2 = String             #28            // abc#3 = Class              #29            // java/lang/StringBuilder#4 = Methodref          #3.#27         // java/lang/StringBuilder."<init>":()V#5 = Methodref          #3.#30         // java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;#6 = String             #31            // xyz#7 = String             #32            // swq#8 = Methodref          #3.#33         // java/lang/StringBuilder.toString:()Ljava/lang/String;#9 = Class              #34            // my/MyTest#10 = Class              #35            // java/lang/Object#11 = Utf8               <init>#12 = Utf8               ()V#13 = Utf8               Code#14 = Utf8               LineNumberTable#15 = Utf8               LocalVariableTable#16 = Utf8               this#17 = Utf8               Lmy/MyTest;#18 = Utf8               main#19 = Utf8               ([Ljava/lang/String;)V#20 = Utf8               args#21 = Utf8               [Ljava/lang/String;#22 = Utf8               a#23 = Utf8               Ljava/lang/String;#24 = Utf8               r#25 = Utf8               SourceFile#26 = Utf8               MyTest.java#27 = NameAndType        #11:#12        // "<init>":()V#28 = Utf8               abc#29 = Utf8               java/lang/StringBuilder#30 = NameAndType        #36:#37        // append:(Ljava/lang/String;)Ljava/lang/StringBuilder;#31 = Utf8               xyz#32 = Utf8               swq#33 = NameAndType        #38:#39        // toString:()Ljava/lang/String;#34 = Utf8               my/MyTest#35 = Utf8               java/lang/Object#36 = Utf8               append#37 = Utf8               (Ljava/lang/String;)Ljava/lang/StringBuilder;#38 = Utf8               toString#39 = Utf8               ()Ljava/lang/String;
{public my.MyTest();descriptor: ()Vflags: ACC_PUBLICCode:stack=1, locals=1, args_size=10: aload_01: invokespecial #1                  // Method java/lang/Object."<init>":()V4: returnLineNumberTable:line 3: 0LocalVariableTable:Start  Length  Slot  Name   Signature0       5     0  this   Lmy/MyTest;public static void main(java.lang.String[]);descriptor: ([Ljava/lang/String;)Vflags: ACC_PUBLIC, ACC_STATICCode:stack=2, locals=3, args_size=10: ldc           #2                  // String abc2: astore_13: new           #3                  // class java/lang/StringBuilder6: dup7: invokespecial #4                  // Method java/lang/StringBuilder."<init>":()V10: aload_111: invokevirtual #5                  // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;14: ldc           #6                  // String xyz16: invokevirtual #5                  // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;19: ldc           #7                  // String swq21: invokevirtual #5                  // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;24: invokevirtual #8                  // Method java/lang/StringBuilder.toString:()Ljava/lang/String;27: astore_228: returnLineNumberTable:line 6: 0line 7: 3line 8: 28LocalVariableTable:Start  Length  Slot  Name   Signature0      29     0  args   [Ljava/lang/String;3      26     1     a   Ljava/lang/String;28       1     2     r   Ljava/lang/String;
}
SourceFile: "MyTest.java"

java反编译字节码相关推荐

  1. Java反编译字节码文件

    如何查看 Java 的字节码文件? 在 Java 中,字节码文件.class实际上是二进制文件,并不能直接查看.要想查看,我们只能通过反编译对其进行解析,然后查看解析后的源码. 如何反编译字节码文件 ...

  2. idea如何反编译字节码指令_美团点评:Java字节码增强技术,线上问题诊断利器...

    作者简介:泽恩,美团到店住宿业务研发团队工程师.文章转载于公众号:美团技术团队 1. 字节码 1.1 什么是字节码? Java之所以可以"一次编译,到处运行",一是因为JVM针对各 ...

  3. 实践详解javap命令(反编译字节码)

    1 缘起 最近在补充JVM相关知识,开始学着看Java字节码反编译结果, 对于目前的我而言,只是单纯地补充知识,没有实际的应用启发, 不过,还是要丰富自己的底层知识, 现整理学习过程的测试文档,分享如 ...

  4. java反编译源码_java反编译获取源码

    //实现反编译的类,现在可以判断具体有哪些方法,但是方法里面的具体细节还不能输出 importjava.lang.reflect.Constructor;importjava.lang.reflect ...

  5. 使用java反编译查看java生成的exe文件的源码

    第一次写博客,也些有些问题. 上网下载一个java反编译软件,我使用的是jd-gui这款软件. 在编译时,不能直接用编译软件打开exe执行文件,有些软件是可以打开的,不过显示的是汇编代码. 首先打开e ...

  6. java反编译工具_ReverseTool逆向工具集合

    反向工具 逆向工具集合 真棒骇客 Java和Jar(Android) jd-gui jar包浏览工具,对应的IDE插件,JD-Eclipse / JD-IntelliJ Luyten一个用于Procy ...

  7. java反编译工具_Java开发必会的反编译知识(附支持对Lambda进行反编译的工具)...

    我之前推送过Java代码的编译与反编译,其中简单的介绍了Java编译与反编译相关的知识,最近给GitChat写<深入分析Java语法糖>的时候,又用到了很多反编译相关的知识,遂发现哪篇文章 ...

  8. java反编译工具jad和jd-gui使用

    1.jad下载地址 http://www.javadecompilers.com/jad 2.jad配置环境变量 解压下载好的压缩包,可以得到一个jad.exe 文件. 配置环境变量主要目的是你可以全 ...

  9. 7 款开源 Java 反编译工具

    7 款开源 Java 反编译工具 今天我们要来分享一些关于Java的反编译工具,反编译听起来是一个非常高上大的技术词汇,通俗的说,反编译是一个对目标可执行程序进行逆向分析,从而得到原始代码的过程.尤其 ...

最新文章

  1. c语言实现定长顺序存储,c语言:定长顺序串的基本操作实实现
  2. 用 Flask 来写个轻博客 (19) — 以 Bcrypt 密文存储账户信息与实现用户登陆表单
  3. 面试官让我说出2种@Transactional注解的失效场景,我一口气给他说了六种
  4. 数学--数论--HDU6919 Senior PanⅡ【2017多校第九场】
  5. 跟着开源项目学因果推断——mr_uplift(十五)
  6. 关于市场调查分析与需求分析的心得
  7. 新安装的VS2019+opencv4.20如何删除旧的opencv配置
  8. Spring(六)——声明式事物控制
  9. graphpad图片怎么导出矢量图_怎样将PS图像输出为矢量图
  10. 计算机桌面图标有哪两类,电脑桌面图标箭头,电脑桌面图标有两个箭头
  11. 【Processing】使用vscode编辑运行Processing
  12. 自然语言处理 | (4)英文文本处理与NLTK
  13. 什么公司邮箱邮件系统安全,安全邮箱格式怎么写?
  14. Halium 9 尝鲜 -- 在小米平板4上的移植 (二)
  15. 一些vc开发浏览器及插件的资料
  16. cmd结束指定端口号的进程
  17. 手机启动不了android,安卓手机开不了机,小编教你如何解决安卓智能手机开不了机问题...
  18. 审稿审什么你真的弄清楚了吗
  19. Android Espresso 测试框架探究
  20. Adobe illustrator插件开发-颜色对话框-AIColorHarmonySuite-AISwatchLibrariesSuite-AISwatchGroupSuite-AI插件开发

热门文章

  1. csdn博客设置背景色
  2. 技术贴:解码时AVC1和H264的差别
  3. poj-3669-Meteor Shower-bfs
  4. 猿创征文|程序员的浪漫(代码猜诗词)
  5. 利用tomcat服务器,数据库,jsp,html实现用户注册
  6. Spark实时进度查询
  7. 求与下面谓词公式等值的前束范式_谓词公式x(p(x)yr(y))q(x)中量词x的作用域是()...
  8. List学习笔记——每天一个Java小常识
  9. IPV4地址详细解析
  10. 【软件测试】测试老鸟老张,我的梦想是什么?梦想还在吗?