jar反编译成java,jar文件反编译java源码,反编译jar实现的三种方式

jar反编译成java,jar文件反编译java源码,反编译jar实现的三种方式

本文主要介绍反编译jar的三种方式,通过实例代码详细介绍,具有一定的参考价值。感兴趣的朋友可以参考一下。

目录

工具有三种准备方式:1。用fernflower反编译然后编译;2.用javassist动态修改class33.通过引入原始jar包(推荐)摘要来修改代码

工具准备

相同版本的jdk

想法

蕨类植物

Javassist.jar或本地下载地址

Jd-gui或本地下载地址

三种方式

1.使用fernflower反编译之后再编译

修改。要反编译成。拉链。

Java-jar fern flower . jar classes . zip zzCode/

你可以得到全是java的jar文件,用压缩软件解压,导入idea。

2.使用javassist动态修改class

导入javassist。ClassPool

导入javassist。CtClass

导入javassist。CtMethod

导入Java . util . map;

导入javassist。NotFoundException

公共类main {

公共静态void main(String[] args)引发异常{

尝试{

class pool pool=class pool . get default();

//指定类所在的路径

pool . insert class path(' C:\ \ rike . jar ');

//指定导入的包,这里不需要,所以将其注释掉

//pool.importPackage('dialog。dialog utils’);

//pool.importPackage('common。listener utils ');

//pool . import package(' Java . util . map ');

//指定要修改的类的完整类名

CtClass cc=pool . get(' aggregate . dialogs . windows executabledialog ');

//设置要修改的方法所需的参数。无法设置任何参数。

CtClass[] param=新的CtClass[5];

param[0]=pool . get(' Java . util . map ');

param[1]=pool.get('对话框。dialog utils’);

param[2]=pool.get('common。listener utils ');

//指定要修改的类方法

CT method m=cc . getdeclaredmethod(' dialog action ');

//如果需要修改参数,请使用以下命令

//CT method m=cc . getdeclaredmethod(' dialog action ',param);

//将新代码插入到前面

//m . insert before(' { if(true)return;}');

//重置方法体

m . set body(' { system . out . println(' hi class 1 ');}');

//保存到一个文件,该文件将保存在此项目下。

cc . writefile();

} catch(异常e) {

e . printstacktrace();

}

}

}

将生成一个类文件,并直接复制到jar包中。

注意,在setBody包中,$0表示这个$1表示第一个参数,$2表示第二个参数。

3.通过引入原来的jar包,修改代码(推荐)

我在测试的时候之所以用这个方法,是因为jar文件比较复杂,之前的方法有很多错误。

在你要修改的类文件对应的目录下创建一个文件夹,比如idea中项目的src文件夹。

修改里面的代码,然后在idea中使用快捷键ctrl alt shift s引入完整的jar包。

在加号处介绍一下就可以了。

生成新jar

单击构建。

生成。

或者直接在jar包中修改生成的类文件。

项目的out\production\文件夹中有生成的类文件,只需拖拽到原jar中修改即可。

总结

这是之前挖坑的总结。之前没接触过java,真的比php难多了…

这就是关于反编译jar实现的三种方法的文章。更多相关反编译jar内容,请搜索我们之前的文章或者继续浏览下面的相关文章。希望大家以后能多多支持我们!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: