您的位置:首页 > 编程语言 > Java开发

关于JAVA项目中引入jar包的反编译修改问题

2017-11-07 00:00 218 查看
摘要: 反编译jar中的某一个class文件,修改完后,再编译成jar包

最近在项目中碰到了一个关于引入的jar包有时间限制,导致每个月都要去别的地方更新jar包,什么麻烦。当时,有人说要反编译下jar包,这样就可以自己修改时间。

一开始,我也在百度上查询了一些使用jude和其他第三方反编译工具的方式,这样可以反编译单个class文件,但是当你需要重新打成jar包的时候,如果class和其他class有引用的时候,很容易出现错误,加上自己水平有限,当时就放弃了。

后来,想到了JVM的classloader机制,觉得可以尝试下,结果,一不小心就成功了,心情还是很好的。

如果不知道classloader机制,建议先百度下。现在说下基本思路:

利用classloader会优先加载classes下的class文件,以达到覆盖原来的class文件的效果。同时,利用class文件,也可以直接替换jar中的class文件。

1.使用压缩文件打开需要反编译的class文件目录,把class文件拷贝到原来的项目的运行环境中。

2.使用反编译插件,查看内容,找到需要修改位置和package的路径。

3.创建和class文件中package 路径相同的java文件,文件名和class文件名相同.

4.把class文件使用反编译插件打开的内容拷贝到java文件中,同时修改需要修改的相应位置。

5.针对于web项目,这样就可以覆盖了,

6.如果是java项目或者需要把class添加到jar包中,可以到项目编译后的文件中找到目标java文件编译后的class文件,使用压缩软件打开jar,把该class文件复制到原来的class文件的位置,覆盖原来的class文件。

综上,可以成功破解jar中的class文件,这样也不会发生java文件编译出错的问题。

水平有限,文中可能存在不完善的地方。写这个博客是给遇到同样问题的人一点小小的帮助,如有其它好的建议,请留言给我。大牛勿喷!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息