我发现了一个样本,它间接包含classes.dex了神奇的“Dalvik dex 文件版本 036”。如果不是版本问题,文件好像是正常的,JEB加载没有问题。
但根据DEX 格式的官方规范,唯一允许的值是 035 和 037,Android 8.0 中为 038。以前的文本明确阅读(但不再):
由于旧版 Android 中存在 Dalvik 错误,Dex 版本 036 已被跳过。Dex 036 版不适用于任何版本的 Android,而且永远不会。
同样的故事在这里得到证实 - https://github.com/JesusFreke/smali/issues/484。
Android 在这种 dex 上的表现如何?Dalvik 是简单地静默加载还是拒绝?或者这是一种从分析中隐藏文件的已知技术,并且在加载 dex 之前正在更正版本?