我对Android安全领域特别陌生,试图了解Android在安装(和执行)apk文件时如何验证其完整性。 只是尝试一下,我尝试了用三个.dex文件重新编译apk并在签名之前使用十六进制编辑器更改了classes.dex之一的标头部分中内容的一个字节。 该应用程序安装在设备上几乎没有任何投诉,但通常所需的时间要短得多。 尝试按预期运行该应用程序时,它因抱怨找不到应用程序类而崩溃,并在/ system / ...路径中不存在所需的.dex文件。
我想了解为什么该应用程序首先成功安装,而Android在安装过程中没有抱怨损坏。另外,Android在安装过程中实际检测到哪些损坏可以进行哪些检查。
P.S .:我更改了一个.dex文件(尤其是classes.dex)的SHA-1标头中的一个字节
答案 0 :(得分:1)
如您所见,无效的dex文件不会导致安装失败。通常,作为安装过程的一部分,art将优化和编译dex文件-其结果是一个燕麦文件。在此过程中,将检查dex文件的完整性。
您可以查看art的来源,以查看其对dex文件进行的验证类型。参见例如here,但在其他地方也是如此。