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

有帮助吗?

解决方案

首先,一个 APK文件 只是一个修改后的JAR文件。因此,真正的问题是他们可以将DEX文件内部反复编译。答案是一种。已经有拆卸器,例如 vedexerSmali. 。您可以期望它们只会变得更好,从理论上讲,最终应该可以将其分配到实际的Java源(至少有时)。查看上一个问题 将DEX分解为Java Sourcecode.

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

其他提示

APK文件是可能的。但是,如果代码被混淆,可能很难理解。

apktool查看apk文件中的资源

  • 提取物androidManifest.xml和Res文件夹中的所有内容(布局XML文件,图像,WebView上使用的HTML等。)
  • 命令 : apktool.bat d sampleApp.apk
  • 笔记: 您可以使用邮政编码(如7 ZIP)来实现这一目标。但是,它还提取所有.class文件的.smali文件。

使用dex2jar

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

分解.jar使用JD-GUI

  • 对.class文件进行反编译(在Android应用程序的情况下进行混淆,但是在其他.jar文件的情况下获得了可读的原始代码)。即,我们从应用程序中获得了.java。

我还可以补充说,如今可以在线编译Android应用程序,无需软件!

这里有2个选择:

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

解开它,而不是在lib文件夹中运行JADX-GUI-0.6.1.JAR文件现在浏览您的APK文件。完成。自动将APK解码并通过按“保存”按钮来保存。希望它对您有用。谢谢

有时您使用时会损坏代码 dex2jar/apktool, ,最著名的是循环。为避免这种情况,请使用 jadx, ,将dalvik字节码反复编译到Java源代码中,而无需创建一个 .jar/.class 首先文件为 dex2jar 确实(我认为Apktool使用Dex2jar)。它也是开源的,并且在积极的开发中。它甚至有GUI,用于Gui-Fanatics。尝试一下!

用户是否可以将我的应用程序的APK文件转换回实际代码?

是的。

人们可以使用各种工具来:

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

如果他们这样做 - 有什么方法可以防止这种情况吗?

是的。几种(可以组合)预防(一定程度)的方法:

  • 低级别:代码混淆
    • 使用Android ProGuard
  • 高水平:使用Android硬度方案

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top