Назначение «android: useEmbeddedDex» на Android Q - PullRequest
3 голосов
/ 15 апреля 2019

Отсюда (https://developer.android.com/preview/features#embedded-dex), вы можете видеть, что в Android появилась новая функция, позволяющая запускать код непосредственно из APK с помощью встроенного кода dex.

Мне любопытно, как это было бы полезно?

Гид говорит:

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

Насколько я понимаю, когда ваш APK установлен, он компилируется и сохраняется в кеше dalvik в виде оптимизированного файла dex. Кэш dalvik доступен только пользователю системы, поэтому, если телефон не рутирован, злоумышленник не сможет добраться до него.

Если телефон рутирован (а злоумышленник работает от имени root), во встроенный файл dex все еще можно вмешаться, поскольку злоумышленник может просто изменить apk и заново подписать его своим собственным ключом.

Спасибо!

1 Ответ

1 голос
/ 06 мая 2019

Правильно. Включив эту опцию, вы заставляете систему запускать код dex непосредственно из файла .apk, используя JIT-компилятор (как это было в dalvik до Android 4.4) вместо AOT (5+) или их комбинации (4.4- 5). Вы не можете изменять и запускать код dex внутри apk без его повторной подписи, и, поскольку у вас нет оригинального ключа подписи, вам придется подписать его другим ключом. Как разработчик приложения вы можете реализовать код, проверяющий подпись и контрольную сумму apk, и, таким образом, не позволять запускать apk, который был подделан. С другой стороны, в кеше dalvik есть оптимизированные версии файлов .dex и предварительно скомпилированные файлы .oat, которые не подписаны и, таким образом, имеют привилегии root, вы можете изменять их.

...