Java Jar 包反编译
关键词:java jar javac luyten classpath 编译 反编译 修改 源码
文章目录
1.安装反编译工具Luyten(Windows安装示例)
1.1 下载luyten
项目地址:https://github.com/deathmarine/Luyten

1.2 安装maven
1.2.1 下载最新Maven程序
https://maven.apache.org/download.cgi

1.2.2 解压到本地
像我的话就是解压到 F:\Program\java\
文件改名为 apache-maven

1.2.3 配置环境变量
新建环境变量 MAVEN_HOME

编辑环境变量Path,追加%MAVEN_HOME%\bin\

1.2.4 查看maven版本
【Win】+R -> cmd
mvn -v

1.2.5配置本地仓库路径
在F:\Program\java\目录下新建maven-repository文件夹,该目录用作maven的本地库
打开F:\Program\java\maven\conf\settings.xml文件,查找下面这行代码:
/path/to/local/repo
1.3 安装wget
1.3.1 下载wget.exe
https://eternallybored.org/misc/wget/

1.4 使用 maven 对 luyten 项目进行编译和打包

看到BUILD SUCCESS 即为安装完成,如下图

安装完成后,进入 Luyten-master 文件夹下新增的 target 文件夹
双击 luyten-0.5.3.exe 即可使用
2.反编译
使用反编译工具反编译 jar 包,在 jar 包中找到自己的所需文件,并导出为 java 文件


3.修改源码
不熟悉的话可以先进行简单修改,如添加日志输出、新增函数等。
对代码比较熟悉的时候,可以直接修改源码。
4.编译修改后的新代码
首先,要将 java 文件编译为 class 文件。
编译准备:准备你需要依赖的jar包。
编译命令格式(windows 下)
javac -cp "dir/file.jar;dir/file.jar" xx.java javac -cp "dir/*;dir/*" xx.java
使用注意要点
- cp 就是 classpath
- 需要使用 “” 将 jar 包括起来,””中的 jar 包一般包含为主函数 jar 包与其余依赖 jar 包
- cp 参数支持通配符匹配 jar 文件。使用 * 而不是使用 *.jar 来匹配 jar 包。
- /foo/* 会加载 foo 下的 .jar 文件,但不会加 /foo/ 子目录下的 jar 文件
- 加载的顺序是不固定的
例如,
javac -cp "F:\Program\java\elasticsearch\elasticsearch-6.8.4\lib\*;F:\Program\java\elasticsearch\elasticsearch-6.8.4\modules\x-pack-core\*" Netty4HttpRequestHandler.java javac -cp "F:\Program\java\elasticsearch\elasticsearch-6.8.4\lib\*;F:\Program\java\elasticsearch\elasticsearch-6.8.4\modules\x-pack-core\*;guava-20.0.jar" Netty4HttpRequestHandler.java javac -cp "F:\Program\java\elasticsearch\elasticsearch-6.8.4-2\lib\*;F:\Program\java\elasticsearch\elasticsearch-6.8.4-2\modules\x-pack-core\*" Netty4HttpRequestHandler.java
使用以上命令编译出来一个以上以Netty4HttpRequestHandler开头的class文件。
5.新旧替换
想使用 jar 命令,就需要先安装 jdk-devel 包
解压原有 jar 包
jar -xf file.jar
解压原有 jar 包到指定目录
unzip file.jar -d dir/-
将制定的目录文件压缩成新 jar 包
jar cfm elasticsearch-6.8.4.jar .../MANIFEST.MF -C filesDir/ .
6.运行测试
像我的反编译测试:

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/212833.html原文链接:https://javaforall.net
