Dalvik dex 文件版本 036

逆向工程 安卓 静态分析 apk 保护 达尔维克
2021-06-10 04:55:44

我发现了一个样本,它间接包含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 之前正在更正版本?

2个回答

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

当然,这个文件不会对new'ish平台上执行,但可以在一些较老的(哪些商/供应商将是一个有趣的琐事研究)被接受,每在dex_file.cc此评论

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