Как WhatsApp вычисляет инъекции в память через LSPosed/Xposed
AndySendy academy
← Все посты

🔗 Официальный APK - не щит, если внутри него работает чужой код

«WhatsApp проверяет память на следы Xposed-мостов» - фраза, которая объясняет слишком много и слишком уверенно. Реальная картина сложнее: индустрия anti-hooking действительно умеет находить инъекции в память, но что именно из этого арсенала использует WhatsApp - Meta никогда не публиковала. Разберём, где проверяемая техника Android, а где - реконструкция сообщества автоматизаторов.


Почему это другая категория риска

Модифицированный APK (GBWhatsApp) и официальный APK с инъекцией в память через LSPosed - разные вещи технически, но одинаково рискованные на практике. Подпись защищает мод-клиенты на этапе файла; здесь риск в рантайме. Официальное приложение из Google Play защищает от детекта по подписи, но не защищает от детекта по поведению процесса, если внутрь этого процесса на лету внедряется сторонний код.


Было / Стало: что нужно поправить в исходном тезисе

Было:

WhatsApp проверяет память на следы Xposed-мостов, модулей Magisk, Zygisk, изменённых системных библиотек.

Стало:

Это распространённая и технически правдоподобная гипотеза, основанная на стандартных практиках anti-tampering в индустрии Android в целом. Но прямого подтверждения, что именно WhatsApp сканирует память на конкретные сигнатуры Xposed или Magisk, в открытых источниках нет.

Было:

Главный маркер: команда отправки уходит без физического события отрисовки и нажатия на экран - слишком быстрые системные вызовы в обход UI-слоя.

Стало:

Подтверждённый антиспам-механизм WhatsApp - это анализ поведенческих паттернов: скорости отправки, всплесков активности, неестественно равномерных интервалов между сообщениями. Что детект строится именно вокруг отсутствия физического тапа по экрану или разрыва между UI-слоем и системным вызовом - не подтверждено ни одним источником - как и MotionEvent-гипотезы в сторонних APK.


Что умеет индустрия anti-hooking - а что из этого доказанно использует WhatsApp

Техника Существует в индустрии Android WhatsApp подтверждённо это применяет
Сканирование /proc/self/maps на артефакты hook-фреймворков Да [✓] Не подтверждено
Проверка PLT/GOT на подмену адресов Да [✓] Не подтверждено
Поиск inline-хуков по байтам критичных функций Да [✓] Не подтверждено
Контроль целостности Zygote-процесса Да [✓] Не подтверждено
ART method verification через JNI FromReflectedMethod Да [✓] Не подтверждено
Play Integrity API (Device/Strong Integrity) Да [✓] Да [✓]
Поведенческий антиспам: скорость, паттерны, всплески Да [✓] Да [✓]

Единственные две строки с прямым подтверждением для WhatsApp - Play Integrity и поведенческий антиспам. Всё остальное - общая техническая база индустрии, которую правдоподобно, но не доказанно проецируют на WhatsApp.


Как реально работают memory-хуки - и почему они оставляют следы

LSPosed и Xposed внедряют код в процесс приложения через мост (de.robv.android.xposed.XposedBridge) и перехватывают методы - Java через ART, нативные через GOT/PLT или inline-патчи. Это не теория, а задокументированная механика самих фреймворков.

Проблема для автоматизатора в том, что эти техники объективно создают артефакты: загруженные классы моста в памяти процесса, смещённые указатели в таблицах виртуальных методов, аномальные структуры soinfo в Bionic linker с пустым путём к файлу или разрывами в связном списке загруженных библиотек. Современные Android-приложения умеют искать подобные артефакты - это общеотраслевая практика, а не специфика WhatsApp.

LSPosed при этом обнаруживается приложениями именно тогда, когда процесс реально попадает в scope модуля и подвергается модификации - это подтверждённое поведение фреймворка, зафиксированное в обсуждениях разработчиков, а не предположение.


Play Integrity: единственный доказанный механизм для WhatsApp

Здесь подтверждение твёрдое. WhatsApp использует Google Play Integrity API для оценки целостности устройства и среды. Активные модули LSPosed/Xposed, даже скрытые инструментами вроде Shamiko, часто проваливают проверку по критерию MEETS_STRONG_INTEGRITY - потому что загрузчик разблокирован, а системный образ модифицирован на уровне, который Google и так умеет детектировать независимо от WhatsApp.

Это значит, что даже без гипотетического «сканирования памяти на XposedBridge» само наличие активного root-окружения создаёт реальную проблему через совершенно другой, официально задокументированный канал - тот же API фигурирует в разборе эмуляторов и мод-клиентов.


Мини-кейс: 15 сообщений и вечный бан

Разработчик собрал бота на физическом Pixel: официальный WhatsApp Business из Google Play, LSPosed перехватывает входящие сообщения и вызывает внутренние методы отправки напрямую, без эмуляции UI-цепочки. Несмотря на оригинальное приложение и качественную резидентскую сеть, номер получил постоянный бан через 15 сообщений.

Что показывает кейс: прямой вызов внутренних методов в обход интерфейса - реально рискованная практика, подтверждённая опытом конкретной команды. Чего кейс не доказывает: что причиной стал именно разрыв между UI-событием и системным вызовом, а не общая скорость и паттерн отправки, которые WhatsApp подтверждённо отслеживает - см. поведенческий антиспам. Корреляция здесь не равна вскрытому механизму.

Вторая команда модифицировала подход - хук стал эмулировать ввод текста через системные буферы Android и добавлять задержки перед финальным вызовом, имитируя работу UI-потока. Срок жизни аккаунтов вырос, но каскадные баны продолжились при плановых обновлениях защитных библиотек WhatsApp - это говорит скорее о гонке обновлений, чем о конкретном найденном и устранённом маркере.


Спор сообщества: возможна ли идеальная маскировка

Часть разработчиков утверждает, что при полной программной эмуляции цепочки UI-событий и скрытии классов Xposed через кастомную сборку ядра (KernelSU) детекция невозможна в принципе. Другие возражают: проприетарные антифрод-библиотеки Meta обфусцированы и постоянно меняют проверочные векторы, что делает любую долгосрочную маскировку в памяти нерентабельной.

Подтверждений ни одной стороне нет - это область реконструкций без проверяемых данных от Meta, как и в серых схемах инфраструктуры.


Цифры: что подтверждено, а что - форумная оценка

Форумные оценки без подтверждения [~]:

Подтверждённые антиспам-бенчмарки из практики автоматизации [✓]:

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


Частые заблуждения

«Официальный APK = аккаунт в безопасности» Неверно. Подпись защищает от детекта по происхождению файла, но не от детекта по поведению модифицированного в рантайме процесса.

«DenyList или Shamiko полностью скрывают root» Не подтверждено. В сообществе разработчиков обсуждаются новые методы обнаружения Zygisk-инъекций, которые срабатывают даже при включённом DenyList.

«Хуки в памяти безопаснее обычной UI-автоматизации» Не подтверждено. Практики сообщества скорее считают memory-hooking одним из самых рискованных способов автоматизации именно из-за множественности точек детекта - целостность среды плюс поведенческий антиспам одновременно.

«Если отправлять редко, хук не заметят» Не подтверждено. Если технический маркер модификации процесса зафиксирован, теоретически это не зависит от объёма рассылки - но прямого доказательства превентивного бана при нулевой активности тоже нет.


Практические выводы


🎯 Следующий шаг

Если автоматизация уже построена на LSPosed-хуках в официальный WhatsApp, сначала проверьте результат Play Integrity API на устройствах фермы - это единственный официально задокументированный канал, через который модификация среды реально влияет на доступ. Для коммерческих рассылок рассмотрите официальный WABA - он не зависит от целостности процесса на устройстве.

Вывод

Практическое правило:

Официальный APK защищает подпись файла, а не поведение процесса, который вы в него внедрили.