当前位置:首页 > Java技术 > JAVA中jar包反编译再重新生成jar文件完整流程

JAVA中jar包反编译再重新生成jar文件完整流程

2022年08月05日 09:29:17Java技术4

一、准备工作

工具: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打开软件,界面如下
JAVA中jar包反编译再重新生成jar文件完整流程 _ JavaClub全栈架构师技术笔记

2、点击左上角的文件夹图标,直接选择jar包路径打开jar文件即可看到jar包结构与class编译文件,界面如下
JAVA中jar包反编译再重新生成jar文件完整流程 _ JavaClub全栈架构师技术笔记

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工具时可能无法正常安装,此时我们需要去偏好设置里设置一下权限,打开偏好设置面板,双击安全性与隐私进入
JAVA中jar包反编译再重新生成jar文件完整流程 _ JavaClub全栈架构师技术笔记

如果此时看到下面有“任何来源”,选中即可(需要先用管理员密码解左下角的小锁)
JAVA中jar包反编译再重新生成jar文件完整流程 _ JavaClub全栈架构师技术笔记

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

sudo spctl  --master-disable

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

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

作者:CHX_W
来源链接:https://blog.csdn.net/CHX_W/article/details/78261161

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。


本文链接:https://www.javaclub.cn/java/17623.html

分享给朋友:

“JAVA中jar包反编译再重新生成jar文件完整流程” 的相关文章

推荐--java反编译工具-超级强!

『XJad 2.0』简要介绍================================ 功能特点:========1、XJad是基于Jad核心的Java源程序反编译软件,内置Jad1.5.8e2;2、可处理多个*.class文件,可以处理文件夹内的所有文件,甚至可以处...

Java反编译工具Java Decompiler

Java反编译工具Java Decompiler

今天需要反编译一个APK,电脑没有工具,搜索一番记录一下 Java Decompiler 官方地址: http://jd.benow.ca/ 针对不同的平台的都提供的有下载 我个人比较喜欢用图形化界面,使用起来简单粗暴,打开需要反编译的文...

java反编译工具jd-gui的下载和使用

java反编译工具jd-gui的下载和使用

jd-gui可以反编译class文件,有图形化界面。 下载地址:http://java-decompiler.github.io/ 在download页面下载jd-gui-1.x.x.jar文件 下载后运行命令打开: java -jar jd-gui-...

如何快速反编译一个java项目

前言 这个事情的应用场景是可能进入公司你接手的项目仅仅有jar包或者war包,你想看报错提示或者平台迁移的时候因为看不到代码无法定位问题,git和svn又无法找到源码,那么就需要手动反编译整个项目,这个工程比较庞大而且很浪费时间。 还有就是你获得了...

.class文件反编译成为.java文件

.class文件反编译成为.java文件

安装Java jdk后   看安装目录里有没有jad.exe,没有要下载,一般都有的,配置好Java环境变量。 win + R --> cmd 进入命令行窗口,cd+空格+class文件所在路径,然后通过反编译工具 jad 命令实现反编译。...

Java反编译工具汇总

Java反编译工具汇总

2020年支持java8的Java反编译工具汇总 大多商业软件,会对程序进行加密、加壳等安全措施以防范软件被破解,从而使得反编译越来越难。反编译是一个对目标可执行程序进行逆向分析,从而得到源代码的过程。尤其是像Java这样的运行在虚拟机上的编程语言...

eclipse上反编译.class文件成java文件(含解决错误)

eclipse上反编译.class文件成java文件(含解决错误)

  方案一: ( 墙裂推荐!!)   在线安装方式 打开Help-> Install New  Software->add.....(如图) 框中第一行:  jd-e...

Java bytecode反编译工具

Java bytecode反编译工具

  JD-GUI /JD-Eclipse 是一个Java bytecode反编译工具,支持java5以上的字节码。使用C++编写,有独立GUI工具和Eclipse插件可以使用。http://java.decompiler.free.fr/ 宣传一下自己的网站:...

android java反编译

android java反编译

一:dex反编译 工具依赖:dex2jar-2.0 获取工具:提供两个链接,一个是github的,需要翻墙,有更新,另一个不用翻墙的,但从16年后就没有更新了 Releases · pxb1988/dex2jar · GitHubhttps://gith...

Java中的编译、反编译和反编译工具全家桶分享

Java中的编译、反编译和反编译工具全家桶分享

前言 本文介绍到的反编译工具下载地址:反编译工具全家桶 编程语言 编程语言分为低级语言和高级语言 最早的程序员都是用机器语言在写代码,那时候应该不叫代码,叫写十六进制串,这样的编程十分复杂不方便而且出错率高 后来有一个偷懒...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。