精华内容
参与话题
问答
  • Android反编译工具包(升级)官方绿色版

    万次下载 热门讨论 2012-10-10 19:18:30
    Android反编译工具包,内含图形和命令两种反编译方式,命令支持windows和linux平台,亲测验证成功!详见博客:Android APK反编译详解(附图) http://blog.csdn.net/sunboy_2050/article/details/6727581
  • apktool 反编译工具 绿色版

    万次下载 热门讨论 2014-03-11 20:18:37
    apktool功能:反编译出apk资源文件。 使用方式: 把apktool 解压到任意位置 执行 在dos 改目录下 执行 apktool d xxx.apk test ,便会把编译后的资源存入test文件夹下。
  • 2020年支持java8的Java反编译工具汇总

    万次阅读 多人点赞 2018-06-29 10:58:53
    luyten是一款操作简单、功能实用的java反编译工具,软件支持*.JAR、*.zip、*.class等类型文件的反编译操作,还原度非常高,支持更多功能设置,如显式导入、类型、合成组件等等,用户可根据不同的需求选择合适的显示...

         大多商业软件,会对程序进行加密、加壳等安全措施以防范软件被破解,从而使得反编译越来越难。反编译是一个对目标可执行程序进行逆向分析,从而得到源代码的过程。尤其是像Java这样的运行在虚拟机上的编程语言,更容易进行反编译得到源代码。

          我们知道,在代码支撑方面,JDK 1.7引入了字符串Switch、泛型接口改进等新功能,1.8增加了lambda表达式、方法传递、多重注解等新特性,这使得反编译工具的编写难度加大。今天我们盘点一下目前仍然可用的、相对功能很强大的Java反编译工具(Eclipse插件不做评价),比较老的反编译工具很难支持Java8及其以上版本。

     

    1、Java 反编译器 JD-GUI

    JD-GUI 是一个用 C++ 开发的 Java 反编译工具,由 Pavel Kouznetsov开发,支持Windows、Linux和苹果Mac Os三个平台。而且提供了Eclipse平台下的插件JD-Eclipse、IntelliJ的插件JD-IntelliJ。JD-GUI不需要安装,直接点击运行,可以反编译jar,class文件。

    最新版本1.4.0,官方网站:http://jd.benow.ca/

     

    2、Java 反编译器 procyon-decompiler及其window下独立UI工具luyten

         Procyon-Decompiler支持JDK1.8类的反编译,在很多方面做得非常不错,如反编译匿名类、内部类、Java8 Lambda等等。Procyon-Decompiler支持JDK1.8类的反编译,在很多方面做得非常不错:字符串的Switch、枚举声明方面、注解方面、匿名类、内部类、Java8新接口规范、Java8 Lambda表达式、Java8 方法传递等。

          luytenProcyon的GUI,是一款操作简单、功能实用的java反编译工具,软件支持*.JAR、*.zip、*.class等类型文件的反编译操作,还原度非常高,支持更多功能设置,如显式导入、类型、合成组件等等,用户可根据不同的需求选择合适的显示项目,结果更明了。

         luyten的最新版本0.53,官方网址:https://github.com/deathmarine/Luyten,只需要下载luyten即可,不用下载ProcyonProcyon最新版本0.5.30。

     

    3、Android反编译gui工具Jadx

         jadx是一款Android反编译gui工具,它支持apk、dex、jar、class、zip、aar等文件。jadx操作方便,反编译后的代码可读性高,同时还拥有较完善的gui界面,除去混淆部分的代码,jadx已经非常接近源代码了。

       Jadx最高版本v0.7.1,官方地址https://github.com/skylot/jadx/

       三个工具中JD-GUI打开jar文件反编译速度飞快、luyten次之、Jadx最慢(有时候需要等好一会,喝杯咖啡先。三者都会遇到反编译不出来的情况,建议配合使用。

    展开全文
  • exe反编译工具exe反编译工具exe反编译工具

    千次下载 热门讨论 2008-03-20 23:23:23
    exe反编译工具exe反编译工具 exe反编译工具exe反编译工具 exe反编译工具exe反编译工具 exe反编译工具exe反编译工具 exe反编译工具exe反编译工具
  • 反编译工具

    2018-08-02 10:42:57
    反编译 jdk1.8 工具 javak开发的小伙伴应该都知道,java反编译用【jd-gui.exe】来进行编译非常方便快捷,而且还轻量。  但是最近切换环境,换成用jdk1.8来进行开发,那么问题就出来了。用jd-gui.exe反编译的时候...

    反编译 jdk1.8 工具

    javak开发的小伙伴应该都知道,java反编译用【jd-gui.exe】来进行编译非常方便快捷,而且还轻量。 

    但是最近切换环境,换成用jdk1.8来进行开发,那么问题就出来了。用jd-gui.exe反编译的时候竟然显示不出来了!!! 

    这里写图片描述

    网上搜了下资料,发现可能有两个问题

    1. 1.jd-gui.exe只支持jdk1.7及以下的版本。 

    2.jdk1.8小版本问题(有同事同样是jdk1.8就能解析)

    最后不得以换了个工具,【Procyon-Decompiler】完美解决,哈哈。

    在代码支撑方面,JDK 1.7引入了字符串Switch、泛型接口改进等新功能,1.8增加了lambda表达式、方法传递、多重注解等新特性,这使得反编译工具的编写难度加大,Procyon-Decompiler支持JDK1.8类的反编译,在很多方面做得非常不错: 

    字符串的Switch 

    枚举声明方面 

    注解方面 

    匿名类、内部类 

    Java8新接口规范 

    Java8 Lambda表达式 

    Java8 方法传递 

    另外它在反编译后输出多种类型的结果,如Java源码、原始字节码、字节码AST

    下载jar包,本机命令行运行

    java -jar C:\procyon-decompiler-0.5.29.jar F:\***.class

    保存源代码

    java -jar C:\procyon-decompiler-0.5.29.jar F:\***.class -o f:

     

    展开全文
  • 绝对完整的Android反编译工具 使用Android反编译工具以前得选安装java环境。
  • 非常好用的反编译工具jd-gui,反编译工具支持jdk1.7及以下反编译,反编译工具支持jdk1.7及以下反编译
  • luac反编译工具

    2018-03-30 21:19:05
    luac反编译工具!luac反编译工具!luac反编译工具!luac反编译工具!luac反编译工具
  • APK反编译工具

    千次下载 热门讨论 2018-05-28 18:11:20
    资源包括一整套的反编译工具,里面有apktool、auto-sign签名工具、dex2jar工具和jd-gui查看jar包源码工具
  • Android反编译工具

    千次下载 热门讨论 2014-05-14 16:49:10
    Android反编译工具,可以看到更多关于Android中的apk包中的信息
  • DLL反编译工具DLL反编译工具DLL反编译工具DLL反编译工具DLL反编译工具DLL反编译工具
  • Java反编译工具使用对比,最好用的Java反编译工具 --- JD-GUI 大家都知道,将源代码转换成二进制执行代码的过程叫“编译”,比如将C源代码编译成.exe可执行文件;那么把二进制执行代码转换成源代码的过程就叫“反...

    Java反编译工具使用对比,最好用的Java反编译工具 --- JD-GUI、XJad


    一、前言


    1、什么是反编译?

    大家都知道,将源代码转换成二进制执行代码的过程叫编译,比如将C源代码编译成.exe可执行文件;那么把二进制执行代码转换成源代码的过程就叫“反编译,比如把exe转换为C源代码就叫“反编译”。
           由于主流的C的编译器都进行了代码的优化,因此把C编译生成的exe文件反编译成C代码非常困难。但是像Java、.net这样基于虚拟机技术的编程语言则反编译非常容易,Java平台下有Jad、Jode、JD等反编译器,.net平台下则有Reflector等反编译器,他们的反编译质量非常高,甚至和源代码几乎没什么差别。

    2、反编译得到的是源代码吗?
         反编译得到的代码是非常接近于源代码,但是或多或少与源代码有一些差异的,比如一些表达式被优化掉了,比如,下面的源代码:
     int i=1+1;
    学过《编译原理》的同学知道有“常量优化”这个编译优化算法,因此上边的源代码一般会被优化为:int i=2;
    由于在编译过程中已经进行了优化,把“1+1”这个原始的信息丢掉了,因此反编译出来的代码只能是:
    int i=2;
    可以看到反编译得到的代码和源代码是有区别的。
    比如:andriod中
    download = (Button)findViewById(R.id.xiaz);
    被优化成了download = (Button)findViewById(0x7f070018);

    3、程序可以反编译岂不是很不安全?
    可以采用代码混淆等技术来加大反编译的难度,和降低反编译代码的可读性,但是完全避免反编译是不可能的。


    4、反编译器的原理是什么?
    由于Java、.net这样的基于虚拟机技术的语言平台,都是采用了Byte Code的二进制结构,因此很容易将ByteCode转化为“抽象语法树”(简称AST,《编译原理》这门课中的概念),然后采用反编译器就可以将AST转换为代码了。


    二、反编译工具和插件有哪些?


    1、 JD-GUI【推荐】

    JD-GUI是属于Java Decompiler项目(JD项目)下个的图形化运行方式的反编译器。
    JD-Eclipse属于Java Decompiler项目(JD项目)下个Eclipse插件化运行方式的反编译插件。
    JD-IntelliJ属于Java Decompiler项目(JD项目)下个Intellij插件化的运行方式的反编译插件。

    JD-GUI 是一个用 C++ 开发的 Java 反编译工具,由 Pavel Kouznetsov开发,支持Windows、Linux和苹果Mac Os三个平台。而且提供了Eclipse平台下的插件JD-Eclipse,Intellij平台下的插件JD-Intellij。JD-GUI不需要安装,直接点击运行,可以反编译jar,class文件。

    支持jar包级的反编译,可将整个jar包直接保存为*.src.zip源代码包,反编译迅速,错误率极少。

    JD分为JD-GUI、JD-Eclipse/JD-Intellij两种运行方式,JD-GUI是以单独的程序的方式运行,JD-Eclipse/JD-Intellji则是以一个Eclipse/IDEA插件的方式运行。

    Java Decompiler项目”旨在开发一些工具,以便反编译和分析Java 5以及更高本的Java的“字节代码”。
    JD-Core是一个库,是一个从一个或多个“.class”文件中重建Java源代码的库。JD-Core可用于恢复丢失的源代码并探索运行时Java的源代码。支持Java 5的新功能,例如注释,泛型或类型“枚举”。JD-GUI和JD-Eclipse包括JD-Core库。

    2、Jad 

    jad是一款使用非常广泛地Java反编译工具,Jadclipse就是基于jad的反编译插件,JAD 文件包含 MIDlet 套件的标题信息,例如开发应用程序的公司、应用程序名称和大小。

    3、XJad (比较好用,不过目前版本是2.2,是2006发布的了,一直没更新了,而且有bug,不推荐了

    XJad是基于Jad核心的Java源程序反编译软件,内置Jad1.5.8e2;
    可处理多个*.class文件,可以处理文件夹内的所有文件,甚至可以处理*.jar文件;
    带有多页面文本编辑器,也可集成在资源管理器中,随时点击右键都可进行操作;
    支持java语法的高亮显示;


    4、Luyten

    比较精准的一个java反编译工具,没用过,用的人比较少。


    ......

    还有很多反编译工具,但是主要推荐JD-GUI,其次是XJad。


    ----------------------

    反编译工具下载:

    1、JD-GUI(Java反编译工具) 0.3.6 绿色免费版.zip 【免安装,直接解压运行】-CSDN下载  http://download.csdn.net/download/chenchunlin526/10024535


    2、Java反编译工具(XJad) v2.2 中文绿色版.zip 【免安装,直接解压运行】-CSDN下载  http://download.csdn.net/download/chenchunlin526/10029995




    三、反编译工具JD-GUI的使用

    作为一个软件开发人员,在自学的成长道路上,不可避免的会借鉴别人开发完成的功能实现方法,js/css/html可以通过浏览器直接捕获,没有源码的能拿到calss文件也是一件幸事,那么如何查看class文件呢?这就要用到反编译工具了。

    ① JD-GUI这款Java反编译工具是纯绿色,完全免费的,非常适合开发者,其界面也简洁大方


    ② 鼠标单击“file”从中选择“Open File ...“选项,弹出一个文件选择框,可以选择要打开的文件,或者直接单击文件夹图标,直接弹出文件选择框


    ③ 从打开的文件的左侧可以看到文件的保存位置,类及方法,右侧显示类的具体内容,注释不会显示,同时它会把这个类所在的包下的其他类也反编译成源码:


    如需将预览的.class文件转换成.java文件,只需点击File菜单里的save即可。


    ④ 还有一种方法是直接打开jar包,鼠标单击文件夹图标,弹出文件选择框,选择一个jar包,单击‘确定’


    ⑤ 从打开的界面中可以看到整个jar包中的.class文件的反编译结果




    顺便说一下XJad 的使用使用方法和JD-GUI都差不多),虽然版本比较老,且官方10多年没更新了,算是已经放弃了。

    不过也可以可用:

    使用说明:
    ========
    1、打开一个或者多个*.class文件,XJad反编译后,重命名为*.java文件,
    保存至当前文件夹,并在编辑器中打开查看;
    2、打开一个文件夹,XJad将该文件夹下所有*.class文件进行反编译,并保存至该文件夹下,
    依据包路径信息生成文件夹路径,如com.spring.framework.*,
    将建立com\spring\framework的文件夹结构;
    3、打开一个*.jar文件,XJad将该Jar文件中的所有*.class文件解压缩到临时目录并进行反编译,
    并将源文件带包路径信息保存至当前文件夹下名称为“~” + *.jar 的文件夹中;

    ① 单个文件反编译


    反编译好之后,会在原来的.class所在文件夹下生成一个同名的.java源码文件:

    且XJad会自动打开反编译后生成的源码文件:


    ② 整个文件夹反编译,可以选择一个文件夹,XJad会把该文件夹下的所有.class文件全部反编译好。
    比如,我的D盘新建一个文件夹,FindPassword,里面只有个FindPasswordController.class文件

    然后选择 反编译文件夹:


    确定之后:

    提示已经反编译成功,我们现在到 D:\FindPassword 里查看,里面已经生成了一个按层次结构排行的源码文件包了


    点进去看一下,文件夹里有刚反编译好的源码文件了:


    记事本打开看一下,源码正常,只是没有了注释了


    ③ jar包反编译


    确定之后

    反编译之后,会在jar包所在的文件下,生成一个以“~”开头的源码文件夹:

    打开进去看一下:


    好了,JD-GUI 和 XJad的使用介绍到此介绍了。

    ----------------------

    工具下载:

    1、JD-GUI(Java反编译工具) 0.3.6 绿色免费版.zip-CSDN下载  http://download.csdn.net/download/chenchunlin526/10024535


    2、Java反编译工具(XJad) v2.2 中文绿色版.zip 【免安装,直接解压运行】-CSDN下载  http://download.csdn.net/download/chenchunlin526/10029995




    展开全文
  • ios 反编译工具

    热门讨论 2013-12-12 11:52:29
    ios 反编译工具,研究ios反编译的同学看看咯.
  • lua反编译工具

    2018-05-10 16:24:46
    lua反编译工具包括lua 5.1 与 lua 5.2 包括lua.exe luac.exe luadec.exe 等 可以用此工具加密lua为luac 也可以解密luac为lua
  • Bin反编译工具

    2017-11-13 18:19:58
    三款强大Bin反编译工具: unbin.exe 237K c51fby.exe 256K Bin2C.exe 22K
  • 很牛的反编译工具

    2019-01-05 19:15:22
    很牛的反编译工具,很牛的反编译工具可以用来反编译各种dll,很强大,而且体积还不是很大,很方便。
  • C++反编译工具

    2018-05-15 11:43:19
    C++反编译工具,用来显示与一个可执行文件(exe或者dll)相关的依赖项(dll),以及该exe或dll引用了这些dll中的哪些接口。
  • 最全的Android反编译工具包_Androidfby+apk2java 一键反编译,让你直接看到别人的布局文件,和jar源码,帮助你快速熟悉Android app开发内幕
  • Java反编译工具

    千次阅读 2019-12-12 00:13:10
    本文主要介绍三款Java反编译工具,分别为javap、jad、CFR,三款工具各有优缺点,可以根据需求合理选择。 文章目录一、理解Java编译与反编译1.1 宏观上的概念1.2 Java编译与反编译二、灵活选取Java反编译工具2.1 JDK...

    本文主要介绍三款Java反编译工具,分别为javap、jad、CFR,三款工具各有优缺点,可以根据需求合理选择。

    一、理解Java编译与反编译

    1.1 宏观上的概念

    编程语言分为低级语言和高级语言。其中机器语言和汇编语言属于低级语言,直接用计算机指令编写程序,而C、C++、Java、Python等属于高级语言,用语句编写程序,语句是计算机指令的抽象表示。低级语言是计算机认识的语言、高级语言是程序员认识的语言。

    所谓的编译,就是将高级语言翻译成计算机能识别的低级语言的过程,而反编译则是将已经编译好的语言还原成未编译高级语言的过程。

    1.2 Java编译与反编译

    针对于Java语言的编译,是将.java源文件通过javac编译器编译成.class字节码文件。字节码文件并不能由计算机直接识别,需要借助JVM内嵌的解释器解释成机器语言后执行。而Java语言的反编译,指的是将.class字节码文件还原成近似java源代码文件。此处近似是指反编译得到的是常量优化之后的代码。

    二、灵活选取Java反编译工具

    2.1 JDK自带的工具–javap

    javapJDK自带工具,可以反编译代码,也可以查看.class字节码文件。javap的反编译是非常轻量的,反编译出的不是.java文件,不利于理解。

    public class Test {
        public static void main(String[] args) {
            List<String> stringList = ImmutableList.of("awe","coder");
            stringList.forEach(e -> {
                System.out.println(e);
            });
        }
    }
    
    $ javac Test.java  // 得到Test.class
    

    对上面得到的字节码文件反编译

    $ javap -p Test.class 
    
    public class com.ac.Test {
      public com.ac.Test();
      public static void main(java.lang.String[]);
      private static void lambda$main$0(java.lang.String);
    }
    

    通过javap -v -p选项打印出的仍然是字节码文件。字节码中展示的内容是最详细的,从其中可以透彻的分析底层原理。分析字节码文件在很多情况下是非常有必要的,例如分析synchronized底层原理时。下面由于篇幅,仅展示一小部分字节码。

    $ javap -v -p Test.class
    .......
    private static void lambda$main$0(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=1, args_size=1
         0: getstatic     #7                  // Field java/lang/System.out:Ljava/io/PrintStream;
         3: aload_0
         4: invokevirtual #8                  // Method java/io/PrintStream.println:(Ljava/lang/String;)V
         7: return
    ..........
    

    2.2 好用的工具–jad

    jad很容易使用,大家也很熟悉。直接对.class文件执行,就可以反编译出.java文件。

    $ jad Test.class
    

    但是jad长期不更新,对Java中的新功能支持很差,例如lambda表达式。反编译时,经常会报下面的错误。

    $ jad Test.class 
    Parsing Test.class...The class file version is 52.0 (only 45.3, 46.0 and 47.0 are supported)
    JavaClassFileParseException: Invalid tag value 0x12
    

    JD-GUI-1.6.3反编译lambda表达式,会直接把字节码文件反编译成lambda表达式。分析lambda表达式底层原理,通过JD-GUI是行不通的。因此引出了另一款反编译工具–CFR

    2.3 功能强大的工具–CFR

    官网链接:http://www.benf.org/other/cfr/
    相较于jadCFR是复杂的,需要输入多个参数,但是CFR可以编译Java9,10,12中的新功能,甚至可以将其他JVM语言的class文件反编译成Java文件。

    我们继续反编译文章开头代码的字节码文件,采用CFR命令

    $ java -jar /opt/cfr/cfr-0.146.jar Test.class --decodelambdas false
    

    反编译后结果如下

    package com.ac;
    
    import com.google.common.collect.ImmutableList;
    import java.io.PrintStream;
    import java.lang.invoke.LambdaMetafactory;
    import java.util.function.Consumer;
    
    public class Test {
        public static void main(String[] args) {
            ImmutableList stringList = ImmutableList.of((Object)"awe", (Object)"coder");
            stringList.forEach((Consumer<String>)LambdaMetafactory.metafactory(null, null, null, (Ljava/lang/Object;)V, lambda$main$0(java.lang.String ), (Ljava/lang/String;)V)());
        }
    
        private static /* synthetic */ void lambda$main$0(String e) {
            System.out.println(e);
        }
    }
    

    通过CFR反编译出的代码,看上去优雅了很多,同时也能更清晰地看到lambda语法糖的desugar过程。

    正如小标题所言,CFR功能强大,不仅可以反编译字节码,还可以反编译jar包。同时CFR有着诸多选项,可以通过--help来查看使用。下面列举一小部分选项。

    $ java -jar /opt/cfr/cfr-0.146.jar --help
    --decodeenumswitch               
    (boolean)  default: true if class file from version 49.0 (Java 5) or greater
    --decodefinally                  
    (boolean)  default: true
    --decodelambdas                  
    (boolean)  default: true if class file from version 52.0 (Java 8) or greater
    --decodestringswitch             
    (boolean)  default: true if class file from version 51.0 (Java 7) or greater
    

    如果博文对您有所帮助,欢迎点赞和关注,哈哈。。

    展开全文
  • android反编译工具集合

    千次下载 热门讨论 2016-10-24 10:08:57
    android反编译工具,包括了apktool、dex2jar、jdgui、Smali2Java
  • Java java8 反编译工具

    2018-05-08 23:24:02
    普通的反编译不能反编译Java8的,这个反编译工具由Java编写,可以反编译Java8的代码。内涵脚本,一键执行,方便快捷。
  • 常用EXE文件反编译工具下载 PE Explorer 1.98 R2 汉化版 >q D9"^ & s 10'&IS1& 功能极为强大的可视化汉化集成工具,可直接浏览、修改软件资源,包括菜单、对话框、字符串表等; 另外,还具备有 W32...
  • MAC Jar反编译工具

    2018-02-09 09:53:29
    Mac 环境下Jar 反编译工具,有需要的可以下载哦!!!
  • Android 反编译工具汇总

    千次下载 热门讨论 2017-09-06 16:38:34
    Android反编译工具(主要有 apktool,dex2jar, jd-gui ) 详细地址:http://blog.csdn.net/xcc1234/article/details/77868174
  • apk反编译工具

    热门讨论 2012-05-12 13:21:40
    apk反编译工具,用来反编译apk里面的xml和classes.dex文件,生成相应的可以读的xml和java文件
  • apk反编译一直使用别人做好的一套工具,但是越来越多的公漏洞进行司对反编译工具的研究并加以使用,有时我们使用老版本的工具无法破解apk。所以,保持我们的工具实时更新变得越来越重要。  一、android-apktool
  • 今天刚刚开通博客,就迫不及待把今天遇到的一个问题写... 单击http://xiazai.xiazaiba.com/Soft/R/Reflector_7.3.0.18_XiaZaiBa.zip下载反编译工具。下载完成后解压。 2. 单击http://www.denisbauer.com/Downloads/...

空空如也

1 2 3 4 5 ... 20
收藏数 14,266
精华内容 5,706
关键字:

反编译工具