反编译一个APK,修改它,然后重新编译它
我需要修改现有的APK,修改源代码,然后重新编译它。
- 我可以使用dex2jar或apktool反编译它,它工作得很好
- 从jar文件中我可以得到java源码(使用jd-gui)
- 然后我可以修改这个java文件
但是现在我想知道如何重新编译java文件,并把它们放回jar文件! (jar部分应该很容易,主要的问题似乎是如何重新编译为Android的java文件)
我知道另一个解决scheme是使用apktool,然后修改smali文件,但是当我们想要添加大量的代码时,它似乎真的很复杂!
我的应用程序是一个基本的HelloWorld清白混淆。
我知道这个问题还是答案,我想通过一个信息。
有一个在线反编译的Android机器人
- 从本地机上传apk
- 等一下
- 以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的签名与旧的不一样!
-
首先从以下链接http://code.google.com/p/dex2jar/downloads/list下载dex2jar工具;
-
解压它创build
dex2jar
文件夹的文件 -
现在你select你的apk文件,将其扩展名为.apk的文件改为.zip后,改变扩展名似乎是zip文件,然后提取这个zip文件,你发现
classes.dex
文件 -
现在selectclasses.dex文件,并将其放入
dex2jar
文件夹 -
现在打开cmd窗口并input
dex2jar
文件夹的path -
现在input命令
dex2jar.bat classes.dex
并按Enter键 -
现在打开
dex2jar
文件夹,findclasses_dex2jar.jar
文件 -
接下来你从下面的链接下载java反编译器工具http://java.decompiler.free.fr/?q=jdgui
-
最后一步打开Java反编译器工具
classes_dex2jar.jar
文件,现在你可以看到apk的代码
我知道这个问题已经得到解答,我不想在这里给出更好的答案。 我只是分享我在这个话题上的经验。
一旦我失去了我的代码,我只有apk
文件。 我使用下面的工具反编译它,它使我的一天。
这些工具必须在这种情况下使用,否则,这是不道德的,有时甚至是非法的(窃取别人的努力)。 所以请明智地使用它。
这些是我最喜欢的工具:
javadecompilers.com
并从谷歌播放apk可以谷歌或检查出这些网站:
-
apk-dl.com
-
apkpure.com
在发布这个答案的date,我testing了所有的链接,它对我来说是完美的。
注意:在程序代码的情况下,Apk反编译是无效的。 因为Proguard收缩和混淆代码并将类重命名为无意义的名称,这使得很难理解代码。
奖金:
使用Proguard的基本教程 :
dex2jar与jd-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文件浏览器,这也可以帮助查看和编辑源代码。
这是一个方法:
-
使用
apktool
解码:$ apktool d -f {apkfile} -o {output folder}
-
接下来,使用JADX(在github.com/skylot/jadx)
$ jadx -d {output folder} {apkfile}
2个工具提取和反编译到同一个输出文件夹。