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