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

问题描述 投票:79回答:6

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

android obfuscation apk decompiling dex
6个回答
78
投票

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

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


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

Duckpilings。他的Ushying Z-Gui

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

1
投票

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

这里有两个选项:


1
投票

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

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


0
投票

当使用dex2jar / apktool时,有时你会破坏代码,最明显的是循环。为了避免这种情况,使用jadx,它将dalvik字节码反编译成java源代码,而不是像.jar那样创建.class / dex2jar文件(我认为apktool使用dex2jar)。它也是开源和积极的开发。它甚至还有一个GUI,用于GUI狂热分子。试试吧!


0
投票

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

是。

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

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

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

是。几种(可以组合)防止(某种程度)这种方式:

  • 低级别:代码混淆 使用Android ProGuard
  • 高级别:使用android强化场景 如 Tecent Legu = 腾讯乐固 qihoo 360 = 360加固宝

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

© www.soinside.com 2019 - 2024. All rights reserved.