美文网首页
Java 编译和反编译

Java 编译和反编译

作者: 天生小包 | 来源:发表于2018-08-28 19:18 被阅读0次

编程语言

编程语言(Programming Language)分为低级语言(Low-level Language)和高级语言(High-level Language)。

低级语言: 机器语言(Machine Language)和汇编语言(Assembly Language),直接用计算机指令编写程序。
高级语言: C、C++、Java、Python等属于高级语言,用语句(Statement)编写程序,语句是计算机指令的抽象表示。

编译

将便于人编写、阅读、维护的高级计算机语言所写成的源代码程序,翻译为计算机能解读、运行的低阶机器语言的程序的过程就是编译。负责这一过程的处理的工具叫做编译器。Java语言中负责编译的编译器是一个命令:javac 。

javac是收录于JDK中的Java语言编译器。该工具可以将后缀名为.java的源文件编译为后缀名为.class的可以运行于Java虚拟机的字节码。

反编译

反编译的过程与编译刚好相反,就是将已编译好的编程语言还原到未编译的状态,也就是找出程序语言的源代码。就是将机器看得懂的语言转换成程序员可以看得懂的语言。Java语言中的反编译一般指将class文件转换成java文件。

Java常用反编译工具

JAVAP

javap是jdk自带的一个工具,可以对代码反编译,也可以查看java编译器生成的字节码。javap和其他两个反编译工具最大的区别是他生成的文件并不是java文件,也不像其他工具生成代码那样更容易理解。

javap并没有将字节码反编译成java文件,而是生成了一种我们可以看得懂字节码。其实javap生成的文件仍然是字节码,只是程序员可以稍微看得懂一些。如果你对字节码有所掌握,还是可以看得懂。其实就是把String转成hashcode,然后进行比较。

JAD

JAD是一个比较不错的反编译工具,只要下载一个执行工具,就可以实现对class文件的反编译。 由于已经很久未更新,反编译java8时会出现编译失败,比如lambda表达式。

命令:jad.exe xxx.class 会生成一个xxx.jad的文件

CFR

CFR是一个不错的选择,相比JAD来说,他的语法可能会稍微复杂一些,但是好在他可以用。

java -jar cfr_0_110.jar xxxx.class --decodestringswitch false 

--decodestringswitch 表示对于switch支持string的细节进行解码
--decodelambdas 对lambda表达式进行反编译。

JD-GUI

JD-GUI 是一个用 C++ 开发的 Java反编译工具,由 Pavel Kouznetsov开发,支持Windows、Linux和苹果Mac Os三个平台。而且提供了Eclipse平台下的插件JD-Eclipse。JD-GUI 基于GPLv3开源协议,对个人使用是完全免费的。JD-GUI主要的是提供了可视化操作,直接拖拽文件到窗口既可,效果图如下:


image.png
如何防止反编译

提供几种思路:
● 隔离Java程序
● 对Class文件进行加密
● 对代码进行混淆

相关文章

  • 反编译研究资料以及各种反编译器

    硕期间研究反编译,下面从反编译工具库,JAVA反编译和反编译主要研究机构进行介绍。 反编译的历史,从传统的基于编译...

  • Android反编译与反编译防范

    Android反编译与反编译防范 反编译Java代码 参考http://www.oschina.net/quest...

  • Java-Java反编译工具

    一、旧Java反编译工具 JAD JD 二、新Java反编译工具 Fernflower Procyon CFR 简...

  • Android反编译

    反编译就是对这个APK进行反编译。Android的反编译分成两个部分: 一个是对代码反编译,也就是java文件的反...

  • APK修改与破解详细流程

    一 反编译APK apktool是Google推出的apk反编译和打包工具,依赖于Java运行环境。apktool...

  • 初识 android 反/回编译

    Android 反编译 Android 反编译环境准备 配置JAVA JDK 环境变量 安装android kil...

  • Java 编译和反编译

    编程语言 编程语言(Programming Language)分为低级语言(Low-level Language)...

  • java编译和反编译

    https://mbd.baidu.com/newspage/data/landingshare?pageType...

  • Java编译与反编译

    记录一下看了Java开发必会的反编译知识后关于Java的编译、反编译、字节码、源代码、机器码的note,目录如下,...

  • Android apk反编译

    1、工具 反编译获取资源文件 apktool 反编译获取 java代码https://github.com/pxb...

网友评论

      本文标题:Java 编译和反编译

      本文链接:https://www.haomeiwen.com/subject/rvwqwftx.html