反编译jar实现的方式有哪些
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,这篇文章主要介绍"反编译jar实现的方式有哪些",在日常操作中,相信很多人在反编译jar实现的方式有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"反编译jar实现的
千家信息网最后更新 2025年11月07日反编译jar实现的方式有哪些
这篇文章主要介绍"反编译jar实现的方式有哪些",在日常操作中,相信很多人在反编译jar实现的方式有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"反编译jar实现的方式有哪些"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
工具准备
相同大版本的jdk
idea
fernflower.jar
javassist.jar
jd-gui
三种方式
1.使用fernflower反编译之后再编译
把要反编译的.jar修改成.zip
java -jar fernflower.jar classes.zip zzCode/
即可得到全为java的jar文件,用压缩软件解压后导入idea即可
2.使用javassist动态修改class
import javassist.ClassPool;import javassist.CtClass;import javassist.CtMethod;import java.util.Map;import javassist.NotFoundException;public class main { public static void main(String[] args) throws Exception { try { ClassPool pool = ClassPool.getDefault(); //指定class所在的路径 pool.insertClassPath("C:\\rike.jar"); //指定引入的包,这里不需要,所以注释掉 //pool.importPackage("dialog.DialogUtils"); //pool.importPackage("common.ListenerUtils"); //pool.importPackage("java.util.Map"); //指定要修改class的完整类名 CtClass cc = pool.get("aggressor.dialogs.WindowsExecutableDialog"); //设置要修改的方法需要的参数,没有参数可以不设置 CtClass[] param = new CtClass[5]; param[0] = pool.get("java.util.Map"); param[1] = pool.get("dialog.DialogUtils"); param[2] = pool.get("common.ListenerUtils"); //指定要修改的类方法 CtMethod m = cc.getDeclaredMethod("dialogAction"); //如果需要修改参数,使用下面这个 //CtMethod m = cc.getDeclaredMethod("dialogAction",param); //插入新的代码到最前面 //m.insertBefore("{if(true) return ;}"); //重新设置方法体 m.setBody("{System.out.println(\"hi class1\");}"); //保存到文件里,文件会保持到该工程下 cc.writeFile(); } catch (Exception e) { e.printStackTrace(); } }}会生成一个class文件,直接复制到jar包就可以
注意,在setBody包里面,用$0代表this $1代表第一个参数 $2代表第二个参数
3.通过引入原来的jar包,修改代码(推荐)
我在测试的时候,因为jar文件比较复杂,前面的方式都会有很多报错,所以使用这种方法
在你要修改的class文件对应目录下建立文件夹,例如在idea中,项目的src文件夹下
在里面修改代码,之后在idea中使用快捷键ctrl+alt+shift+s引入完整的jar包

在加号处引入即可
新建生成jar
点击build

生成即可
或者将生成的class文件,直接在jar包中修改
在项目的out\production\文件夹下有生成的class文件,直接拖到原始jar中修改即可
到此,关于"反编译jar实现的方式有哪些"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
文件
编译
方式
参数
方法
生成
学习
代码
代表
文件夹
更多
项目
帮助
原始
复杂
实用
相同
接下来
下有
加号
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
3c软件开发表格
3d电梯仿真软件开发
双路服务器内存单路能用吗
付软件开发费有发票要怎么做账
数据库防丢系统
更新数据库方法
宁海计算机软件开发
daytime服务器
网络安全宣传短语
保定软件开发
杭州佳才网络技术
江西机器人少儿编程软件开发
网络安全防护功能定位
主题搜藏数据库
网络安全标准和产业分论坛
速看9图带你学习网络安全法
数据库sql语句去空格
数据库原理三级项目指导
阿里云服务器负载均衡搭建
vs如何运用数据库
低价软件开发首选
长宁区立体化软件开发调试
福建互联网展示科技馆设计
服务器租用 百兆
数据库事务慢
洪湖市卫生局网络安全招标
孝感网络安全法制
网络安全教育教师个人观点
中国电信韶关的服务器
实用计算机网络技术教程