Mountify - Маскировка модулей на Android для обхода самых хитрых детекторов

01 May, 2026

Привет, коллеги-разработчики и энтузиасты Android! Знакома ли вам ситуация, когда после установки любимого модуля Magisk или KernelSU ваше банковское приложение внезапно отказывается работать, а любимая игра начинает подозревать вас в читерстве? Как часто мы сталкиваемся с тем, что даже самые изощренные методы обхода обнаружения рута оказываются бессильны перед новыми алгоритмами защиты.

Сегодня я хочу рассказать вам о проекте, который предлагает весьма элегантное, хоть и, по словам самого автора, "костыльное" решение этой проблемы. Встречайте — Mountify (GitHub-репозиторий).

Что такое Mountify и зачем он нужен?

В двух словах, Mountify — это модуль, который помогает вам монтировать другие модули (для KernelSU, APatch или Magisk) таким образом, чтобы они выглядели как часть системного образа, а не как сторонние модификации. Звучит просто, но дьявол, как всегда, кроется в деталях.

Основная задача Mountify — минимизировать "цифровые следы" монтирования. Традиционные методы, такие как "Magic Mount" в Magisk, значительно увеличивают количество точек монтирования, что легко обнаруживается такими системами, как Zimperium. Mountify же использует технологию OverlayFS, чтобы "наложить" содержимое ваших модулей поверх существующих системных директорий, имитируя при этом OEM-монтирование, например, в /mnt/vendor/my_bigball.

Кому это будет полезно? В первую очередь, тем, кто активно использует модули для расширения функциональности своего Android-устройства, но при этом сталкивается с проблемами совместимости с приложениями, которые активно проверяют целостность системы и наличие рута. Если вы хотите, чтобы ваши модификации жили своей жизнью, не привлекая лишнего внимания, Mountify может стать вашим надежным помощником.

Как это работает: Два подхода к маскировке

Mountify предлагает два основных режима работы, каждый из которых имеет свои особенности и сценарии применения.

1. Режим tmpfs: Легкий и быстрый

Этот режим — своего рода "быстрый старт" для большинства пользователей. Он основан на использовании tmpfs (временной файловой системы в оперативной памяти).

Как это происходит:

  1. Вы помечаете нужный модуль специальным файлом skip_mount (например, /data/adb/modules/module_id/skip_mount), чтобы Mountify знал, что его нужно обработать.
  2. Mountify копирует содержимое вашего модуля во временную папку, например, /mnt/vendor/fake_folder_name.
  3. Он зеркалирует контекст SELinux для каждого файла из модуля в эту временную папку, что критически важно для корректной работы системы безопасности Android.
  4. Эти шаги повторяются для всех выбранных модулей.
  5. Наконец, Mountify использует OverlayFS, чтобы наложить содержимое этой временной папки (например, /mnt/vendor/fake_folder_name/system/bin) на реальные системные директории (например, /system/bin).

Преимущество tmpfs: Скорость и отсутствие постоянных изменений на диске. Все происходит в оперативной памяти, что минимизирует риски и ускоряет процесс. Идеально для большинства модулей, которые не требуют специфических файловых систем.

2. Режим ext4 sparse: Для особых случаев

Этот режим более сложен и предназначен для специфических задач, например, для монтирования драйверов GPU, которые могут требовать специфических особенностей файловой системы ext4.

Как это происходит:

  1. Как и в tmpfs режиме, вы помечаете модуль файлом skip_mount.
  2. Mountify создает разреженный образ ext4 (ext4 sparse image) и монтирует его в /mnt/vendor/fake_folder_name.
  3. Затем содержимое модуля копируется в этот образ.
  4. Контекст SELinux также зеркалируется.
  5. После копирования всех модулей, образ размонтируется, при необходимости изменяется его размер и снова монтируется.
  6. И только потом происходит OverlayFS-монтирование в системные директории.

Важный нюанс: Автор предупреждает, что ext4 sparse mode может быть более заметен для некоторых детекторов, так как он создает узлы ext4 в /proc/fs. Однако, если вы используете KernelSU версии 22105+ или GKI 5.10+, есть экспериментальные методы для "зачистки" этих узлов, что снижает риски обнаружения. Этот режим — скорее запасной вариант, нежели основная рекомендация.

Почему это важно для вас: Обход детекторов

Главная ценность Mountify заключается в его способности обходить современные механизмы обнаружения модификаций.

  • Прощай, "Magic Mount": Традиционный "Magic Mount" значительно увеличивает счетчик монтирований, что является одним из первых признаков модифицированной системы для детекторов вроде Zimperium. Mountify обходит эту проблему, используя OverlayFS, который не приводит к такому же увеличению.
  • Имитация OEM-монтирования: Вместо того чтобы создавать очевидные следы стороннего монтирования, Mountify старается имитировать, как если бы эти файлы были частью заводской прошивки, монтируясь в неочевидные места, например, /mnt/vendor/.
  • Решение проблем с f2fs: Для пользователей f2fs на /data (что сейчас довольно распространено), использование /data как источника OverlayFS часто приводит к ошибкам из-за нативной поддержки casefolding (ovl_dentry_weird). Mountify предлагает обходной путь, не полагаясь на /data как источник.

По сути, Mountify — это попытка закрыть лазейки, которые используют детекторы, делая ваши модули максимально "невидимыми" для системы.

Настройка и использование: Гибкость под ваши нужды

Mountify предлагает довольно гибкие возможности настройки, что позволяет адаптировать его под конкретные сценарии использования.

Удобство настройки: WebUI или config.sh

Для большинства пользователей будет удобно настраивать Mountify через WebUI, который предоставляет дружелюбный интерфейс. Однако, если вы предпочитаете работать с файлами напрямую, все параметры доступны для редактирования в /data/adb/mountify/config.sh.

Выборочное монтирование модулей

По умолчанию Mountify пытается монтировать все модули, у которых есть системные папки (mountify_mounts=2). Но вы можете настроить его так, чтобы он монтировал только определенные модули. Для этого нужно установить mountify_mounts=1 в config.sh и перечислить нужные модули в файле modules.txt:

module_id
Adreno_Gpu_Driver
DisplayFeatures
ViPER4Android-RE-Fork
mountify_whiteouts

Это очень удобно, если у вас есть модули, которые не требуют скрытного монтирования, или те, которые конфликтуют с Mountify.

Дополнительные параметры

  • FAKE_MOUNT_NAME="mountify": Позволяет задать кастомное имя для фейковой папки монтирования.
  • mountify_stop_start=1: Перезапускает Android при запуске сервиса, что может быть необходимо для некоторых модулей.
  • Для tmpfs: test_decoy_mount=1 для тестирования "обманных" монтирований.
  • Для ext4:
    • use_ext4_sparse=1: Принудительно включает ext4 режим.
    • spoof_sparse=1: Пытается замаскировать sparse mount как Android-сервис.
    • FAKE_APEX_NAME="com.android.mntservice": Кастомизация имени поддельного Android-сервиса.
    • sparse_size="2048": Установка размера разреженного образа в МБ.
    • enable_lkm_nuke=1 и lkm_filename="nuke.ko": Для загрузки экспериментального LKM, который помогает скрывать узлы ext4.

Как быть с размонтированием?

Размонтирование модулей, обработанных Mountify, требует использования одного из Zygisk-провайдеров, таких как NeoZygisk, NoHello, ReZygisk или Zygisk Assistant. Если вы используете Zygisk Next, убедитесь, что политика Denylist установлена на "Enforced" или "Unmount Only".

Также в config.sh можно указать используемый провайдер (MOUNT_DEVICE_NAME="APatch", "KSU" или "magisk") и активировать mountify_custom_umount=1 для использования встроенных методов размонтирования ядра, хотя автор отмечает, что методы Zygisk-провайдеров предпочтительнее.

Важные нюансы и рекомендации

Как и любой мощный инструмент, Mountify требует внимательного подхода.

  • Конфликты: Автор прямо указывает на конфликт с модулем De-Bloater, поскольку тот использует "фиктивный текст" вместо правильных "whiteouts" для удаления системных приложений. Вместо него рекомендуется использовать System App Nuker, который работает корректно.
  • Отсутствие поддержки: Важно понимать, что проект распространяется "как есть" по лицензии The Unlicense (для модуля). Автор прямо заявляет: "Я даю вам острый нож, и это не моя проблема, если вы им порежетесь". Это означает, что никакой официальной поддержки или гарантий нет, и вы используете его на свой страх и риск. Будьте готовы к тому, что придется разбираться с возможными проблемами самостоятельно.
  • Требования к ядру: Для работы Mountify необходима поддержка CONFIG_OVERLAY_FS=y в ядре, а CONFIG_TMPFS_XATTR=y настоятельно рекомендуется. Большинство современных ядер Android уже имеют эти опции.

Выводы: Стоит ли попробовать Mountify?

Если вы активный пользователь Magisk, KernelSU или APatch, и вас постоянно преследуют детекторы рута в приложениях, то Mountify определенно заслуживает вашего внимания. Это не панацея, и автор честно признает его "костыльность", но это один из самых продуманных и эффективных "костылей", доступных на данный момент.

Он предлагает гибкие методы маскировки, которые могут помочь вам сохранить функциональность любимых модулей, избегая при этом блокировок. Однако помните о необходимости тщательно изучить документацию, быть готовым к самостоятельной отладке и всегда иметь бэкап.

Mountify — это инструмент для тех, кто понимает, что делает, и готов экспериментировать ради свободы настройки своего Android-устройства. Если вы из таких, смело переходите по ссылке на GitHub-репозиторий и попробуйте его в деле!