Как в школе заставляли ставить "браузер хам", и что я там нашёл
Вступление для тех, кто меня не помнит
Хэй, дтф! Давно не писал лонгриды — где-то полтора года. Всё это время я, как и многие, смотрел видосы и учился в школе. Но сегодня хочу поделиться историей, которая заставила меня вернуться к клавиатуре.
Всё началось с того, что наш учитель информатики объявил: "С понедельника всё общение только через 'соцсеть Нах — браузер хам'!". Это был якобы "образовательный коммуникатор", который должен был заменить все остальные способы связи.
Часть 1: Паранойя как образ жизни
Сразу скажу — я не параноик. Ну, почти. Но когда мне говорят "поставь это приложение, потому что надо", а оно просит:
- Доступ к камере
- Доступ к микрофону
...у меня начинают чесаться руки. Не чтобы ставить, а чтобы разобрать.
Мой гениальный план: запустить это в WayDroid на Ubuntu. Типа "да, я установил", но на самом деле — в цифровой клетке. Даже если приложение сбежит, максимум что оно увидит — чистую виртуалку.
Часть 2: Разборка "Браузера Нах" — как чёрный ящик для реверс-инженера
Распаковал APK через APKTool. Сразу фейл — в ресурсах куча файлов с названиями типа $avd_hide_password__0.xml. Символ $ в имени файла! Это как назвать переменную с пробелом — можно, но зачем?
Дальше — два манифеста. Один в корне, другой в original/. Зачем? Может, как в фильмах про шпионов — один для показа, другой для реальной работы?
Что я нашёл внутри:
1. Трекеры на трекерах
- Свой фреймворк "Tracer" (сбор крашей, метрик, дампов памяти)
- OneLog — ещё один сборщик логов (видимо, для разнообразия)
- Google Firebase и book* (*эээ, организация) Activity (а ведь реально, привет, "импортозамещение"!)
- Сервисы, которые могут блокировать доступ к другим приложениям
2. Разрешения как у суперпользователя
<!-- Это реальные разрешения из манифеста: --> <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/> <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/> <uses-permission android:name="android.permission.FOREGROUND_SERVICE_MEDIA_PROJECTION"/>
То есть приложение может:
- Рисовать поверх других окон
- Устанавливать программы без твоего ведома
- Записывать экран
Для коммуникатора. Ну да, ну да.
Часть 3: Мой крестовый поход за чистый код
Решил я почистить этот манифест. Удалил:
- Все трекеры (Tracer, OneLog, Firebase)
- Доступ к геолокации
- Разрешение на запись экрана
- Возможность устанавливать другие приложения
- Интеграции со сторонними сервисами (да, они там тоже были)
Оставил только интернет (авторизацию-регистрацию), текст мессаджес и доступ к микрофону для звонков. Получилось 80 строк вместо 400.
Часть 4: Почему APKTool кинул меня
Попробовал собрать обратно. Апктул сказал "нет". Причём очень жёстко:
W: error: resource 'drawable/$avd_hide_password__0' has invalid entry name W: First type is not attr! brut.androlib.AndrolibException: brut.common.BrutException: could not exec (exit code = 134)
Перепробовал всё:
- apktool b . — фейл
- apktool b --use-aapt2 . — фейл
- Замена aapt на другую версию — фейл
- Молитвы всем богам цифрового мира — фейл
Перешёл к плану Б: ручная сборка через ZIP
- Распаковал APK как обычный ZIP-архив
- Заменил AndroidManifest.xml на очищенный
- Перепаковал обратно
- Попытался установить — «Не удалось проанализировать пакет»
Проблема: APK нужно подписывать. Без подписи Android отказывается устанавливать.
План В: APK Editor на телефоне
Установил APK Editor, открыл исходный APK:
- Выбрал «Common Edit»
- Заменил манифест через текстовый редактор
- Сохранил — APK Editor переподписал APK
- Пытаюсь установить — «Не удалось обработать пакет»
Покопался в логах — оказалось, APK Editor не справляется с:
- Файлами, имена которых начинаются с $
- Кастомными атрибутами в ресурсах
- Нативными библиотеками, которые ожидают определённую структуру манифеста
Что в итоге: разработчики «Браузера Хам» настолько не хотели, чтобы кто-то копался в их коде, что:
- Использовали нестандартные имена файлов
- Добавили кастомные атрибуты в ресурсы
- Сделали так, что стандартные инструменты падают
- Использовали метед обфускации/полиморфизма
Это уровень защиты как у банковских приложений. Только вот это же коммуникатор для школы, Карл!
Получается замкнутый круг:
- Нельзя изменить манифест → не удаётся собрать APK
- Можно изменить манифест через APK Editor → APK не устанавливается
- Можно собрать без изменений → оставляем все трекеры и слежку
Мораль: если разработчики так сильно защищают приложение от модификаций, возможно, им действительно есть что скрывать.
Часть 5: Диалог с начальником, или "Ты просто параноик"
Я: Юрий Семёнович, а вы знаете, что это приложение может устанавливать другие программы без спроса?
Учитель: Вам же нечего скрывать! Это для образовательного процесса!
Я: Но там Google Firebase, а мы же за импортозамещение...
Учитель: Это техническая необходимость! (далее 10 минут про цифровой суверенитет)
Самое смешное, что когда я показал ему манифест с кучей разрешений, он сказал: "Ну и что? В android же есть песочница, ничего страшного".
Часть 6: Сообщество в шоке
Одноклассники разделились на три лагеря:
- "Я лучше умру"/ «да ять, я знаю, что учителя сами ставят на телефон, которым не будут пользоваться»/»можно ссылку на закон» — отказались ставить принципиально
- "Мне нечего скрывать" — поставили и забыли
- "А что такого?" — поставили, но начали задавать вопросы
Ирония в том, что те, кто раньше смеялся над "параноиками", теперь сами нервно проверяли, какие разрешения дали.
Часть 7: Почему это важно даже для геймеров
Вы же помните скандалы:
- Когда Riot Games встроили античит на уровень ядра в Valorant?
- Когда Blizzard добавили то же самое в WoW Classic?
- Когда Genshin Impact начал сканировать процессы на ПК?
Тут та же история, только в образовании. Когда софт просит слишком много прав — это повод задуматься. Даже если это "просто коммуникатор для школы".
Что я вынес из этого адского квеста:
- Технические скиллы прокачались до небес.
- Теперь я умею: Работать с APKTool (когда он не падает)
- Анализировать манифесты
- Использовать контейнеризацию (ВМ) для безопасности
- Дипломатия — иногда лучше сохранить отношения с учителем, чем доказывать свою правоту.
- Цифровая грамотность — это не про то, чтобы скрывать преступления. Это про то, чтобы понимать, что ты устанавливаешь.
Финал, или "Чему меня научил Браузер Нах"
Если вам в школе/универе/на работе навязывают софт:
- Спросите — зачем ему столько разрешений?
- Проверьте — что говорят о нём в интернете?
- Защищайтесь — используйте песочницы, виртуалки, отдельные устройства.
И помните: технологии должны служить людям, а не наоборот.
P.S. Всё описанное — исключительно в образовательных целях. Я не взламывал приложения, а только изучал, что они запрашивают. Все названия изменены, совпадения случайны. В статье проводится статический анализ публично доступного APK-файла (реверс-инжиниринг). Не производилось изменение кода, взлом серверов или обход лицензионных ограничений. Цель — анализ запрашиваемых разрешений в духе цифровой грамотности
P.P.S. Если вы узнали в этом описании какое-то конкретное приложение — это ваши фантазии. Я говорю об абстрактной «Соцсети хам», который может существовать только в моём воображении.
Что думаете, дтф? Сталкивались с подобным? Или я действительно параноик? 🥲
* Плохая лексика, юридическое кощунство или упоминание "сами знаете чего"
P.P.P.S. (от меня, автора этого лонгрида): Я понимаю, что некоторые моменты могут показаться преувеличенными, но это реальный опыт. Если кто-то из сообщества знает, как обойти защиту с файлами типа $avd_* — делитесь в комментах, буду благодарен!