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

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

  • 我可以使用dex2jar或apktool反编译它,它工作得很好
  • 从jar文件中我可以得到java源码(使用jd-gui)
  • 然后我可以修改这个java文件

但是现在我想知道如何重新编译java文件,并把它们放回jar文件! (jar部分应该很容易,主要的问题似乎是如何重新编译为Android的java文件)

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

我的应用程序是一个基本的HelloWorld清白混淆。

我知道这个问题还是答案,我想通过一个信息。

一个在线反编译的Android机器人

  1. 从本地机上传apk
  2. 等一下
  3. 以zip格式下载源代码

我不知道这有多可靠。

@darkheir答案是做反编译apk的手动方法。 这有助于我们理解Apk创作的不同阶段。

另一个在线Apk De-compiler @Andrew Rukin : http : //www.javadecompilers.com/apk

还是值得的。 帽子给创造者。

感谢Chris Jester-Young,我设法使它工作!

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

  • 随着Dex2jar我得到了jar子。
  • 使用jd-gui,我将JAR转换回Java文件。
  • 与apktool我得到了Android清单和ressources文件

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

  • 当项目创build时,我将使用apktool获取的所有资源和清单
  • 我把我从jar中提取的java文件粘贴到src中(尊重包)
  • 我用我所需要的修改这些文件
  • 一切都在编译!

/!\确保你从设备中删除了旧的apk,将会抛出一个错误,说明apk的签名与旧的不一样!

  1. 首先从以下链接http://code.google.com/p/dex2jar/downloads/list下载dex2jar工具;

  2. 解压它创builddex2jar文件夹的文件

  3. 现在你select你的apk文件,将其扩展名为.apk的文件改为.zip后,改变扩展名似乎是zip文件,然后提取这个zip文件,你发现classes.dex文件

  4. 现在selectclasses.dex文件,并将其放入dex2jar文件夹

  5. 现在打开cmd窗口并inputdex2jar文件夹的path

  6. 现在input命令dex2jar.bat classes.dex并按Enter键

  7. 现在打开dex2jar文件夹,findclasses_dex2jar.jar文件

  8. 接下来你从下面的链接下载java反编译器工具http://java.decompiler.free.fr/?q=jdgui

  9. 最后一步打开Java反编译器工具classes_dex2jar.jar文件,现在你可以看到apk的代码

我知道这个问题已经得到解答,我不想在这里给出更好的答案。 我只是分享我在这个话题上的经验。

一旦我失去了我的代码,我只有apk文件。 我使用下面的工具反编译它,它使我的一天。

这些工具必须在这种情况下使用,否则,这是不道德的,有时甚至是非法的(窃取别人的努力)。 所以请明智地使用它。

这些是我最喜欢的工具:

javadecompilers.com

并从谷歌播放apk可以谷歌或检查出这些网站:

  • apk-dl​​.com

  • apkpure.com

在发布这个答案的date,我testing了所有的链接,它对我来说是完美的。

注意:在程序代码的情况下,Apk反编译是无效的。 因为Proguard收缩和混淆代码并将类重命名为无意义的名称,这使得很难理解代码。

奖金:

使用Proguard的基本教程 :

dex2jarjd-gui将给所有的java源文件,但他们不完全一样。 他们几乎是等效的.class文件(不是100%)。 所以如果你想改变apk文件的代码:

  • 使用apktool进行反编译

  • apktool将为每个具有相同名称的java文件生成smali(汇编版本的dex)文件。

  • smali是人类可以理解的,在相关文件中进行更改,使用相同的apktool重新编译( apktool b Nw.apk <Folder Containing Modified Files>

使用luckypatcher并删除您的许可证validation比你不必签署apk。 使用winrar来重新修改你的源代码,而不需要反编译apk。

应该将.apk的文件扩展名改为.zip 。 然后提取文件,修改它们,然后将它们压缩到.zip并记住将扩展名重命名为.apk

为此,我们甚至不必使用任何电脑。 我更喜欢ES文件浏览器,这也可以帮助查看和编辑源代码。

这是一个方法:

  1. 使用apktool解码:

     $ apktool d -f {apkfile} -o {output folder} 
  2. 接下来,使用JADX(在github.com/skylot/jadx)

     $ jadx -d {output folder} {apkfile} 

2个工具提取和反编译到同一个输出文件夹。

简单的方法:使用在线APK反编译器