《JD-GUI》是一款反编译软件,JD分为JD-GUI、JD-Eclipse两种运行方式,JD-GUI是以单独的程序的方式运行,JD-Eclipse则是以一个Eclipse插件的方式运行。

基础知识

什么是反编译器

大家都知道,将源代码转换成二进制执行代码的过程叫“编译”,比如将C源代码编译成exe可执行文件;那么把二进制执行代码的过程就叫“反编译”,比如把exe转换为C源代码就叫“反编译”。

由于主流的C的编译器都进行了代码的优化,因此把C编译生成的exe文件反编译成C代码非常困难。但是像Java、.net这样基于虚拟机技术的编程语言则反编译非常容易,Java平台下有Jad、Jode、JD等反编译器,.net平台下则有Reflector等反编译器,反编译质量非常高,甚至和源代码几乎没什么差别。

反编译得到的是源代码吗?

反编译得到的代码是非常接近于源代码,但是或多或少与源代码有一些差异的,比如一些表达式被优化掉了,比如:

下面的源代码:

int i=1+1;

学过《编译原理》的同学知道有“常量优化”这个编译优化算法,因此上边的源代码一般会被优化为:int i=2;

由于在编译过程中已经进行了优化,把“1+1”这个原始的信息丢掉了,因此反编译出来的代码只能是:

int i=2;

可以看到反编译得到的代码和源代码是有区别的。

比如:andriod中

download = (Button)findViewById(R.id.xiaz);

被优化成了download = (Button)findViewById(0x7f070018);

程序可以反编译岂不是很不安全?

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

反编译器的原理是什么?

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

java的反编译工具,简单使用:

JD-GUI下载地址:https://www.softpedia.com/get/Programming/Debuggers-Decompilers-Dissasemblers/JD-GUI.shtml#download

  1. 打开文件。单击“file”从中选择“Open File ...“选项,弹出一个文件选择框,可以选择要打开的文件,或者直接单击文件夹图标,直接弹出文件选择框;从文件选择框中选择要打开的.class类型的文件,单击‘确定’。在打开的文件里,左侧可以看到文件的保存位置,类及方法,右侧显示类的具体内容,注释不会显示;
  2. 还有一种方法是直接打开jar包,鼠标单击文件夹图标,弹出文件选择框,选择一个jar包,单击“确定”
  3. 高级搜索。快捷键 Ctrl+Shift+S ,在菜单栏也有快捷方式,如下图
  4. 搜索方法。类似电脑的快捷键Ctrl+F,此时不会打开小窗,在界面的下方会显示一个输入框,输入想要查找的方法名,即可;
  5. 搜索类。菜单栏快捷方式,在弹框内输入想要查找的类名。

java反编译工具jd-gui使用相关推荐

  1. 【转载】Mac安装 Java 反编译工具 JD-GUI

    一.安装 下载地址:https://github.com/java-decompiler/jd-gui/releases 选择对应平台的资源进行下载,这里可选择:jd-gui-osx-1.6.6.ta ...

  2. [1036]Jadx gui(JAVA反编译工具)

    github:https://github.com/skylot/jadx Jadx gui是一款JAVA反编译工具.一个简单轻巧的 DEX 到 Java 反编译器,可让您导入 DEX,APK,JAR ...

  3. Java 反编译工具的使用与对比分析

    前言 Java 反编译,一听可能觉得高深莫测,其实反编译并不是什么特别高级的操作,Java 对于 Class 字节码文件的生成有着严格的要求,如果你非常熟悉 Java 虚拟机规范,了解 Class 字 ...

  4. 一些Java反编译工具/源代码查看工具的介绍

    2019独角兽企业重金招聘Python工程师标准>>> 有的朋友抱怨他们在使用他们公司的闭源框架时看不到底层的源代码.那么可以尝试使用一些Java反编译工具. 下面我举个例子介绍具体 ...

  5. java反编译工具_ReverseTool逆向工具集合

    反向工具 逆向工具集合 真棒骇客 Java和Jar(Android) jd-gui jar包浏览工具,对应的IDE插件,JD-Eclipse / JD-IntelliJ Luyten一个用于Procy ...

  6. 开源Java反编译工具

    Java 反编译器 1. JD-GUI JD-GUI 是一个用 C++ 开发的 Java 反编译工具,由 Pavel Kouznetsov开发,支持Windows.Linux和苹果Mac Os三个平台 ...

  7. 7 款开源 Java 反编译工具

    7 款开源 Java 反编译工具 今天我们要来分享一些关于Java的反编译工具,反编译听起来是一个非常高上大的技术词汇,通俗的说,反编译是一个对目标可执行程序进行逆向分析,从而得到原始代码的过程.尤其 ...

  8. 超好用的java反编译工具(Java Decompiler)

    -- JD Core.JD-GUI和JD Eclipse 今天分享一个超好用的反编译工具 JD Core.JD-GUI和JD Eclipse JD-GUI是一个独立的图形实用程序,显示".c ...

  9. 介绍一款好用的java反编译工具 - jd-gui

    当java应用程序在运行过程中遇到问题时,一般会抛出异常并打印堆栈信息,这些堆栈信息链中常常可以看到一些二方包和三方包.在排查问题时,很多时候我们需要查看这些二方包和三方包的源码.二方包是公司内部其它 ...

  10. 推荐一款非常好用的java反编译工具(转)

    源: 推荐一款非常好用的java反编译工具 转载于:https://www.cnblogs.com/LittleTiger/p/4556239.html

最新文章

  1. python requests下载文件很慢-python requests 下载大文件不完整
  2. iis 服务器出现server too busy!
  3. Struts 2常用的Ajax标签
  4. 信息系统项目管理师采购管理
  5. 1:Hello world
  6. python 函数递归_Python零基础之三元表达式、函数递归、匿名函数教程!超级详细!...
  7. 巧用Dictionary实现日志数据批量插入
  8. caffe不支持relu6_国产AI框架再进化!百度Paddle Lite发布:率先支持华为NPU在线编译,全新架构更多硬件支持...
  9. 计算机视觉—图像特效(3)
  10. 【BZOJ3226】【codevs2297】校门外的区间,线段树
  11. 【面试】排序算法整理
  12. opengl开启垂直同步_应该开启“垂直同步”吗 ?
  13. dcp9020cdn硒鼓!错误_显示硒鼓错误的解决办法
  14. 清华同方计算机配置情况,清华同方计算机还原卡安装使用说明
  15. 鱼塘钓鱼 (贪心+枚举)
  16. 电脑突然上不了网,而且ping网关可以通
  17. Python分布式通用爬虫(4)
  18. CPU占用过高问题的排查及解决
  19. 谷粒商城三阶段课件_北京版初中化学九年级上册第三节 氧气的性质公开课优质课课件教案视频...
  20. 工作随记-Java利用企业微信群机器人定时发送消息

热门文章

  1. 圆圆的球像什么_圆圆的球像什么
  2. python venv 复制_venv虚拟环境迁移
  3. java 打开默认浏览器_如何使用java打开默认的浏览器
  4. 万能算法PID趣味总结
  5. java 实现邮件服务
  6. [NOIP2018 普及组] 摆渡车题解
  7. [附源码]JSP+ssm计算机毕业设计无糖主义甜点店进销存系统382ys【源码、数据库、LW、部署】
  8. Python代码实现选择排序算法
  9. 微信邮件怎么设置自动回复,你了解吗?
  10. mysql备注乱码,简单解决办法