反编译JAR能干什么: 排查问题、分析商业软件代码逻辑,学习优秀的源码思路。

反编译工具介绍

JD-GUI

下载地址:http://java-decompiler.github.io/

点评:支持的java版本不会太高,中文注释能够正常显示。

Luyten

下载地址:https://github.com/deathmarine/Luyten

点评: 支持更多,但是中文不正常显示。底层使用的是Procyon。

Jadx

下载地址:https://github.com/skylot/jadx

点评:卡了很长时间都没显示解析完,很耗内存与时间。

Bytecode Viewer

下载地址:https://github.com/Konloch/bytecode-viewer

点评:大部分都能正常查看,也能够查看字节码指令。

Class Shark

下载地址:https://github.com/google/android-classyshark

点评: 测试两个jar都直接失败,放弃。

综合点评

jd-gui.exe功能多但是支持java版本不太高,Luyten支持版本更多,但是中文显示不好。Bytecode Viewer也不错。Jadx强项在APK逆向方面,更吃资源。Class Shark使用未成功,你们看着办。

终极大招

实际上面的反编译的工具失败了,我们还可以利用Idea自带的反编译工具。

新建一个Maven项目,在项目的pom中加入需要反编译的Jar包,groupId、artifactId可以随便写。

<dependency><groupId>vip.codehome</groupId><artifactId>test</artifactId><scope>system</scope><version>1.0</version><systemPath>C:\\Users\\codehome\\Desktop\\{jar名称}.jar</systemPath>
</dependency>



JD-GUI

JD-GUI是一款开源的反编译软件,通过它我们可以比较方便的进行jar包的反编译。

1、其下载地址如下所示

JD-GUI下载地址

2、下载完成后,解压压缩包即可

3、我这里以mac系统为例,双击打开解压文件夹中JD-GUI程序

新版m1芯片mac可能会出现如下报错

提示内容描述的是需要jdk1.8以上,实际上并不是这个原因,我这里使用的是jdk11,要解决这个问题还需要修改一个文件

2、右键点击JD-GUI,点击显示包内容

3、进入Contents/MacOS文件夹,打开universalJavaApplicationStub.sh文件,使用新版的文件替换,新版文件内容可以在如下地址复制

https://raw.githubusercontent.com/tofi86/universalJavaApplicationStub/master/src/universalJavaApplicationStub

4、双击打开软件,将需要反编译的jar包拖到软件界面中

5、选中全部文件,点击File-Save All Sources保存反编译完的源码,选择保存路径

6、等待反编译完成即可

7、反编译完成后,在BOOT-INF/classes文件夹下可以看到生成的源码

如此我们就拿到了想要的源码了,简单快捷!当然生成的源码在文件夹结构上会有些偏差,只需要手动调整一下即可,核心源码是可以完整捕捉的。



使用IDEA插件反编译jar包

1. 使用说明

项目上线后,如果遇到问题阻塞,我们第一步要做的就是去查看日志,但是代码不是一个人写的,说不定就会遇到没有日志的,遇到这种情况,只能去看日志的报错行数是哪里,否则,无从下手。

查看日志报错行数时,发现现有代码又和线上的代码不一致,怎么办?

这个时候我们就需要反编译,反编译有很多工具可以使用,比如JD-GUI。本文接下来就介绍一下如何通过我们神奇的Idea软件进行反编译jar包。

2. 操作步骤

2.1 下载插件

首先,我们要保证IDEA中有反编译插件。通过【File】——>【Settings】——>【Plugins】输入Decompiler进行查看,看是否有Java Decompiler这个插件。

没有安装就下载安装,然后重启IDEA即可。

2.2 查找插件安装路径

  1. 右键点击IDEA,选择属性,复制IDEA安装路径

  1. 打开文件资源管理器,复制路径(路径不要复制太长看到bin目录即可)

  1. 找到IDEA安装路径后,我们就可以找到插件的安装路径在 plugins 文件夹下面,找到 java-decompiler

  1. 进入 lib 文件夹,看到插件即可

2.3 反编译

  1. 在 lib 文件夹下创建一个目录,如test文件夹

  1. 在 lib 文件夹下放入要反编译的 jar 包


3. 黄色代码是替换的内容

java -cp + “插件路径” + org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler -dgs=true + jar包 + 反编译后存储位置

java -cp "D:\IDEA\IntelliJ IDEA 2020.1.4\plugins\java-decompiler\lib\java-decompiler.jar" org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler -dgs=true test.jar test

4.然后才此目录下执行命令(两种方式都可以,自行选择)

4.1 通过 cmd 的方式反编译,输入 cmd 回车,输入上面的命令回车

4.2 通过 Git Bash Here 的方式反编译,在当前目录下右键Git Bash Here,输入上面的命令回车

**注意 **:如果不先创建目录,就执行的话,可能会报错。

3. 查看反编译文件

3.1 执行完之后会在新建的文件夹里面看见反编译之后的文件

3.2 因为以上命令执行后,反编译出来的也是jar包

3.3 用解压软件解压就可以了

3.4 反编译后的目录结构跟jar包是一样的,只不过是把class文件反编译成java文件

Jar包常见的反编译工具介绍与使用相关推荐

  1. [转]一款可以反编译jar包的java反编译工具-JD-GUI(绿色软件)

    [转]一款可以反编译jar包的java反编译工具-JD-GUI(绿色软件) 文章分类:Java编程 该软件无需安装,界面清爽. 转自:http://www.devdoc.org/index.php/a ...

  2. Android apk反编译工具介绍

    首先apk不能被代码混淆(或未经编译优化),如果混淆了,反编译出来的代号还是看不懂, 当然,在你没反编译出来之前,你也不知道有没有混淆. 网上各种反编译工具,眼花缭乱,本文是个人对这些工作做的一个简单 ...

  3. JAR包与JAD反编译

    Java开发过程中,不免会遇到使用第三方jar的情况.那么我们先来简单的说一下jar文件. JAR文件,全称为Java Archive File,就是Java档案文件.在开发过程中,许多专业的开发人员 ...

  4. ilasm 和 ildasm编译和反编译工具介绍使用教程

    目录 前言 一.使用 ildasm 反编译 dll 文件 二.使用 ilasm 将il文件编译成 dll 或 exe 文件 前言 文本讲述怎么通过 ildasm 工具将 dll 文件进行反编译为 il ...

  5. 如何修改可运行Jar包,如何反编译Jar包

    将可运行Jar包,反编译成项目,修改代码,再次编译,打包. 需要工具:jd-gui.myeclipse 具体步骤: 1.使用jd-gui打开原始的Jar包,选择File-->Save All  ...

  6. java如何转成jar包,修改及反编译可运行Jar包实现过程详解

    将可运行Jar包,反编译成项目,修改代码,再次编译,打包. 需要工具:jd-gui.myeclipse 具体步骤: 1.使用jd-gui打开原始的Jar包,选择File-->Save All S ...

  7. Android Spider JDAX-GUI 反编译工具下载使用以及相关技术介绍

    文章目录 前言 一.JDAX下载 二.基本使用 2.1 解压zip 2.2 Java环境 2.3 进入Dos命令窗口启动Jdax-Gui 2.4 正常使用 三.常见的反编译工具以及简单分析介绍 1.A ...

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

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

  9. jadx-gui-1.4.4 反编译工具使用教程

    文章前言 JDAX-GUI 反编译工具下载使用以及相关技术介绍 现在反编译一个未加固的APP,一般来说有两种方式. 一种是用Jadx-gui,优点是一个软件就帮你将所有活给干了,缺点是如果遇到较大的A ...

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

    用c++写成,可反编译class文件,支持jar包级的反编译,可将整个jar包直接保存为*.src.zip源代码包,反编译迅速,错误率极少,详细的看下面 下载地址:http://java.decomp ...

最新文章

  1. Spring Boot 还能“内存泄露”?排它!
  2. Structure-from-Motion Revisited
  3. FaceDataset常用的人脸数据库
  4. 干货:如何正确描述存储IO类型?
  5. Zookeeper API 学习与使用
  6. 从ABAP Netweaver的SICF到SAP Kyma的Lambda Function
  7. 《学习之道》第九章不要突击工作
  8. light task schedule的定时任务实现源码解析
  9. mysql配置方案_MySQL的安装与配置
  10. 《Unity Shader入门精要》冯乐乐著 书中彩图
  11. macd ema java源码_[转载]彩色MACD指标源码
  12. acm快速输入法 有效解决超时
  13. 【第一组】第八次冲刺例会纪要
  14. 苹果换原装电池_航空港区正规苹果换原装屏幕价目表
  15. 网页显示不全的原因css,css 页面显示不全怎么办
  16. E. Permutation Game
  17. 申请支付宝授权,提现测试环境步骤
  18. 一个IT中专生在深圳的9年辛酸经历
  19. 运行tomcat7w.exe未安装指定的服务S
  20. 转 calico k8s安装方式

热门文章

  1. 数论day2——离散对数、元根
  2. Arcesium面试体验|S6(在校园实习)
  3. VMware虚拟机中如何配置ip地址网关和dns
  4. Elite South Korean of an Elite Education(译文)
  5. SourceTree 删除记住的账户
  6. lv双肩包尺寸对照表_当红Monogram帆布LV双肩包尺寸究竟有多少?
  7. 【老九君】【Java】集合框架
  8. 蓝牙地址BD_ADDR组成
  9. 条形码转化成二维码_在线条形码生成器
  10. android 亮度调节 接口,Android亮度调节的几种实现方法