区分 apk 和 jar 文件

区分 apk 和 jar 文件

有什么方法可以区分这两个文件?使用命令 ,它们都被识别为 zip 文件file,那么有什么方法可以区分它们吗?(当然,不考虑扩展名)。

注意:尝试执行文件分析,这两个文件都经过不同的分析,所以我必须能够区分它们。

答案1

APK 文件只是一个 JAR 文件,其中包含额外的 Android 平台特定文件,例如 AndroidManifest.xml 和 classes.dex。

JAR 文件只是一个压缩的 ZIP 文件,其中包含文件夹(META-INF)中的附加元数据(MANIFEST.MF 等)。

ZIP 文件是文件夹的压缩单文件表示。

因此,简而言之,所有 3 种格式本质上只是一个 ZIP 文件夹,其中包含附加特定于格式的元数据文件。

使用 Android SDK 的 dx 实用程序从同一个 helloWorld.java 文件生成所有 3 种格式,然后对这 3 个文件进行 hexDump,然后一次比较 2 个文件,以确认它们几乎完全相同,只有 4 个格式特定的字节不同。生成的 3 个文件中的所有其他字节都相同。

答案2

没有使用官方工具,可能根本没有。

DEX 文件是转换成 Dalvik 机器可以理解和执行的语言的文件,不一定是 java,DEX 只是针对 Dalvik 虚拟机的中间文件,所以从技术上讲,也无法保证这个 DEX 文件是来自 jar 还是来自 java 语言。

在构建时,即创建 apk 时,所有非本机库的代码都放入 DEX 文件中。“jar 概念”根本不存在,也不存在于 apk 文件中。

答案3

APK(Android应用程序包)是用于分发和安装Android操作系统应用程序软件的文件格式。它只能与Android操作系统一起使用。

JAR(Java 存档)是一种存档文件格式,通常用于分发一组 Java 类。这些文件使用 ZIP 文件格式完成,文件扩展名为 .jar。它们可用于多台设备包括那些拥有 Android 操作系统的设备。

您可以将 apk 转换为 jar,反之亦然。

APK 文件以压缩的 .ZIP 格式保存,可以使用任何 Zip 解压工具打开。您可以将文件扩展名重命名为“.zip”,然后打开文件

Jar 文件压缩并包含其他文件。Jar 文件非常容易打开。有许多程序可以打开 jar 文件。事实上,任何可以打开 zip 文件的程序都可以打开 jar 文件。jar 格式与 zip 文件格式相同。打开 Jar 文件需要 Java 运行时环境。

要在您的计算机上打开 APK 文件,需要额外的软件。

答案4

最好的办法是检查 zip 文件的内容。所有.apk文件都应包含一个AndroidManifest.xml文件,因此 ZIP 索引中存在该文件应该是一个很好的指标,表明您有该类型的文件。

对于.jar文件,检查META-INF/MANIFEST.MFZIP 索引可能是最佳选择。请注意,Android 软件包也包含此清单,因此请先检查该文件是否为文件.apk

您可以将类似的技巧用于其他基于 ZIP 的格式。例如,开放文档格式文件包含一个文件mimetype,其内容应该会告诉您文件的具体类型。

相关内容