我遇到了一个示例,该示例间接包含带有魔术“ Dalvik dex文件版本036”的classes.dex。如果不是该版本,则该文件似乎是正常的,并且JEB可以毫无问题地加载它。以前,该文本已明确读取(但不再更多):


由于旧版Android中存在Dalvik错误,Dex 036版已被跳过。 Dex版本036对任何版本的Android都无效,也永远不会有效。 。

Android如何在这种dex上运行? Dalvik只是默默地加载它还是拒绝它?还是这是一种从分析中隐藏文件并在加载dex之前对版本进行纠正的已知技术?

#1 楼

我相信dalvik和art的大多数版本都会拒绝dex文件并拒绝加载。

评论


谢谢你的回答。您知道为什么有人会创建这样的文件吗?它是一个错误还是某种隐藏技术?

–伊利亚·巴拉诺夫斯基(Ilia Barahovski)
17年3月21日在19:28

在平台使用该版本的JB时间范围(iirc)前后有很短的时间。

–耶稣·弗雷克(JesusFreke)
17年3月21日在23:22

#2 楼

绝对不会在新版本的平台上执行该文件,但可以在dex_file.cc中的此注释中接受一些较旧的文件(这些文件/供应商将是一个有趣的研究琐事):


//由于某些android版本上的旧dalvik错误,Dex 036版被跳过,其中dex //具有该版本号的文件会被错误地接受并运行。