是否可以对Android .APK文件进行反复编译?
-
30-09-2019 - |
题
用户是否可以将我的应用程序的APK文件转换回实际代码?如果他们这样做 - 有什么方法可以防止这种情况吗?
解决方案
首先,一个 APK文件 只是一个修改后的JAR文件。因此,真正的问题是他们可以将DEX文件内部反复编译。答案是一种。已经有拆卸器,例如 vedexer 和 Smali. 。您可以期望它们只会变得更好,从理论上讲,最终应该可以将其分配到实际的Java源(至少有时)。查看上一个问题 将DEX分解为Java Sourcecode.
您应该记住的是混淆永远不会起作用。选择良好的许可证,并尽力通过法律执行它。不要用不可靠的技术措施浪费时间。
其他提示
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。尝试一下!
不隶属于 StackOverflow