JAVA中jar包反编译再重新生成jar文件完整流程[亲测有效]

JAVA中jar包反编译再重新生成jar文件完整流程[亲测有效]准备工作工具:jd-gui反编译工具下载地址:https://github.com/java-decompiler/jd-gui/releases这里我用的是MAC,所以直接下载最新版本jd-gui-osx-1.4.0.tar作为演示,window系统可以下载jd-gui-windows-1.4.0.zip

大家好,欢迎来到IT知识分享网。

一、准备工作

工具:jd-gui反编译工具
下载地址:https://github.com/java-decompiler/jd-gui/releases
这里我用的是MAC,所以直接下载最新版本jd-gui-osx-1.4.0.tar作为演示,window系统可以下载jd-gui-windows-1.4.0.zip

二、操作步骤

1、将下载完成的tar文件双击解压打开,再双击JD-GUI.app打开软件,界面如下
这里写图片描述

2、点击左上角的文件夹图标,直接选择jar包路径打开jar文件即可看到jar包结构与class编译文件,界面如下
这里写图片描述

3、然后将需要改动的类复制出来,粘贴到一个java文件中,并对这个文件按你需求进行编辑

4、打开终端窗口,使用javac 执行该类或者其他方式重新获得该类的class文件

5、将生成的class文件和原jar包先放在同一个目录下,并cd到该目录

6、以我的操作为例jar包为MXFingerDriver.jar,改动后的class文件为UsbBase.class
执行如下命令:

//该命令创建class文件与原jar包路径一样的文件夹(即class文件在jar包中的包名)
mkdir -p org/zz/mxhidfingerdriver
//从当前目录拷贝一份修改后的UsbBase.class文件到mxhidfingerdriver文件夹下
cp UsbBase.class org/zz/mxhidfingerdriver/
//将文件UsbBase.class添加/更新到现有的jar文件MXFingerDriver.jar中
jar uf MXFingerDriver.jar org/zz/mxhidfingerdriver/UsbBase.class

7、到这里就大功告成了,不放心的话可再导进gui工具看下改动是否成功!

三、可能遇到的问题

1、MAC上默认不允许打开不被认可的软件,所以在安装jd-gui工具时可能无法正常安装,此时我们需要去偏好设置里设置一下权限,打开偏好设置面板,双击安全性与隐私进入
这里写图片描述

如果此时看到下面有“任何来源”,选中即可(需要先用管理员密码解左下角的小锁)
这里写图片描述

如果没有“任何来源”这个选项,则是系统默认隐藏,需要我们打开终端用命令行设置一下
执行命令如下:

sudo spctl  --master-disable

注意master前面是两个-,之前网上搜的教程就是这里少了一个老是失败。
按下回车,再输入管理员密码。这样“任何来源”选项就回来了!
注意:如果在系统偏好设置的“安全性与隐私”中重新选中允许 App Store 和被认可的开发者 App,即重新打开 Gatekeeper 后,允许“任何来源”App 的选项会再次消失,可运行上述命令再次关闭 Gatekeeper。

2、操作步骤4,在获得class文件可能会报错,编译不过去
遇到这种问题看下报错日志,多半是该类有依赖安卓的库文件(如Intent、context)或者jar包本身的一些文件(如jar包中的工具类),
如果是因为依赖了安卓的库文件,我们可以将该类放入安卓项目来生成class文件(根据该类在jar包中的路径创建包名,避免出现不必要的麻烦)
如果是jar包本身的一些类文件,可观察是否有用,如果没有实际性作用,可以直接删除再次编译,如果有用,那可能就麻烦了,最好是让开发jar包的工作人员自己改。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/24210.html

(0)
上一篇 2023-08-27 22:00
下一篇 2023-08-28 15:00

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信