Уязвимость была представлена на конференции Black Hat Asia в 2017 году. Слайд-шоу этой уязвимости здесь и статья об этой уязвимости здесь .
Я описываю один метод.
В статье у нас есть «SharedUID ProcessCheck»:
В отличие от PID (ID процесса), который является переходным и постоянно меняется, UID присваивается каждому приложению во время установки и остается постоянным, пока приложение не переустанавливается. UID должен быть уникальным для каждого приложения, за исключением случаев, когда приложение явно запрашивает обмен ИД пользователя с другим приложением. Поскольку файл плагина APK никогда не устанавливался в систему, пакет плагинов не имеет уникального UID. Хотя хост-приложение может запустить новый процесс для его запуска, например, DroidPlugindid, процесс плагина поделился с другим UID-идентификатором PID-идентификатора с процессом хост-приложения.
Сначала мы получаем uid и pid нашей программы, затем мы получаем весь процесс android и проверяем их uid, если этот процесс имеет такой же uid, но другой pid это проблема безопасности.
Вот простой псевдокод, вы должны проверить ошибку и настроить ее,
private boolean SharedUIDProcessCheck () {
int myPid= android.os.Process.myPid();
int myUid= android.os.Process.myUid();
for (ActivityManager.RunningAppProcessInfo info : am.getRunningAppProcesses()) {
if (info.uid == myUid && info.pid!=myPid) {
// our program loaded as plugin, security problem has happened.
return true;
}
}
return false;
}