精华内容
下载资源
问答
  • 在上一篇文章《StringBuilder、StringBuffer与Java字符串处理》中,我们反汇编了Java字节码文件,通过查看编译器编译后的字节命令,我们能够更清楚地了解Java在字符串拼接等方面的处理机制。 那么,我们如何反...

    在上一篇文章《StringBuilder、StringBuffer与Java字符串处理》中,我们反汇编了Java字节码文件,通过查看编译器编译后的字节命令,我们能够更清楚地了解Java在字符串拼接等方面的处理机制。

    那么,我们如何反编译指定的Java字节码文件呢?其实,在Sun公司提供的JDK中,就已经内置了Java字节码文件反编译工具javap.exe(位于JDK安装目录的bin文件夹下)。

    我们可以在dos窗口中使用javap来反汇编指定的Java字节码文件。在使用javap的相关dos命令之前,你必须确保已经将JDK安装目录\bin添加到环境变量path中。

    接着,我们就可以使用javap来反编译指定的Java字节码文件了。在此之前,我们先通过javap的帮助命令javap -help查看javap相关指令的用法。

    javap-help

    从上述内容我们可以知道,javap的使用命令格式为javap 选项参数 类名,其中选项参数可以有多个,中间用空格隔开,也可以一个都没有。下面我们编写如下源代码文件(包名test,类名Person),并将其编译为Person.class字节码文件。

     
    1. package test;public class Person {
    2.     public Person(String name, int age, boolean gender, String address) {
    3.         this.name = name;
    4.         this.age = age;
    5.         this.gender = gender;
    6.         this.address = address;
    7.     }
    8.     private String name; // private修饰符
    9.     int age; // 默认无访问修饰符(即下面所说的package、friendly)
    10.     protected boolean gender; // protected修饰符
    11.     public String address; // public修饰符
    12.     public String getName() {
    13.         return name;
    14.     }
    15.     public void setName(String name) {
    16.         this.name = name;
    17.     }
    18.     public void sayHi() {
    19.         System.out.println("Hello, my name is " + this.name);
    20.     }
    21. }

    接着将包名文件夹test及Person.class放置在D:\java目录下。以便于我们使用javap命令进行测试。

    java-person-class

    在执行命令之前,我们需要将dos窗口的当前工作目录变更为D:\java\test

    cd-current-dir

    1、使用不带任何选项参数的命令:javap Person

    javap-person

    javap Personjavap -package Person的显示结果一样,因为-package选项参数是默认的,用于显示package(不带任何访问修饰符,即我们常说的friendly)、protectedpublic修饰的类或成员。

    备注:在dos下进入工作目录D:\java,然后使用命令javap test.Person也可以实现上述操作。下同。

    2、使用命令:javap -public Person显示public修饰的类或成员。

    javap-public-person

    与此类似,选项参数-protected用于显示protected以上访问级别(protectedpublic)的类或成员;选项参数-private用于显示private以上访问级别,也就是所有的类或成员。

    3、使用命令:javap -public -l Person显示public修饰的类或成员,并显示行号表格和本地变量表格。

    javap-public-l-person

    4、使用命令:javap -c Person显示Person.class反汇编出的字节码命令。

    javap-c-person

    由于选项参数之间组合较多,因此其他选项参数不再一一截图赘述,仅在下面使用文字进行说明:

    -classpath <pathlist>
    手动指定用户class字节码文件的存放目录,javap程序将在此目录下查找class文件,多个路径以英文分号分隔。例如:javap -classpath D:\java\test Person(即使DOS窗口的当前工作目录为其他任意路径,该命令均可正确执行)。
    -s
    打印变量的内部类型签名,例如:javap -classpath D:\java\test -s Person。
    -extdirs <dirs>
    指定 javap搜索已安装的java扩展的位置,默认的java扩展的位置为 jre\lib\ext。例如:javap -classpath D:\java\test -extdirs D:\java\myext Person
    -bootclasspath <pathlist>
    指定使用Java底层类加载器(bootstrap class loader)加载的字节码文件的位置。例如:javap -classpath D:\java\test -bootclasspath D:\java\core Person
    -verbose
    打印方法参数和本地变量的数量以及栈区大小。
    -J< flag>
    使用javap.exe来执行java.exe虚拟机的相关命令,例如javap -J-version相当于 java -version,可以有多个命令,中间以空格隔开。
    展开全文
  • 逆向分析游戏应用apk时,在目录assets下得到luajit 字节码文件 文件格式: 0X02 反编译luaJIT字节码 下载 https://github.com/bobsayshilol/luajit-decomp 1. 复制要反编译的文件到luajit-decomp: 2. 将反...

    0X01 背景

    逆向分析游戏应用apk时,在目录assets下得到luajit 字节码文件

    在这里插入图片描述
    文件格式:
    在这里插入图片描述


    0X02 反编译luaJIT字节码

    下载 https://github.com/bobsayshilol/luajit-decomp

    1. 复制要反编译的文件到luajit-decomp:
    2. 将反编译文件重命名为test.lua:
    3. 运行decoder_new.exe:
    4. 最终生成test.asm out.lua out2.lua,out2.lua就是我们要的文件:


    [1] Lua学习(一):luac、luajit编译与反编译
    [2] LuaJIT反编译总结

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

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

    千次阅读 2019-11-13 19:17:57
    javap是 Java class文件分解器,可以反编译,也可以查看java编译器生成的字节码,从而对代码内部的执行逻辑进行分析。 语法: 把java文件编译为class文件:javacTest.java(Test.java为java文件名) 生成对应的 ....

    概述:
             javap是 Java class文件分解器,可以反编译,也可以查看java编译器生成的字节码,从而对代码内部的执行逻辑进行分析。

    语法:
            把java文件编译为class文件:javac  Test.java  (Test.java为java文件名) 生成对应的 .class 文件 Test.class

            执行javap操作:javap 命令行 class文件名称(不加 .class后缀)

            例如: javap -c Test

    命令行
      -help 输出 javap 的帮助信息。
      -l 输出行及局部变量表。
      -b 确保与 JDK 1.1 javap 的向后兼容性。
      -public 只显示 public 类及成员。
      -protected 只显示 protected 和 public 类及成员。
      -package 只显示包、protected 和 public 类及成员。这是缺省设置。
      -private 显示所有类和成员。
      -J[flag] 直接将 flag 传给运行时系统。
      -s 输出内部类型签名。
      -c 输出类中各方法的未解析的代码,即构成 Java 字节码的指令。
      -verbose 输出堆栈大小、各方法的 locals 及 args 数,以及class文件的编译版本
      -classpath[路径] 指定 javap 用来查找类的路径。如果设置了该选项,则它将覆盖缺省值或 CLASSPATH 环境变量。目录用冒号分隔。
         - bootclasspath[路径] 指定加载自举类所用的路径。缺省情况下,自举类是实现核心 Jav

    展开全文
  • 使用javap反编译Java字节码文件

    千次阅读 2016-06-23 09:17:31
    我们如何反编译指定的Java字节码文件呢?其实,在Sun公司提供的JDK中,就已经内置了Java字节码文件编译工具javap.exe(位于JDK安装目录的bin文件夹下)。 我们可以在dos窗口中使用javap来反汇编指定的Java字节码...

    我们如何反编译指定的Java字节码文件呢?其实,在Sun公司提供的JDK中,就已经内置了Java字节码文件反编译工具javap.exe(位于JDK安装目录的bin文件夹下)。

    我们可以在dos窗口中使用javap来反汇编指定的Java字节码文件。在使用javap的相关dos命令之前,你必须确保已经将JDK安装目录\bin添加到环境变量path中。

    接着,我们就可以使用javap来反编译指定的Java字节码文件了。在此之前,我们先通过javap的帮助命令javap -help查看javap相关指令的用法。

    javap-help

    从上述内容我们可以知道,javap的使用命令格式为javap 选项参数 类名,其中选项参数可以有多个,中间用空格隔开,也可以一个都没有。下面我们编写如下源代码文件(包名test,类名Person),并将其编译为Person.class字节码文件。

     
    1. package test;public class Person {
    2.     public Person(String name, int age, boolean gender, String address) {
    3.         this.name = name;
    4.         this.age = age;
    5.         this.gender = gender;
    6.         this.address = address;
    7.     }
    8.     private String name; // private修饰符
    9.     int age; // 默认无访问修饰符(即下面所说的package、friendly)
    10.     protected boolean gender; // protected修饰符
    11.     public String address; // public修饰符
    12.     public String getName() {
    13.         return name;
    14.     }
    15.     public void setName(String name) {
    16.         this.name = name;
    17.     }
    18.     public void sayHi() {
    19.         System.out.println("Hello, my name is " + this.name);
    20.     }
    21. }

    接着将包名文件夹test及Person.class放置在D:\java目录下。以便于我们使用javap命令进行测试。

    java-person-class

    在执行命令之前,我们需要将dos窗口的当前工作目录变更为D:\java\test

    cd-current-dir

    1、使用不带任何选项参数的命令:javap Person

    javap-person

    javap Personjavap -package Person的显示结果一样,因为-package选项参数是默认的,用于显示package(不带任何访问修饰符,即我们常说的friendly)、protectedpublic修饰的类或成员。

    备注:在dos下进入工作目录D:\java,然后使用命令javap test.Person也可以实现上述操作。下同。

    2、使用命令:javap -public Person显示public修饰的类或成员。

    javap-public-person

    与此类似,选项参数-protected用于显示protected以上访问级别(protectedpublic)的类或成员;选项参数-private用于显示private以上访问级别,也就是所有的类或成员。

    3、使用命令:javap -public -l Person显示public修饰的类或成员,并显示行号表格和本地变量表格。

    javap-public-l-person

    4、使用命令:javap -c Person显示Person.class反汇编出的字节码命令。

    javap-c-person

    由于选项参数之间组合较多,因此其他选项参数不再一一截图赘述,仅在下面使用文字进行说明:

    -classpath <pathlist>
    手动指定用户class字节码文件的存放目录,javap程序将在此目录下查找class文件,多个路径以英文分号分隔。例如:javap -classpath D:\java\test Person(即使DOS窗口的当前工作目录为其他任意路径,该命令均可正确执行)。
    -s
    打印变量的内部类型签名,例如:javap -classpath D:\java\test -s Person。
    -extdirs <dirs>
    指定javap搜索已安装的java扩展的位置,默认的java扩展的位置为jre\lib\ext。例如:javap -classpath D:\java\test -extdirs D:\java\myext Person
    -bootclasspath <pathlist>
    指定使用Java底层类加载器(bootstrap class loader)加载的字节码文件的位置。例如:javap -classpath D:\java\test -bootclasspath D:\java\core Person
    -verbose
    打印方法参数和本地变量的数量以及栈区大小。
    -J<flag>

    使用javap.exe来执行java.exe虚拟机的相关命令,例如javap -J-version相当于java -version,可以有多个命令,中间以空格隔开。



    展开全文
  • 一、新建HelloWorld.java文件,内容如下(简易): public class HelloWorld { public int firstStack() { int a = 100; int b = 100; int c = 100; return (a+b)*c; } } 二、将后缀名为java的...
  • javap反编译java字节码文件

    千次阅读 2016-08-16 14:58:17
     javap是 Java class文件分解器,可以反编译,也可以查看java编译器生成的字节码,从而对代码内部的执行逻辑进行分析。 语法:  把java文件编译为class文件:javac Test.java (Test.java为java文件名) 生成对应...
  • 自己一直使用的一款小工具:Java反编译工具。 特点:小巧、绿色、易使用 作用:提高开发人员解决问题的效率,请大家按需下载。
  • 这行代码不会被编译字节码文件中去。 如下面的例子,flag是一个可以在编译阶段就可以确定的值, javac编译的时候不会把System.out.println编译字节码文件中。 public class T { public final static boolean...
  • 深入理解java编译后的字节码文件

    千次阅读 2018-04-19 17:15:53
    从我们写的java文件到通过编译器编译成java字节码文件(也就是.class文件),这个过程是java编译过程;而我们的java虚拟机执行的就是字节码文件。不论该字节码文件来自何方,由哪种编译器编译...
  • 怎么用java自带反编译工具查看java字节码文件图文教程,用java自带反编译工具查看java字节码文件,首先,配置好java开发环境,环境变量各种配置,这里就不一一说了,相信大家都配置好了。下面入正题----怎么用java...
  • Tolua for Unity3d 编译字节码

    千次阅读 2018-08-21 10:33:52
    想必折腾过Tolua的都知道, 为了最简化对Lua文件的支持。最优方案就是 把Lua文件文件的形式载入。... Tolua已经为我们 提供了 字节码加密的机制。   Tolua github 以上就是 Tolua 为我们集成 编译...
  • javap反编译和查看字节码文件

    千次阅读 2013-10-29 16:14:18
    javap -c filename,对类进行反编译,不能加后缀名成 javap -verbose filename,查看类文件的字节码文件,不能加后缀名
  • java 反编译 字节码 源代码 生成源码 非常好用 这个是我见过最好的反编译工具,并且可以直接打开jar包,查看java代码,而且不需要安装绿色软件
  • 使用JavaCompile进行编译,代码很简单 ... * 编译Java文件 * * * @param path * 目录 */ public static void compileFile(List files) { try { JavaCompiler compiler = ToolProvider.getSystemJa
  • JVM加载字节码文件

    千次阅读 2018-05-15 11:48:46
    转载:https://blog.csdn.net/chenqianleo/article/details/77621086https://blog.csdn.net/gjanyanlig/article/details/6818655/1、字节码结构*.java文件经过javac编译后得到*.class文件,称为字节码文件字节码...
  • class 文件java字节码Oolong反编译分析: 1.把jar包放到jdk的lib目录下并添加到环境变量的classpath路径下 2.D:\workspace\JavaC\bin>java COM.sootNsmoke.oolong.Gnoloo Test.class
  • Java字节码文件

    千次阅读 2016-12-29 00:53:53
    编译器将Java源码编译成符合Java虚拟机规范的字节码文件。 字节码组成结构比较特殊,其内部不包含任何分隔符区分段落。 一组8位字节单位的字节流组成了一个完整的字节码文件。 字节码内部组成结构 《Java虚拟机规范 ...
  • 但是在Java中 一个源文件中可以包含多个类,但是只能有一个public类,其他的都成为内部类,这时编译时会生成多个字节码文件。一个是那个public类也是该源文件名对应的.class 另一个就是public类名$内部类名.class ...
  • 编译python的pyc/pyo字节码文件

    千次阅读 2016-11-22 10:16:14
    运行环境需要python2.7,可以反编译2.5-2.7的python字节码。 下载项目后执行python setup.py install即可(执行该命令输出的内容会告诉你名为uncompyle2的脚本的具体路径) 通过dos命令进行反编译: python C:\...
  • 这个是Windows版本的jad反编译工具,可以方便地将java的字节码文件.class反编译为java文件
  • java习题 字节码文件

    2009-09-26 09:48:53
    《Java语言》练习题 一,选择题: 1... Java源程序经编译生成的字节码文件的扩展名为 ,字节码文件1,阅读并理解Greetings.java,编写完成同样功能但在浏览器中运行的Applet应用程序GreetingsApplet.java和页面文件Greetings
  • 字节码文件及字节码指令

    千次阅读 2019-05-21 11:24:14
    当我通过javac命令编译了Demo5.java后,会生成字节码文件Demo5.class,通过十六进制编辑器WinHex将其打开,可以看到是如下的格式: 哈哈,仅仅是这么几行代码,生成的字节码文件看起来是不是都很头大,毕竟人脑...
  • 字节码文件

    千次阅读 2016-03-26 18:10:39
    1.字节码文件 1.1字节码文件的内部组成结构 每一个项(类结构格式的内容)包括类型、名称以及该项的数量。类型可以是表名,同时也是“基本类型”。在这个结构体中只有两种数据结构,分别是无符号和表,其中无符号数...
  • 今天在学习jsp生命周期的时候想查看经过Tomcat编译后的字节码文件的位置发现在Tomcat的路径中只有最初自带的那些工程,在查找资料后发现我们可以在eclipse的工作空间找到这些文件 在你的工作空间路径后加 \....
  • 编译 什么是编译 编译方式 反编译 字节码 反汇编
  • 用Eclipse将编译后的java字节码打包成JAR文件

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 275,063
精华内容 110,025
关键字:

编译的字节码文件