精华内容
下载资源
问答
  • 自己一直使用的一款小工具:Java反编译工具。 特点:小巧、绿色、易使用 作用:提高开发人员解决问题的效率,请大家按需下载。
  • 反编译查看具体详情字节码 Descriptor<()V> ()说明没有入参,V是没有返回值 Access flags 权限 []这是默认的,如果是public static那么[]会换成public static 那个0,3,4的号就是指令地址或者偏移地址,PC...

    反编译查看具体详情字节码
    在这里插入图片描述
    javap -v 自带的编译命令
    stack 操作数栈 栈深度 也算是数字数组长度
    locals 局部变量表长度 也算是数组长度
    在这里插入图片描述

    jclasslib工具
    Descriptor<()V> ()说明没有入参,V是没有返回值
    Access flags 权限 []这是默认的,如果是public static那么[]会换成public static
    在这里插入图片描述
    那个0,3,4的号就是指令地址或者偏移地址,PC寄存器存着这些地址,由执行引擎通过地址获取到后面的指令,比如lde,而执行引擎会操作局部变量表,操作数栈来进行一系列操作
    在这里插入图片描述
    第一列会放进PC寄存器又叫程序计数器里 第二列具体字节码指令 第三列符号引用 解析后指向常量池具体引用 在栈帧中叫动态链接
    在这里插入图片描述
    Maximum local variables 空间大小 最基本的存储单元slot(变量槽)(字)32位以下占一个, 除了long double因为是64位占俩个变量槽 其余一个变量槽(包含returnAddress类型)
    Code lenght 25 表示有25条指令,上面的ByteCode就是0-24 就是25条指令了
    在这里插入图片描述
    LineNumberTable就是Java代码的行号和字节码指令行号的对应关系,
    java代码的45行就是对应的字节码指令指令地址0
    java代码的46行就是对应的字节码指令指令地址10
    在这里插入图片描述

    局部变量表是一个数字数组,查看LocalVariableTable
    Descriptor L开头说明是引用,Name是变量名,index是数字数组的索引
    Start PC和lenght就是指明作用域范围,String s作用域是指令地址是10 有效长度15 也就是说它的作用域就是10+15 总指令行数是25 也就是它从指令地址第10开始可以被使用,根据上面LineNumberTable的关系也就是java从第46行,作用域到最后一行,也就是声明new String的下一行作用到最后一行
    在这里插入图片描述

    展开全文
  • java字节码文件反编译

    2018-01-17 11:12:14
    jd-gui java字节码反编译 class反编译 jd-gui java字节码反编译 class反编译
  • java反编译字节码

    2019-07-14 10:57:32
    class代码: package my; public class MyTest { public static void main(String[] args) { String a = "abc"; String r = a + "xyz" + "swq";...执行编译,生成MyTest.class文件: j...

     

     

    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_0
           1: invokespecial #1                  // Method java/lang/Object."<init>":()V
           4: return
    
      public static void main(java.lang.String[]);
        Code:
           0: ldc           #2                  // String abc
           2: astore_1
           3: new           #3                  // class java/lang/StringBuilder
           6: dup
           7: invokespecial #4                  // Method java/lang/StringBuilder."<init>":()V
          10: aload_1
          11: invokevirtual #5                  // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
          14: ldc           #6                  // String xyz
          16: invokevirtual #5                  // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
          19: ldc           #7                  // String swq
          21: 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_2
          28: return
    }
    

     

    查看class文件:

    javap -verbose MyTest.class ->test2.txt

    class文件信息:

    Classfile /E:/workspace/idea/ccpx/target/test-classes/my/MyTest.class
      Last modified 2019-7-14; size 624 bytes
      MD5 checksum 58bed288d9160333441c618441885985
      Compiled from "MyTest.java"
    public class my.MyTest
      minor version: 0
      major version: 52
      flags: 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: ()V
        flags: ACC_PUBLIC
        Code:
          stack=1, locals=1, args_size=1
             0: aload_0
             1: invokespecial #1                  // Method java/lang/Object."<init>":()V
             4: return
          LineNumberTable:
            line 3: 0
          LocalVariableTable:
            Start  Length  Slot  Name   Signature
                0       5     0  this   Lmy/MyTest;
    
      public static void main(java.lang.String[]);
        descriptor: ([Ljava/lang/String;)V
        flags: ACC_PUBLIC, ACC_STATIC
        Code:
          stack=2, locals=3, args_size=1
             0: ldc           #2                  // String abc
             2: astore_1
             3: new           #3                  // class java/lang/StringBuilder
             6: dup
             7: invokespecial #4                  // Method java/lang/StringBuilder."<init>":()V
            10: aload_1
            11: invokevirtual #5                  // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            14: ldc           #6                  // String xyz
            16: invokevirtual #5                  // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            19: ldc           #7                  // String swq
            21: 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_2
            28: return
          LineNumberTable:
            line 6: 0
            line 7: 3
            line 8: 28
          LocalVariableTable:
            Start  Length  Slot  Name   Signature
                0      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字节码文件,首先,配置好java开发环境,环境变量各种配置,这里就不一一说了,相信大家都配置好了。下面入正题----怎么用java...

    怎么用java自带反编译工具查看java字节码文件图文教程,用java自带反编译工具查看java字节码文件,首先,配置好java开发环境,环境变量各种配置,这里就不一一说了,相信大家都配置好了。下面入正题----怎么用java自带反编译工具查看java字节码文件

    工具/原料

    • javap

    • java+java开发工具

    方法/步骤

    1. 首先,写一个最简单的程序,我们从最简单入手,相信大家1秒就可以看懂了吧

      怎么用java自带反编译工具查看java字节码文件
    2. 然后,经过编译生成HelloWorld.class文件,对,我们就去看HelloWorld.class里面的java字节码,到底是什么。

      输入下图所示的命令,javap  -verbose  HellloWorld.class  回车,入下图所示。

      怎么用java自带反编译工具查看java字节码文件
    3. 详细代码,如下,没学过编译原理的,建议去学下,去学下编译原理,经常看看,就能看懂了,我和大家都是一样,我也是一名,计算机爱好者,没事,喜欢瞎鼓弄。今天就到这了。怎么用java自带反编译工具查看java字节码文件

      怎么用java自带反编译工具查看java字节码文件

    文章转载自:https://jingyan.baidu.com/article/2c8c281df708d90008252a02.html

    展开全文
  • ***利用IDEA进行反编译字节码文件 java程序编译之后会生成一个class文件(字节码),我们可以通过Idea进行反编译。 过程:打开project structure->project->project compiler output(可以在下面看见一个地址,...

    ***利用IDEA进行反编译字节码文件
    java程序编译之后会生成一个class文件(字节码),我们可以通过Idea进行反编译。
    过程:打开project structure->project->project compiler output(可以在下面看见一个地址,哪里就是我们编译后class文件存放的位置)->然后再IDEA左侧在你要打开这个文件的位置右击选择show in exploere,选择你要进行反编译的class文件。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • 从一个基本的类的反编译说起让你读懂Java字节码文件
  • java反编译学习字节码指令(一)

    千次阅读 2018-07-31 21:51:35
    最近沉迷于java反编译,经常看到iconst_1指令,见得多了,也让我对它感到很好奇,它是不是就是固定代表int 1啊? 做个小测试,从11到0,看看它们分别对应字节码什么? public class Bytecode { public void ...
  • java 反编译 字节码 源代码 生成源码 非常好用 这个是我见过最好的反编译工具,并且可以直接打开jar包,查看java代码,而且不需要安装绿色软件
  • 我们在学习动态代理的实现原理时往往希望能够将字节码文件反编译出来看一下代理类时如何调用handler的invoke方法来实现代理的,但是往往我们不知道如何下载字节码文件,或者下载来不知道下载路径,又或者使用javap...
  • 1.将class文件直接拖拽进工作框,即可查看class文件. 2.支持目录结构查看,方便实用
  • 编译 什么是编译 编译方式 反编译 字节码 反汇编
  • 一、新建HelloWorld.java文件,内容如下(简易): public class HelloWorld { public int firstStack() { int a = 100; int b = 100; int c = 100; return (a+b)*c; } } 二、将后缀名为java的...
  • class 文件java字节码Oolong反编译分析: 1.把jar包放到jdk的lib目录下并添加到环境变量的classpath路径下 2.D:\workspace\JavaC\bin>java COM.sootNsmoke.oolong.Gnoloo Test.class
  • javap反编译java字节码文件

    千次阅读 2016-08-16 14:58:17
     javap是 Java class文件分解器,可以反编译,也可以查看java编译器生成的字节码,从而对代码内部的执行逻辑进行分析。 语法:  把java文件编译为class文件:javac Test.java (Test.javajava文件名) 生成对应...
  • 在上一篇文章《StringBuilder、StringBuffer与Java字符串处理》中,我们反汇编了Java字节码文件,通过...其实,在Sun公司提供的JDK中,就已经内置了Java字节码文件反编译工具javap.exe(位于JDK安装目录的bin文件夹下)
  • 示例代码: public class ...先进入TestMain.java文件所在的...这里就简单的介绍了下怎么把java字节码文件反编译成JVM指令,没有什么深入的东西,如果想要解读JVM指令的含义可以对照JVM指令集去做相应的阅读。
  • javap 反编译 java 字节码文件

    千次阅读 2019-11-13 19:17:57
    javap是 Java class文件分解器,可以反编译,也可以查看java编译器生成的字节码,从而对代码内部的执行逻辑进行分析。 语法: 把java文件编译为class文件:javacTest.java(Test.javajava文件名) 生成对应的 ....
  • 用于平台独立核心文件分析器的 Java 字节码反编译插件。 JVM 环境会出现很多崩溃。 在这种情况下,服务工程师更愿意了解明显看到故障的应用方法。 问题确定通常始于对方法结构的理解。 这在 JIT 编译器崩溃的情况...
  • 这个是Windows版本的jad反编译工具,可以方便地将java字节码文件.class反编译java文件
  • 深入理解java编译后的字节码文件

    千次阅读 2018-04-19 17:15:53
    从我们写的java文件到通过编译器编译java字节码文件(也就是.class文件),这个过程是java编译过程;而我们的java虚拟机执行的就是字节码文件。不论该字节码文件来自何方,由哪种编译器编译...
  • 那么,我们如何反编译指定的Java字节码文件呢?其实,在Sun公司提供的JDK中,就已经内置了Java字节码文件反编译工具javap.exe(位于JDK安装目录的bin文件夹下)。 我们可以在dos窗口中使用javap来反汇编指定的Java...
  • 目录 idea生成java文档 idea反编译查看类的字节码文件 idea生成java文档 idea反编译查看类的字节码文件 配置好以后,使用
  • 使用javac myTest.java命令编译,将myTest.java文件编译成.class文件编译完成生成新的文件myTest.class文件 接下来使用javap命令,可以先输入javap -help来查看下帮助说明 javap -verbose 执行后的可视...
  • 首先编写一个java类 StringDemo1.java public class StringDemo1 { public static void main(String[] args) { String str1 = &amp;amp;amp;amp;quot;aaa&amp;amp;amp;amp;quot; + &amp;amp;amp;amp...
  • XJad 字节码 反编译 工具
  • jd-gui对java的class字节码文件进行反编译,得到源码,网上有很多这样的工具,自己可以自行下载,放在这里只是给大家引条路,不是赚C币的。
  • 压缩文件内含jad.exe(反编译命令行程序)及...jad命令功能强大,反编译的源代码文件中能包含java字节码指令作为注释内容,是学习java字节码的得力助手。而jd-gui.exe工具则提供可视化查看class文件对应源代码的功能。
  • 于是搞到了war包,经过解压,全是字节码文件 一脸懵逼。。。 想起来以前听别人说过有一个反编译工具,于是上网搜索下试试看 果然别人说的没错,Java界的黑科技!于是抱着试试看的心态试用下 果不其然,下载链接...
  • 浅析java反射(字节码文件)

    千次阅读 2018-08-03 13:16:33
    所以编译这一阶段也就是将java文件编译字节码文件也就是.class文件 也就是01码 那什么又是反射呢? 我现在觉得反射就是拿到它的字节码文件,对字节码文件做操作 字节码文件 我先举个例子什么叫做字节码文件 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 49,210
精华内容 19,684
关键字:

java反编译字节码文件

java 订阅