java - 反编译一个APK,修改它然后重新编译它

标签 java android decompiling recompile

我需要修改现有的 APK,修改源代码,然后重新编译。

  • 我可以使用 dex2jar 或 apktool 进行反编译,效果很好
  • 从 jar 文件中我可以获取 java 源代码(使用 jd-gui)
  • 然后我就可以修改java文件了

但是现在我想知道如何重新编译 java 文件并将它们放回 jar 文件中! (jar部分应该很简单,主要问题似乎是如何为android重新编译java文件)

我知道另一种解决方案是使用apktool,然后修改smali文件,但是当我们要添加大量代码时,它似乎真的很复杂!

我的应用程序是一个基本的 HelloWorld 没有混淆。

最佳答案

多亏了 Chris Jester-Young,我终于成功了!

我认为我设法做到的方式只适用于非常简单的项目:

  • 使用 Dex2jar 我获得了 Jar。
  • 使用 jd-gui 我将我的 Jar 转换回 Java 文件。
  • 使用 apktool 我得到了 android list 和资源文件。

  • 在 Eclipse 中,我创建了一个与旧项目相同设置的新项目(检查 list 文件中的所有信息)

  • 创建项目后,我将所有资源和 list 替换为我通过 apktool 获得的资源和 list
  • 我将从 Jar 中提取的 java 文件粘贴到 src 文件夹中(尊重包)
  • 我根据需要修改这些文件
  • 一切都在编译!

/!\确保您从设备中删除了旧的 apk,将会抛出错误,指出 apk 签名与旧的不同!

关于java - 反编译一个APK,修改它然后重新编译它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12370326/

相关文章:

java - 单词组合在一起

java - 通过 JaxB 读取 XML 时出错

android - "Your APP_BUILD_SCRIPT points to an unknown file: ./jni/Android.mk"

android - 在 Text Jetpack compose 上实现长按

java - 使用JD-GUI批量反编译Java文件

编译提取的ASM代码以便可以反编译?

Java - 创建对同一对象的两个引用

java - Guava/Google Collections 的向后兼容性如何?

android - 无法让我的计算器程序在 android 中工作...显示 nullpointerexception

android - 如何从 Android .apk assets 文件夹中解压 LUA 脚本?