RKNHardering Help

Крупные RWX-области памяти

ID: RWX_MEMORY_REGIONS Категория: Хуки и целостность процесса Статус в RKNHardering 2.10.0: Активная проверка Роль в вердикте: Низкая

Эта страница описывает фактическую реализацию RKNHardering 2.10.0. Здесь отдельно указано, что можно сделать без root, что требует root, а также где способ только уменьшает один сигнал, но не скрывает VPN целиком.

Что проверяется и зачем

При чтении /proc/self/maps C++ считает mappings с правами rwx и размером не менее 256 KiB. Если их хотя бы один, выводится количество rwx_large; Kotlin отображает его информационно с low confidence.

Точное условие срабатывания

Одна или несколько одновременно writable+executable областей размером ≥256 KiB.

Что означает результат

Это индикатор JIT, runtime-патчинга или instrumentation, но не доказательство. В текущей версии строка не создаёт review и не меняет detected.

Как строка влияет на отчёт: Строка информационная либо диагностическая. Она нужна для сравнения запусков, но сама по себе не доказывает VPN или вмешательство.

Ограничения и возможные ложные срабатывания

ART/JIT, игры, WebView, эмуляторы и легитимные движки могут иметь RWX или переходные mappings. Проверка не фиксирует время жизни и не хэширует содержимое.

Важно оценивать эту строку вместе с соседними сигналами. Один чистый API не перекрывает Java Binder, libc, raw netlink/syscall, procfs/sysfs, локальные сокеты и серверные признаки одновременно.

Рекомендации для этого вектора

Без root

Без root лучший вариант — чистый APK из доверенного источника без repack, LSPatch, Frida Gadget, виртуализатора и rootless-Xposed. Перенос приложения во «второе пространство» не очищает его процесс автоматически: контейнер может внедрять собственные библиотеки и оставить ещё больше расхождений. Если сигнал появляется на чистом APK, повторите после холодного старта и без WebView/тяжёлого экрана; возможно, это нормальный JIT.

С root

При root не включайте целевое приложение в scope Xposed/Vector и не загружайте в него Zygisk-модуль без необходимости. Для VPN-сокрытия предпочтительна схема, где Java-фильтрация выполняется в system_server, а native-фильтрация — в ядре. DenyList/App Profile, NoHello, Zygisk Next, SUSFS и похожие инструменты могут уменьшать часть следов, но ни один из них не является гарантией против maps, linker, mount и raw-syscall проверок одновременно. Не отключайте JIT системными property ради одной строки: это ухудшит производительность и не уберёт другие hook-сигналы.

Как проверить результат

# Только для debuggable сборки:
adb shell run-as com.notcvnt.rknhardering cat /proc/self/maps | grep -E '^[0-9a-f]+-[0-9a-f]+ rwx'

Сопоставьте адресный диапазон и размер. На release полагайтесь на встроенную строку.

После любого изменения сделайте force-stop RKNHardering и VPN-клиента, запустите их заново и повторите полный scan. Для Zygisk/Xposed/kernel-модулей обычно нужна перезагрузка. Сравнивайте не только эту строку, но и соседние сигналы: частичный hook часто создаёт несогласованность между API.

Необходимые права и риски

Сама проба выполняется с обычными правами приложения и не запрашивает root. ADB-команды ниже служат только для ориентира: adb shell работает под другим UID и может видеть больше или меньше, чем процесс приложения. Решающий тест — повторный запуск самой проверки после force-stop.

Риски

Попытка менять memory protections сторонним модулем может привести к crash и нарушить W^X. Не публикуйте полный maps без редактирования.

Откат

Верните последнее изменение: отключите добавленный модуль или правило через штатный менеджер, перезагрузите устройство и повторите baseline. Не накладывайте новый hook поверх неизвестного состояния.

Уровень доказательности

Низкая. Проверено по порогу 256 KiB в nativeReadSelfMapsSummary(); checker намеренно делает строку informational.

Статус стороннего решения не переносится автоматически на это устройство. Заявление разработчика модуля — это исходная гипотеза; подтверждением служит повторяемый результат RKNHardering на конкретной версии Android, прошивки и ядра.

Источники и дата последней проверки

Связанные сигналы: hook-markers, library-integrity.

К справочнику Native signs