Android Q上“ android:useEmbeddedDex”的目的

时间:2019-04-15 03:22:30

标签: android security android-security

从这里(https://developer.android.com/preview/features#embedded-dex),您可以看到Android引入了一项新功能,该功能允许使用嵌入式dex在APK内部直接运行代码。

我很好奇这怎么用?

指南说:

This option can help prevent an attack if an attacker ever managed to 
tamper with the locally compiled code on the device."

我的理解是,安装APK后,它会作为优化的dex文件被编译并存储在dalvik缓存中。 dalvik缓存仅可由系统用户访问,因此,除非手机已扎根,否则攻击者无法获取它。

如果手机已扎根(并且攻击者以root身份运行),则嵌入的dex文件仍然可以被篡改,因为攻击者可以随后修改apk并使用自己的密钥对其重新签名。

谢谢!

1 个答案:

答案 0 :(得分:1)

正确。通过启用此选项,您将强制系统使用JIT编译器(就像在Android 4.4之前的dalvik上一样)直接从.apk文件运行dex代码,而不是AOT(5+)或两者结合使用(4.4- 5)。您不能在不重新签名的情况下修改和运行apk内的dex代码,并且由于您没有原始的签名密钥,因此您必须使用其他密钥对其进行签名。作为应用程序开发人员,您可以实现代码以检查apk签名和校验和,从而不允许运行被篡改的apk。另一方面,您在dalvik缓存中拥有的是.dex文件和预编译的.oat文件的优化版本,这些文件未经签名,因此具有root特权,您可以对其进行修改。