我需要修改现有的APK,修改源代码然后重新编译它。
但是现在我想知道如何重新编译java文件并将它们放回到jar文件中! (jar部分应该很简单,主要问题似乎是如何为android重新编译java文件)
我知道另一种解决方案是使用apktool然后修改smali文件,但是当我们想要添加大量代码时,它似乎真的很复杂!
我的应用程序是一个基本的Hello World,没有混淆。
感谢Chris Jester-Young,我设法让它成功!
我认为我设法做到的方式只适用于非常简单的项目:
/!\一定要从设备中删除旧的apk,会抛出错误,说明apk签名与旧签名不一样!
我知道这个问题仍然得到了解答,我想传递一个信息,如何从没有dexjar的apk获取源代码。
有an online decompiler for android apks
我不知道这有多可靠。
@darkheir答案是做反编译apk的手动方式。它帮助我们理解Apk创建中的不同阶段。
获得源代码后,请按照接受的答案中提到的步骤操作
另一个在线Apk De-compiler @Andrew Rukin:http://www.javadecompilers.com/apk
仍然值得。向创作者致敬。
dex2jar
文件夹classes.dex
文件dex2jar
文件夹中dex2jar
文件夹的路径dex2jar.bat classes.dex
并按Enter键dex2jar
文件的classes_dex2jar.jar
文件夹classes_dex2jar.jar
现在你可以看到apk代码我知道这个问题已得到解答,我不想在这里给出更好的答案。我将分享我在这个主题上的经验。
一旦我丢失了我的代码,我只有apk
文件。我使用下面的工具反编译它,它使我的一天。
这些工具必须在这种情况下使用,否则,它是不道德的,甚至有时它是非法的(窃取其他人的努力)。所以请明智地使用它。
这些是我最喜欢的工具:
并从谷歌播放获取apk你可以谷歌或查看这些网站:
在发布此答案的日期,我测试了所有链接,它对我来说非常适合。
注意:Apk反编译在有代码的情况下无效。因为Proguard缩小并混淆代码并将类重命名为无意义的名称,这使得理解代码变得相当困难。
奖金:
dex2jar与jd-gui会给出所有的java源文件,但它们并不完全相同。它们几乎是等效的.class文件(不是100%)。因此,如果您想更改apk文件的代码:
apktool b Nw.apk <Folder Containing Modified Files>
)这是一种方式:
apktool
解码:
$ apktool d -f {apkfile} -o {output folder}
$ jadx -d {output folder} {apkfile}
2个工具提取和反编译器到同一输出文件夹。
使用luckypatcher并删除您的许可证验证,而不是您必须签署apk。使用WINRAR替换修改后的源代码而不反编译apk。
应该将文件扩展名从.apk
更改为.zip
。然后提取文件,修改它们然后将它们压缩到.zip
并记住将扩展名重命名为.apk
。
为此,我们甚至不必使用任何计算机。我更喜欢ES文件浏览器,它也可以帮助查看和编辑源代码。