android - Android Q 上 "android:useEmbeddedDex"的用途

标签 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,否则攻击者无法访问它。

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

谢谢!

最佳答案

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

关于android - Android Q 上 "android:useEmbeddedDex"的用途,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55682204/

相关文章:

android - flutter - 在 null 上调用了方法 '[]'(解析 json)

java - 如何制作过滤器以避免访问未记录的页面?

android - 如何锁定我公司的 Android 服务?

android - 在 android 或 react-native 中保护 Assets 和视频文件存储内部的任何好方法

java - 如何从Android Wear进行Socket连接并向服务器发送数据

java - Quickblox 登录无法使用 3.3.1 sdk

android - Robotium 错误的 Activity

.htaccess - 允许使用 htaccess 文件使用多个 IP 地址进行管理员登录

php - 如何防止 PHP 中的 SQL 注入(inject)?

android - 在信任库中添加自定义证书