*我们如何从 .apk 文件中获取完整的源代码。我们也尝试尝试 dex2jar 和其他过程,但我们没有得到完整的源代码。并且没有显示注释代码。*
2 回答
大多数开发人员使用一个叫做proguard的东西,它会被用于obfuscation of the code
混淆,通常意味着making the code unreadable so to make the apk resist to any reverse engineering attempt
(这里的抵抗并不意味着它不能被逆向工程,如果apk已经经历了逆向工程过程,那么尝试的人可能不会能够阅读开发人员编写的实际代码),我曾经尝试对 apk 进行逆向工程,最终使用中间语言,如smali
.so 如果你足够幸运,开发人员没有使用proguard
你可能最终会寻找的机会原始代码。尝试以下
链接对 apk 进行逆向工程
无法获得完整的源代码,因为并非所有信息都保存在 apk 中(评论等),并且许多内容都被重新排序(因为有跳转指令而不是if
, while
, for
, ...)。对于本机代码,就更难了。
如果您打算获取商业应用程序的来源,应用程序甚至可能会被混淆,例如从 apk 中裁剪附加信息。
如果您只需要更改/读取微小位,您可能想要使用smali(如果您希望访问的部分不是本地的),许多工具也使用它;它从 android 字节码生成可读格式。仅当您是 apk 的作者、获得作者许可或具有这样做的合法权利时,使用此类工具才是合法的(一个示例是居住在欧盟,然后您可以调整您拥有许可证的软件如果没有其他方法可以归档您想要的互操作性,即使没有作者的明确许可也能实现互操作性)。