Анализ приложения Минкомсвязи. Смотрим под капот. Часть 1

Ввести ЧС и принять реальные меры по поддержке населения? Нас услышали и государство спешит на помощь. Минкомсвязь по-быстрому накодило на коленке приложение для поддержания "режима самоизоляции" (термин  придуман на лету и никакого правового статуса не имеет, поправьте, если я не прав).

Ссылка на гугл плэй: https://play.google.com/store/apps/details?id=com.minsvyaz.g...

Так уж вышло, что я имею кое-какой опыт в разработке под Android и немного понимаю, как посмотреть в исходный код такого приложения, когда оно уже "собрано". Предлагаю вашему вниманию мой первичный анализ этой поделки: пробегусь по верхам и сделаю предварительные выводы. Что же там под капотом и как наше правительство нас спасает с помощью софта. Поехали.

Первым делом смотрим в файл `AndroidManifest.xml`. Тут указываются основные компоненты приложения, какие разрешения оно требует, а также "точки входа".


Прежде всего: поддерживаемые устройства. `minSdkVersion` - минимальная версия прошивки телефона, на которой данное приложение запустится.

Анализ  приложения Минкомсвязи. Смотрим под капот. Часть 1 Реверс-инжиниринг, Android разработка

В принципе, адекватная версия по нынешним меркам. Покрывает 94% всех существующих современных девайсов по версии гугла:

Анализ  приложения Минкомсвязи. Смотрим под капот. Часть 1 Реверс-инжиниринг, Android разработка

Однако, в данном случае, могли бы охватить все 99.8%, снизив данный параметр до 16 (да, разрабам больше геморра, я знаю, но раз такое дело, могли бы поднапрячься)

Анализ  приложения Минкомсвязи. Смотрим под капот. Часть 1 Реверс-инжиниринг, Android разработка

Далее в манифесте вполне обычные заявленные разрешения: на работу с сетью, вибровызовом. Отслеживание момента, когда телефон включается (то есть теоретически, если они это реализовали, приложуха может включаться автоматически вместе с телефоном). Зачем-то понадобилось разрешение `android.permission.WAKE_LOCK` - позволяет держать экран телефона включенным. Пока, вроде бы, всё нормально:

Анализ  приложения Минкомсвязи. Смотрим под капот. Часть 1 Реверс-инжиниринг, Android разработка

Пропустив не очень интересные пункты, типа оповещений о малом заряде батареи, видим работу с гугловыми метриками (приложение может отсылать всякую разнообразную инфу о себе, например, какие кнопки жмёт пользователь):

Анализ  приложения Минкомсвязи. Смотрим под капот. Часть 1 Реверс-инжиниринг, Android разработка

Также из манифеста видно, что есть какой-то сервис (фоновая работа на устройствах `Android`) Судя по названию, трэкает время, проведённое на улице:

Анализ  приложения Минкомсвязи. Смотрим под капот. Часть 1 Реверс-инжиниринг, Android разработка

Из интересного: логика подсчёта времени основана на том, что установлено на девайсе. Можно было бы хакнуть это, просто переводом времени на телефоне. Но ребята из Минкомсвязи, видимо, предусмотрели это и приложуха отслеживает перевод времени на девайсе (и, видимо, перезапускает сервис):

Анализ  приложения Минкомсвязи. Смотрим под капот. Часть 1 Реверс-инжиниринг, Android разработка

Вывод. Я ждал чего-то более тотально-контрольного, как доступ к местоположению телефона (GPS трэкинг), но не нашёл. Пока это только обычная приложуха, которая умеет читать `QR-code`, показывать картинки и отсылать какую-то инфу о самой себе. Помимо этого, есть доступ к файловой системе, оповещение о смене состояния подключения к интернету.