是否可以反编译Android .apk文件?

时间:2010-06-26 03:51:50

标签: android obfuscation apk decompiling dex

用户是否能够将我的应用程序的apk文件转换回实际代码? 如果他们这样做 - 有什么办法可以阻止这种情况吗?

7 个答案:

答案 0 :(得分:78)

首先,apk file只是一个修改后的jar文件。所以真正的问题是他们可以反编译里面的dex文件。答案是那样的。已有反汇编程序,例如dedexersmali。你可以期望这些只会变得更好,理论上最终应该可以反编译为实际的Java源代码(至少有时候)。请参阅上一个问题decompiling DEX into Java sourcecode

你应该记住的是混淆永远不会起作用。选择一个好的许可证,并尽力通过法律强制执行。不要用不可靠的技术措施浪费时间。

答案 1 :(得分:32)

Decompilation of APK file is possible. But it might be difficult to understand the code if it is obfuscated.

ApkTool查看APK文件中的资源

  • 提取AndroidManifest.xml以及res文件夹中的所有内容(布局xml文件,图片,webview上使用的htmls等)。
  • 命令:apktool.bat d sampleApp.apk
  • 注意:您可以使用7-zip等zip工具实现此目的。但是,它还提取所有.class文件的.smali文件。

使用dex2jar

  • 从.apk文件生成.jar文件,我们需要JD-GUI来查看来自.jar的源代码。
  • 命令:dex2jar sampleApp.apk

使用JD-GUI反编译.jar

  • 反编译.class文件(在android应用程序的情况下是混淆的,但在其他.jar文件的情况下获得可读的原始代码)。也就是说,我们从应用程序中获取.java。

答案 2 :(得分:1)

我还可以补充一点,现在可以在线反编译Android应用程序,无需软件!

以下是2个选项:

答案 3 :(得分:1)

下载此jadx工具https://sourceforge.net/projects/jadx/files/

解压缩它,而不是在lib文件夹中运行jadx-gui-0.6.1.jar文件现在浏览你的apk文件。 它已经完成了。自动apk将通过按保存按钮反编译并保存。 希望它能为你效劳。 感谢

答案 4 :(得分:0)

有时,在使用dex2jar / apktool时,您会遇到损坏的代码,最明显的是在循环中。要避免这种情况,请使用jadx,将dalvik字节码反编译为java源代码,而不首先.jar创建.class / dex2jar文件(我认为apktool使用dex2jar) 。它也是开源和积极的开发。它甚至还有一个GUI,用于GUI狂热分子。试试吧!

答案 5 :(得分:0)

  

用户是否能够将我的应用程序的apk文件转换回实际代码?

是。

人们可以使用各种工具来完成

  • 分析:您的apk
  • 解码/破解您的apk
    • 使用FDex2转储dex文件
      • 然后使用dex2jar转换为jar
        • 然后使用jadx转换为java源代码
  

如果这样做-有什么办法可以防止这种情况?

是的。几种(可以组合使用)的方法(一定程度上)可以防止这种情况:

  • 低级:代码混淆
    • 使用Android ProGuard
  • 高级:使用android强化方案

更多细节可以参考我的中文教程:安卓应用的安全和破解

答案 6 :(得分:0)

是的,可以使用大量软件来反编译.apk文件。

最近,我在我的网站上编制了47 best APK decompilers的最终列表。我将它们分为4个不同的部分。

  1. 开源APK反编译器
  2. 在线APK反编译器
  3. 适用于Windows,Mac或Linux的APK反编译器
  4. APK反编译器应用

我希望这个收藏对您有所帮助。

链接:https://www.edopedia.com/blog/best-apk-decompilers/