Hello,村长🙂
不负时光,学习不止;做我所想,强身健体
1、反编译 jar 获取 java 文件
- 下载反编译工具 JD-GUI
- 导出 java 文件并修改
2、java 文件编译成 class 文件
-
使用 javac 命令编译
-
当遇到编码问题时添加参数:
-encoding utf-8

-
1、当遇到系统程序包不存在时,如下:把相应的程序包(jar)放在与需要编译的 java 文件同级目录下

-
2、当遇到编译源 jar 符号找不到时,如下:

-
3、当遇到编译源 jar 具有相同简明类型(因为第三方包混淆)时,如下:

如果放在同一个目录下还是显示找不到程序包,可以在 classpath 后面追加多个 jar 参数,使用分号分隔:例如:javac -encoding utf-8 -classpath android.jar;classes-dex2jar.jar GRAppStoreActivity.java
- 最后,可能像这样执行编译命令:
javac -encoding utf-8 -classpath AAAA.jar BBBB.java

AAAA.jar:这个 jar 是目标 jar,也就是我们需要修改里面的代码,然后重新打包的 jar
注意:这里有个坑:如果我需要修改的 jar 代码依赖 android jar,那么!!!这了 android.jar 必须是 android sdk 目录下的 jar,不能随便找一个,否则编译失败。

3、替换字节码文件
复制编译生成的 class 文件,替换我们需要修改的 jar(反编译 jar ,从 JD-GUI 导出来是一个目录,里面的内容是 class 文件) 里面对应的 class 文件。
4、使用 jar 命令重新打包生成新的 jar 文件:jar cvf 生成文件名.jar

本文详细介绍了如何反编译Java jar文件,修改源代码,解决编译过程中的各种问题,如系统程序包缺失、找不到符号等,并最终重新打包成新的jar。关键步骤包括使用JD-GUI导出和修改java文件,使用javac命令进行编译,处理类路径问题,以及使用jar命令打包。特别提示,若修改的代码依赖android.jar,必须使用Android SDK中的版本以避免编译失败。

3180

被折叠的 条评论
为什么被折叠?



