使用 Recaf 反编译 aar/jar/class 及重打包的流程

2,414 阅读1分钟

1. 下载及运行 Recaf

首页 地址:Recaf on GitHub,无需编译直接可用的 jar 包为带with-dependencies后缀的,但是仍然需要带 JavaFX 的JDK 才能运行。

自测发现:

  • openJDK 17, 报错退出,Log 显示缺少 JavaFX
  • zulu-JDK8,提示缺少 JavaFX,支持自动下载 JavaFX 需要使用 JDK11 及之后的版本
  • zulu-JDK11 with JavaFX, 完美运行

2. 使用 Recaf 反编译

  • 将 aar 重命名为 zip,并解压缩,得到 classes.jar
  • 使用 java -jar recaf-xxx-jar-with-dependencies.jar 运行 Recaf
  • 拖拽 classes.jar 到 Recaf,之后就可以对文件执行修改了
  • 如果发现反编译的代码有问题,比如编辑界面有下图中ConfusedCFRException的报错,可以到Config-Decompiler中选择其它的引擎再尝试反编译。

使用 CFR 引擎反编译报错 选择反编译引擎

  • 修改完成后,使用File - Export program 导出 jar

3. aar 重打包

  • 将上一步导出的 jar,重命名为classes.jar 替换解压出的 aar 中的同名文件
  • 终端使用cd命令进入 aar 解压后的目录,使用zip -r <aar_name>.aar * 将该目录下的所有文件夹压缩到名为<aar_name>.aar的文件中