На Android-смартфонах Xiaomi обнаружен таинственный бэкдор
Xiaomi может удаленно устанавливать на устройства любые приложения без ведома пользователя.
Как известно, производители Android-устройств Xiaomi, HTC, Samsung и OnePlus используют не «чистую» версию операционной системы, а кастомизированную прошивку (например, CyanogenMod, Paranoid Android, MIUI и пр.) с предустановленными приложениями и темами. Теоретически, данные программы призваны повысить производительность смартфонов и добавить функциональность.
Тем не менее, некоторые приложения по своему существу являются бэкдорами. Студент из Нидерландов Тейс Брунинк (Thijs Broenink) решил узнать предназначение неизвестной программы AnalyticsCore.apk, предустановленной на его смартфоне Xiaomi Mi4. Приложение работает в фоновом режиме 24 часа в сутки 7 дней в неделю и восстанавливается после попыток его удалить.
Броенинк поинтересовался, какова функция AnalyticsCore, на форуме поддержки Xiaomi. Так и не дождавшись ответа, он осуществил реверс-инжиниринг приложения. Как оказалось, оно подключается к официальному серверу производителя и проверяет наличие доступных обновлений раз в 24 часа.
Что делать если телефон Xiaomi пишет Fastboot?
При каждом подключении AnalyticsCore отправляет на сервер данные об устройстве, в том числе название модели, IMEI, MAC-адрес и Nonce. При наличии на сервере обновленного приложения с именем файла Analytics.apk оно загружается и устанавливается на устройстве в фоновом режиме без какого-либо участия со стороны пользователя. «Я не обнаружил какие-либо доказательства в коде самого AnalyticsCore, но предполагаю, что приложение Xiaomi с повышенными привилегиями осуществляет процесс инсталляции в фоновом режиме», — отметил Бруннинк.
Возникает вопрос, проверяет ли смартфон подлинность APK, и каким образом определяет, что загруженное приложение – действительно AnalyticsCore? По словам исследователя, какие-либо механизмы проверки APK отсутствуют, а значит, Xiaomi может удаленно и незаметно установить на устройство любое приложение, загрузив его на свой сервер под именем AnalyticsCore.apk.
Узнать предназначение программы Бруннинку так и не удалось. Найти информацию о нем в Сети и даже на официальном сайте производителя невозможно, поэтому остается только догадываться, зачем Xiaomi устанавливает программу на свои устройства. Помимо самой компании, воспользоваться бэкдором могут правительственные спецслужбы или киберпреступники. Поскольку AnalyticsCore получает обновления по незащищенному протоколу HTTP, злоумышленники могут осуществить атаку «человек посередине. «Лично я считаю, что это уязвимость, ведь [производителю] известны IMEI и модель вашего телефона, и они могут установить любой APK конкретно на данное устройство», — подчеркнул исследователь. Владельцы смартфонов Xiaomi могут обезопасить себя, заблокировав с помощью межсетевого экрана подключение к какому-либо связанному с компанией домену.
Мир сходит с ума и грянет киберапокалипсис. Подпишись на наш Телеграм канал, чтобы узнать первым, как выжить в цифровом кошмаре!
Это скрытое меню телефона может оказаться очень полезным!!! Если нет — то его можно удалить!
Источник: www.securitylab.ru
Как мы в QIWI внедряли Kotlin Multiplatform Mobile (KMM)
Меня зовут Кирилл Васильев, и я хотел бы рассказать, как мы в QIWI внедряли Kotlin Multiplatform Mobile (KMM).
КММ — это технология кроссплатформенной разработки, позволяющая писать общий код под основные платформы за исключением UI-слоя. Все продукты со временем накапливают очень большой технологический контекст; КММ, в свою очередь, позволяет его облегчить, делая компоненты технологического стека общими для команд и платформ. Такие технологии дают неоспоримые преимущества — возможность использовать ресурс каждого разработчика при создании новых фич, единый набор тестов, улучшение инженерных практик в командах и прочее.
Как устроен проект с KMM?
Если вы задумываетесь о внедрении КММ в свои существующие проекты, стоит помнить о том, что iOS-командам, вероятно, потребуется время на закрытие вопросов по Kotlin и Gradle. Swift и Kotlin очень похожи, что в целом упрощает задачу.
Структура КММ-проекта устроена таким образом, что весь общий код содержится в отдельном shared модуле, который поделен на три группы исходников, так называемых source-set: сommon набор содержит общий для обеих платформ код, и два набора исходников под платформы. Последние могут использовать платформенные SDK и библиотеки, например, Foundation для iOS, и предоставлять общему коду доступ к их API. Это возможно за счет механизма expect/actual. Он предполагает, что если в common исходниках некоторая сущность – метод, класс, интерфейс или любая другая допустимая объявлена как expect, то компилятор потребует наличия ее actual реализации в платформенных исходниках. Именно actual реализация в дальнейшем будет использоваться на соответствующей платформе.
Учитывая специфику КММ, мы решили начать с низов: слоя данных, модели и начали двигаться “вверх” по слоям.
Интеграция
Слой данных
КММ предлагает использовать для работы с сетью Ktor — асинхронный HTTP-клиент. Его кроссплатформенность достигается за счет использования платформенных движков.
Платформенная реализация HttpClientEngine передается в конструктор. И на этом все. Вы получаете готовый клиент, который можно сразу использовать. Ktor предлагает из коробки несколько готовых движков, в том числе под iOS и Android. Android-реализация использует внутри себя HttpUrlConnection , а iOS — UrlRequest .
Работа с сетью в приложениях всегда обрастает кучей логики — авторизацией, SSL-пиннингом, разного рода перехватчиками запросов и других сущностей. Залезать в это сходу не очень хотелось, и мы решили переиспользовать существующие на платформах сетевые решения через поставляемые платформами движки для Ktor.
Сетевой клиент, используемый для запросов к API, описан в common, движки для него поставляются из платформенных source-set.
С Android было легко — там мы используем OkHttp + Retrofit, а у Ktor есть готовый OkHttpEngine , в который можно передать существующий настроенный OkHttp . На выходе получаем готовый к использованию клиент:
Под iOS сделали свой движок для Ktor, который использует существующий на платформе клиент — для этого достаточно отнаследоваться от класса HttpClientEngineBase и переописать метод execute .
Движок через Swift-реализацию интерфейса-медиатора (мы назвали его IosHttpRuntime и описали в common source-set) проксирует вызов к существующему сетевому клиенту на iOS и возвращает респонс:
Схожая с Ktor движком конструкция с execute , handler для получения ответа от iOS-клиента и необходимые сущности для реквестов и респонсов.
Так выглядит Swift-реализация IosHttpRuntime :
edgeService — это существующий iOS-сервис для запросов к API. Edge — компонент инфраструктуры QIWI, балансировщик, проверяет авторизацию и проксирует вызовы к сервисам компании. EdgeService выполняет запрос, получает ответ и возвращает его через IosHttpRuntime обратно в common.
Так выглядит API на Ktor:
Очень похоже на то, что вы делаете через OkHttp и Retrofit . Выглядит лаконично и просто.
Слой представления
Иерархия классов базовой ViewModel, которую мы реализовали, включает в себя expect и actual реализации — Android требует наличия платформенных компонентов для работы с жизненным циклом.
Базовый класс ViewModel содержит стримы для ViewState и для навигации, и все необходимые коллбэки.
В наследнике мы реализовали формирование стрима с ViewState , навигацию, конструкции для связывания UseCase с Action и всю логику для реализации MVI паттерна.
После этого нам оставалось написать базовые классы недостающих MVI-компонентов — UseCase и Reducer .
Вот как это выглядит на примере избранных платежей. Эта фича предполагает три сценария: добавление, обновление или удаление избранного платежа. UseCase обращается к репозиторию, загружает данные и формирует ViewState , который передается во ViewModel , проходит через редьюсер и рендерится вьюхой.
Проблемы
В процессе мы столкнулись с большим количеством проблем и наступили на все грабли, на которые только можно было.
Большая их часть возникла на стыке с iOS-платформой. Ожидаемо, ввиду сильной технологической разницы относительно Android, на которой все эти вещи, реализованные в КММ, уже довольно долго и успешно живут и прошли своеобразную обкатку. На момент нашей интеграции КММ фреймворк находился в активной фазе развития — обновления выходили буквально каждую неделю, и нам хотелось как можно скорее затащить их все в наш проект, потому что (помимо фиксов) они привносили очень много улучшений.
Но обо всем по порядку.
Зависимости
Синхронизации версий нужно уделять должное внимание, в противном случае можно поймать непредсказуемое поведение на платформе.
Concurrency
Куда без него. Модель многопоточности в Kotlin Native отличается от привычной нам модели в JVM. В JVM мы могли свободно шерить объекты между потоками, нам никто этого не запрещал. Ответственность за их безопасное изменение была на разработчике, оно достигалось стандартными инструментами синхронизации потоков: synchronize-блоками, мьютексами и подобным.
KMM, напротив, вводит два правила. Правило номер один — mutable state должен существовать только в рамках одного потока. И правило номер два — immutable state может свободно шериться между потоками. Например:
В первом случае понятно, что простой data class с двумя immutable val-полями удовлетворяют второму правилу и может свободно шериться между потоками, с этим проблем нет. Но встает вопрос: что делать с объектами, иммутабельность которых не гарантирована?
Во втором случае с CompanyInfo рантайм сам может проверить его иммутабельность и выдать ошибку в случае чего. Но нужно понимать, что это очень большие накладные расходы на перформанс. Поэтому вместо этого рантайм Kotlin Native вводит понятие frozen state. Рантайм каждому классу добавляет extension method, который называется freeze.
После вызова этого метода ваш объект становится замороженным. Что это значит? Рантайм гарантирует, что frozen объект 100% иммутабельный, и любая попытка его изменения приведет к исключению. Соответственно, все замороженные объекты вы можете легко шерить между потоками, поскольку иммутабельность гарантирована.
Библиотеки
Следующая проблема — это сторонние библиотеки с поддержкой КММ, а точнее полное их отсутствие на тот момент. Но сейчас ситуация совершенно иная: появился Kodein и Koin, кроссплатформенная реализация Realm, реализация reactive extensions от компании Badoo. А ребята из IceRockDev написали кучу библиотек, которые закрывают практически все потребности.
Crash Reports
Эта проблема наблюдалась на платформе iOS. Если на iOS вызывается Kotlin-код и он выдает исключения, а верхнеуровневый метод, который его вызвал из платформенного source-set, не помечен специальной аннотацией, то приложение просто крашится, и в Crashlytics отправляется очень странный неинформативный отчет вообще не из того места, где произошел exception.
Сейчас эта проблема решаема. Например, есть библиотека CrashKiOs, которая умеет правильно обрабатывать эти исключения, и ваши крашрепорты снова выглядят потрясающе.
Платформенные фичи
На тот момент КММ не предоставлял возможности получать дату, UUID. Но тут мы возвращаемся к механизму expect/actual, и все эти вещи могут быть спокойно отданы на откуп платформам.
Выводы
КММ — кроссплатформенная среда разработки. Это общий код и одни тесты на обе платформы. Это круто — больше не будет разных тестов. И также это значит, что на платформах будет минимальное расхождение в поведении, поскольку практически все описано в общем коде. Фактически, в нем лежит вся фича.
Это ведет к синхронизации их разработки на разных платформах — мы теперь в одной лодке.
Еще одно преимущество, которое стоит упомянуть, — это нативная производительность. Kotlin компилируется в Objective-C код на iOS и в bytecode на Android.
Для нас в QIWI это был очень крутой опыт: ребята с разных платформ работали вместе, продумывали решения, разбирались с проблемами. Поначалу было тяжело, но сейчас есть очень много вещей, которые закрывают практически все базовые потребности. Коммьюнити растет, пробелы закрываются, ребята из JetBrains не сидят без дела.
Думаю, выражу общую мысль людей, вовлеченных во все это — хотелось бы, чтобы эти технологии и дальше развивались и становились проще. Но делать просто — совсем не просто, и я хочу пожелать всем вовлеченным сил продолжать это дело.
- мобильные приложения
- мультиплатформа
- ios
- android
- ios-разработка
- android-разработка
- разработка мобильных приложений
- QIWI
- KMM
- kotlin multiplatform mobile
- Блог компании QIWI
- Разработка мобильных приложений
- Разработка под Android
- Swift
- Kotlin
Источник: habr.com
Qmmi.ru — что это за сайт?
Важно! Наш юрист поможет, если ваши права были нарушены — опишите как можно подробнее проблему и вам предложат пути её решения. Наш сайт wdomain.ru не имеет отношения к сайту и домену qmmi.ru и все данные о сайте и домене на этой странице принадлежат и относятся к сайту и домену qmmi.ru.
Отзывы, жалобы, вопросы и комментарии о сайте qmmi.ru.
qmmi.ru
Рейтинг: 0.0 (всего голосов: 0)
Оцените рейтинг сайта qmmi.ru, кликнув на одну из пяти звёздочек, и оставьте о нем свой положительный отзыв или напишите жалобу. Задайте вопрос по сайту (домену) qmmi.ru и, возможно, вам ответят.
Пишите текст без переноса строк, все переносы автоматически удаляются.
За оставленные отзывы и комментарии пользователи несут ответственность, вплоть до уголовной (Федеральный закон от 30.12.2020 № 538-ФЗ «О внесении изменения в статью 128-1 Уголовного кодекса Российской Федерации»). Нецензурные комментарии будут удалены!
Добавьте эту страницу в закладки (социальные кнопки — вверху этой страницы) для самостоятельного отслеживания ответов на ваши вопросы, отзывы и комментарии.
Оставляя здесь сообщение, вы даёте согласие на обработку персональных данных и принимаете «Политику конфиденциальности» и «Правила».
Источник: wdomain.ru
QMMI
Скачать QMMI APK для Android — бесплатно — Последняя версия
Последняя версия
24 мар. 2021 г.
Разработчик
Google Play ID
Количество установок
App APKs
QMMI APP
Популярные запросы
LD Player — #1 Android Emulator
Лучший Эмулятор Андроида для ПК
Приложения · Hot
InstaPro Sam Mods · Социальные
自由浏览 Greatfire.org · Связь
Google Play Маркет Google LLC · Инструменты
YouTube Vanced Team Vanced · Видеоплееры и редакторы
Instander Dmitry Gavrilov · Социальные
Популярные
Google Play Маркет Google LLC · Инструменты
KingRoot KingRoot Studio · Инструменты
Google Account Manager Google · Инструменты
Сервисы Google Play Google LLC · Инструменты
TapTap (CN) Ewan Shanghai Network Technology co.,Ltd · Инструменты
Game Guardian 枫影(尹湘中) · Инструменты
TapTap Global TapTap · Инструменты
APK Editor SteelWorks · Инструменты
FRP Bypass FRP Bypass · Инструменты
Aptoide TV Aptoide · Инструменты
APKCombo Installer
Порядок установки XAPK, APKS, OBB?
Источник: apkcombo.com