java反编译字节码
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反编译字节码相关推荐
- Java反编译字节码文件
如何查看 Java 的字节码文件? 在 Java 中,字节码文件.class实际上是二进制文件,并不能直接查看.要想查看,我们只能通过反编译对其进行解析,然后查看解析后的源码. 如何反编译字节码文件 ...
- idea如何反编译字节码指令_美团点评:Java字节码增强技术,线上问题诊断利器...
作者简介:泽恩,美团到店住宿业务研发团队工程师.文章转载于公众号:美团技术团队 1. 字节码 1.1 什么是字节码? Java之所以可以"一次编译,到处运行",一是因为JVM针对各 ...
- 实践详解javap命令(反编译字节码)
1 缘起 最近在补充JVM相关知识,开始学着看Java字节码反编译结果, 对于目前的我而言,只是单纯地补充知识,没有实际的应用启发, 不过,还是要丰富自己的底层知识, 现整理学习过程的测试文档,分享如 ...
- java反编译源码_java反编译获取源码
//实现反编译的类,现在可以判断具体有哪些方法,但是方法里面的具体细节还不能输出 importjava.lang.reflect.Constructor;importjava.lang.reflect ...
- 使用java反编译查看java生成的exe文件的源码
第一次写博客,也些有些问题. 上网下载一个java反编译软件,我使用的是jd-gui这款软件. 在编译时,不能直接用编译软件打开exe执行文件,有些软件是可以打开的,不过显示的是汇编代码. 首先打开e ...
- java反编译工具_ReverseTool逆向工具集合
反向工具 逆向工具集合 真棒骇客 Java和Jar(Android) jd-gui jar包浏览工具,对应的IDE插件,JD-Eclipse / JD-IntelliJ Luyten一个用于Procy ...
- java反编译工具_Java开发必会的反编译知识(附支持对Lambda进行反编译的工具)...
我之前推送过Java代码的编译与反编译,其中简单的介绍了Java编译与反编译相关的知识,最近给GitChat写<深入分析Java语法糖>的时候,又用到了很多反编译相关的知识,遂发现哪篇文章 ...
- java反编译工具jad和jd-gui使用
1.jad下载地址 http://www.javadecompilers.com/jad 2.jad配置环境变量 解压下载好的压缩包,可以得到一个jad.exe 文件. 配置环境变量主要目的是你可以全 ...
- 7 款开源 Java 反编译工具
7 款开源 Java 反编译工具 今天我们要来分享一些关于Java的反编译工具,反编译听起来是一个非常高上大的技术词汇,通俗的说,反编译是一个对目标可执行程序进行逆向分析,从而得到原始代码的过程.尤其 ...
最新文章
- c语言实现定长顺序存储,c语言:定长顺序串的基本操作实实现
- 用 Flask 来写个轻博客 (19) — 以 Bcrypt 密文存储账户信息与实现用户登陆表单
- 面试官让我说出2种@Transactional注解的失效场景,我一口气给他说了六种
- 数学--数论--HDU6919 Senior PanⅡ【2017多校第九场】
- 跟着开源项目学因果推断——mr_uplift(十五)
- 关于市场调查分析与需求分析的心得
- 新安装的VS2019+opencv4.20如何删除旧的opencv配置
- Spring(六)——声明式事物控制
- graphpad图片怎么导出矢量图_怎样将PS图像输出为矢量图
- 计算机桌面图标有哪两类,电脑桌面图标箭头,电脑桌面图标有两个箭头
- 【Processing】使用vscode编辑运行Processing
- 自然语言处理 | (4)英文文本处理与NLTK
- 什么公司邮箱邮件系统安全,安全邮箱格式怎么写?
- Halium 9 尝鲜 -- 在小米平板4上的移植 (二)
- 一些vc开发浏览器及插件的资料
- cmd结束指定端口号的进程
- 手机启动不了android,安卓手机开不了机,小编教你如何解决安卓智能手机开不了机问题...
- 审稿审什么你真的弄清楚了吗
- Android Espresso 测试框架探究
- Adobe illustrator插件开发-颜色对话框-AIColorHarmonySuite-AISwatchLibrariesSuite-AISwatchGroupSuite-AI插件开发
热门文章
- csdn博客设置背景色
- 技术贴:解码时AVC1和H264的差别
- poj-3669-Meteor Shower-bfs
- 猿创征文|程序员的浪漫(代码猜诗词)
- 利用tomcat服务器,数据库,jsp,html实现用户注册
- Spark实时进度查询
- 求与下面谓词公式等值的前束范式_谓词公式x(p(x)yr(y))q(x)中量词x的作用域是()...
- List学习笔记——每天一个Java小常识
- IPV4地址详细解析
- 【软件测试】测试老鸟老张,我的梦想是什么?梦想还在吗?