Jar包常见的反编译工具介绍与使用

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

反编译工具介绍

JD-GUI

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

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

image-20200908201112636

Luyten

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

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

image-20200908203433404

Jadx

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

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

image-20200908203351573

Bytecode Viewer

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

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

image-20200908202145928

Class Shark

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

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

image-20200908202333017

综合点评

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>

image-20200908203626103



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即可。

img

img

2.2 查找插件安装路径

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

img

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

img

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

img

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

img

2.3 反编译

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

img

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

img
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 回车,输入上面的命令回车

img

img

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

img

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

3. 查看反编译文件

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

img

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

img

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

img

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

img

img

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/554736.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

400 bad request的原因意思和解决方法

我们的电脑在使用的过程中&#xff0c;有的小伙伴在上网的时候可能就遇到过系统提示&#xff1a;400 bad request的情况。据小编所知这种情况&#xff0c;大致意思就是出现了错误的请求或者请求不能满足。原因是因为我们请求的语法格式出现呢错误或者其他情况等等。我们可以通过…

重装系统win10提示磁盘布局不受UEFI固件支持怎么办

原因分析&#xff1a; Win10系统新增UEFI检测机制&#xff0c;在BIOS开启了UEFI时&#xff0c;如果硬盘分区表格式不是GPT&#xff0c;则会提示无法重装系统win10&#xff0c;也就是说UEFIGPT或LegacyMBR才能安装win10。 解决方法一&#xff1a;关闭UEFI 1、重启系统时按Del…

win7按f8后没有进入安全模式怎么解决

win7f8后没有进入安全模式&#xff0c;在正确操作按F8没有进入安全模式之后&#xff0c;不知道怎么解决win7按f8后没有进入安全模式怎么解决&#xff0c;其实非常的简单&#xff0c;下面来看看详细的解决方法吧。 win7按f8后没有进入安全模式怎么解决 第一种方法&#xff1a;…

电脑开机就进入bios的解决方法

最近很多人反映自己的电脑一开机就直接进入bios里&#xff0c;无法正常进入系统。这是怎么回事呢?开机进入bios无法进入系统怎么办呢?别着急&#xff0c;今天就为大家带来电脑开机就进入bios的解决方法。 电脑开机就进入bios的解决方法&#xff1a; 1、如果是电脑的硬盘出了…

Serializable序列化和Externalizable序列化与反序列化的使用

1、序列化是干啥用的&#xff1f; 序列化的原本意图是希望对一个Java对象作一下“变换”&#xff0c;变成字节序列&#xff0c;这样一来方便持久化存储到磁盘&#xff0c;避免程序运行结束后对象就从内存里消失&#xff0c;另外变换成字节序列也更便于网络运输和传播&#xff…

Win10系统如何查看电脑是否是UEFI启动模式

Win10系统如何查看电脑是否是UEFI启动模式?现在越来越多的新电脑都采用UEFI来引导电脑系统&#xff0c;UEFI提高了开机后操作系统的启动速度&#xff0c;使电脑更加流畅&#xff0c;安全性更强&#xff0c;而传统的BIOS则没有UEFI用起来那么好。如何查看自己Win10系统电脑是否…

win10如何关闭Windows Defender安全保护程序

win10如何关闭Windows Defender安全保护程序&#xff1f;win10如何关闭Windows Defender安全保护程序?在安装的windows操作系统中&#xff0c;自带着安全保护程序“Windows Defender应用”&#xff0c;其实主要是为了保护好其他运行的软件&#xff0c;那该怎么来关闭这个软件呢…

2020-12-11

bios怎么恢复出厂设置? 1 第一步 打开电脑 在电脑出现开机提示时按下热键(一般是del或F2)就可以进入到bios设置界面 2 第二步 在bios设置界面中找到并选择“Load Optimized Default”&#xff0c; 然后按下回车键 3 第三步 在弹出窗口中选择“OK“ 然后回车键确定即可 …

JAVA序列化和反序列化的底层实现原理解析 更新时间:2019年11月27日 14:38:39 作者:myseries 这篇文章主要介绍了JAVA序列化和反序列化的底层实现原理解析,文中通

一、基本概念 1、什么是序列化和反序列化 &#xff08;1&#xff09;Java序列化是指把Java对象转换为字节序列的过程&#xff0c;而Java反序列化是指把字节序列恢复为Java对象的过程&#xff1b; &#xff08;2&#xff09;序列化&#xff1a;对象序列化的最主要的用处就是在…

笔记本电脑重启快捷键是什么

品牌型号&#xff1a;联想小新Air-14 2020 系统&#xff1a;win10 1909 64位企业版 部分用户可能电脑型号不一样&#xff0c;但系统版本一致都适合该方法。 用电脑用久了的朋友们都知道电脑的快捷键在哪里&#xff0c;笔记本电脑重启快捷键是什么?下面就给大家分享一下笔记…

新手iso系统怎么安装 新手安装iso镜像文件详细步骤

操作系统大多是iso格式的文件&#xff0c;尤其是Windows系统&#xff0c;都是.iso镜像&#xff0c;如果电脑可以正常使用&#xff0c;iso镜像文件只需解压出来就可以安装&#xff0c;但是对于新手来说&#xff0c;可能解压iso系统都是个问题&#xff0c;那么新手iso系统怎么安装…

Java获取一天的起止时间(Java8写法使用 LocalDateTime)

Calendar calendar new GregorianCalendar();// 0可以修改&#xff0c;0代表当前时间&#xff0c;-1代表前一天calendar.add(Calendar.DAY_OF_MONTH,0);//一天的开始时间 yyyy:MM:dd 00:00:00calendar.set(Calendar.HOUR_OF_DAY,0);calendar.set(Calendar.MINUTE,0);calend…

Windows10系统以太网显示“未识别的网络”如何解决

如果你的Win10系统电脑连不上网&#xff0c;那么可能会是三种情况导致的&#xff1a;受限未识别网络、拨号不成功或者网线没插好。其中&#xff0c;本地连接(以太网)提示“未识别的网络”情况是我们最经常碰到的。如果你的Win10系统无法访问网络&#xff0c;且在有线连接路由器…

如何在bios里调节风扇转速 bios设置风扇转速的方法

CPU的温度对电脑的正常运行有很大的影响&#xff0c;如果温度过高那么电脑就不能正常工作&#xff0c;风扇在降低温度中发挥着很大的作用&#xff0c;那么如何在bios里调节风扇转速呢?下面就给大家分享bios设置风扇转速的方法。 1、启动电脑按快捷键进入BIOS里面&#xff0c;…

win7开机黑屏怎么解决?win7开机黑屏出现reboot and select的解决方法

很多用户有遇见电脑黑屏的情况&#xff0c;而且还出现 reboot and select proper boot deviceor insert boot media in selected boot device 的提示&#xff0c;win7开机黑屏怎么解决呢?可能是硬盘接口数据线出现松动了&#xff0c;也可能是硬盘坏了。今天小编整理了相关的教…

win10系统进入监护人模式的方法

现在很多的小学生也会一直玩电脑很多家长就担心影响孩子学习因此想要设置监护人模式但是不知道win10系统监护人模式怎么进入&#xff0c;今天就给你们带来了win10系统进入监护人模式的方法&#xff0c;快来看看吧。 win10系统进入监护人模式的方法&#xff1a; 1、首先点击左…

解决win10电脑声音太小的问题

右击任务栏声音图标&#xff0c;点击选择菜单中的“播放设备”。 如果声音图标未显示&#xff0c;请在控制面板(大图标查看方式)中&#xff0c;点击选择“声音”。 在声音对话框&#xff0c;点击选中扬声器&#xff0c;然后点击下面的“属性”。 在扬声器 属性对话框&#xff0…

win7 ie临时文件夹怎么修改存放位置

首先&#xff0c;鼠标左键双击打开Internet Explorer,然后点击右上角的设置图标,点Internet选项。 打开之后&#xff0c;找到并点击“设置” 打开之后&#xff0c;找到并点击“移动文件夹” 然后找一个存放IE临时文件的位置,设好了之后点确定。 要让IE临时文件的移动生效,要对移…

笔记本蓝牙怎么打开

笔记本蓝牙有什么用呢?我们可以用蓝牙耳机连接上笔记本的蓝牙&#xff0c;然后就可以听音乐&#xff0c;看电影等操作。所以接下来就来给小伙伴说说怎么打开笔记本蓝牙。 以win8为例进行演示 1、首先&#xff0c;把鼠标拉倒最右下角&#xff0c;然后点设置。 2、然后&#x…

Java8时间间隔计算Period.between与LocalDate.until区别LocalDate,LocalDateTime计算两个时间的相差时间

记录一线上问题,编辑会员卡信息,有效期截止时间由2022-04-17修改为2023-04-18,操作成功之后显示剩余的有效天数为24天,实际上怎么也得有三百多天.之前本地测试一直没有问题,现将定位过程记录一下. 本地复测之后发现计算的是24天,果然有问题. Period period Period.between(Loc…