что такое rx networks services на андроид
Android и отслеживание местоположения?
Для определения местоположения вы можете использовать как стандартный requestLocationUpdate, так и Fused Location Provider, который является частью api Google play services. Плюсами решения на основе Fused Location Provider является то, что вам не надо самому подыскивать наиболее точный источник координат, он сделает это за вас. Если запускать его с критериями для определения наиболее точного местоположения, то он будет работать по следующему принципу:
1) Если GPS доступен и включен, то выбирается GPS_PROVIDER в качестве источника.
2) Если GPS недоступен то выбирается NETWORK_PROVIDER. В данном случаи координаты определяются при помощи вышек сотовой связи и WIFI.
3) Если не того не другого нет то используется PASSIVE_PROVIDER. Тут система пытается использовать любой способ получить хоть какое-то местоположение в том числе и при использовании акселерометра. Этот провайдер наименее точный.
Так вот Fused Location Provider включает в себя все три и переключается между ними в зависимости от ситуации для получения наиболее точного место положения, так же при его использовании заряд батареи жрется медленнее. Его главными минусами является то, что для его работы необходим Google play services и то, что вы не сможете отследить какой именно тип провайдера используется в данный момент.
Что касается стандартного LocationManager, то вам придется самому определять какой провайдер использовать и переключаться между ними в ручную. В общем все делать ручками. Плюсом является то, что вы полностью контролируете весь процесс.
От себя добавлю что я юзал Fused Location Provider и работает он просто замечательно, главное чтобы его версия была 7 и выше, на 6 давал сильный разброс по координатам.
⛔️Как удалить вирусы и трояны с Андроид
Смартфон сеошнику нужен не только для звонков, так как необходимо работать с мобильными приложениями, без которых работа усложняется. Лично я пользуюсь десятком приложений, среди которых Web Money, Яндекс Деньги, TOTP для Епей и ещё куча всякой всячины. Они позволяют делать платежи вне дома, проверять почту и отслеживать активность на сайте. Большая беда, если на смартфоне завелись вирусы, ведь так могут уплыть данные акков, пароли, да и девайс начинает тупить и брыкаться.
Сегодня я расскажу, как удалить вирусы, трояны со смартфона под управлением Андроид 5. Времени на очистку уйдёт полчаса, после чего за состояние платёжного баланса можно будет не переживать, а девайс перестанет показывать чудеса тупости при серфинге в интернете.
Рождение проблемы
Проблема родилась сразу после Нового Года, когда я с сыном проверял возможности нового смартфона и качал на него разный хлам отовсюду. Первый признак болезни проявился в отказе обновляться по OTA, так как были изменены вирусами системные файлы. Болезнь девайса прогрессировала – при подключении к интернету стали загружаться сами по себе левые приложения, типа AliExpress, процессор от натуги стал перегреваться, а телефон зависать.
В результате на исходе первого месяца жизни пользоваться интернетом без мата стало невозможно, запуск приложений стал мукой и телефону светил полёт в стену, несмотря на гарантию.
Поиск вирусов
Естественно, сидеть сложа руки я не стал и начал искать нечисть на телефоне. Антивирус 360 Total для смартфона разочаровал – при проверке он нашёл 6 опасных файлов, но не показал место их установки и смог только предложить отключить приложения. Удалить он ничего не может из-за отсутствия рут прав. В списке опасных приложений оказались:
В приложениях я нашёл только первые два, остальные удачно маскировались. Нести смарт по гарантии не имело смысла, платить за перепрошивку нового девайса также желания не было. Что же делать, спрашивали глаза у мозга, последний напрягался.
Рабочее решение началось с установки Malwarebytes-anti-malware, дальше пошло по накатанной.
Инструкция по удалению
Для того чтобы полностью удалить все вирусы и трояны на Андроид понадобилось три программы:
Антивирусный сканер Malwarebytes нашёл все вирусы, Kingo позволил получить root-права для удаления, а проводник трояны удалил.
Malwarebytes
Для начала установите Malwarebytes и просканируйте смартфон. Он найдёт всю нечисть, укажет её месторасположение в телефоне и даст краткую характеристику вирусам. Сканер совместим с обычным антивирусом, поэтому перед его установкой ничего удалять не надо. У меня он нашёл в system/priv-app:
Это из того что он не смог удалить в силу отсутствия рут-прав и морального устоя, 4 папки с вредоносным содержимым он сжёг на костре, точно не помню их названия – пепел всё скрыл. Перепишите «координаты» опасных файлов, которые сканер нашёл, но не смог удалить.
Итак, после сканирования вы нашли вирусы, часть из них удалили и знаете точное месторасположение остальных вредоносных файлов. Теперь надо получить рут-права и установить проводник для удаления файлов.
Kingo Root
На моём Андроид 5 удачно стал лишь Kingo Root, поэтому его и рекомендую. Даже хвалённый Bajdo Root не стал. Всё программы, необходимые для удаления вирусов, вы найдёте внизу. Они проверены лично мной, все рабочее и не поломает Андроид.
Перед установкой Kingo рекомендую соблюсти два правила – нормально зарядить телефон и подключиться к сети, так как потребуется загрузка обновлений и установка Super User. Запускаете приложение, нажимаете «получить root» и синеете в ожидании, пока софт устанавливается и обновляется. Есть более сложный способ установки рут-прав с помощью Kingo через компьютер, но не стоит усложнять себе жизнь, когда работает и так.
ES проводник
Получили права? Теперь устанавливайте ES_file_explorer – проводник, способный работать с рут-правами. В проводнике идите в меню (левый верх), ищите вкладку Root-проводник и включайте его. Соглашайтесь с глупыми вопросами от приложения и переходите в пункт меню «Локальное хранилище – устройство».
Остаётся найти вредоносные файлы и удалить их. Выделяем и удаляем.
После удаления вирусов перезагрузите телефон и ещё раз просканируйте его сканером. Если удалили не всё, повторите процедуру для полного выздоровления.
Болезнь требует жертв, так повелось.
Итак, закрепим пройденный материал:
Программу Kingo Root удаляйте сразу после уничтожения вирусов, Super User и ES проводник можете оставить. Если соберётесь в мастерскую на гарантийный ремонт и понадобиться удалить root-права и их следы, то зайдите в меню Super User и воспользуйтесь строкой «удаление root». Если Super User удалили, и у вас остались права рут, которые надо убрать, то ставьте его заново и удаляете права через меню. Иначе до файла SU в system/bin не добраться.
И да, если вы думаете, что у вас на Андроид вирусов нет, но в 90% случаев вы ошибаетесь.
Скачать в одном rar-файле Malwarebytes, ES проводник и Kingo Root можно прямо с блога Zegeberg.
5 приложений для работы с сетью на смартфоне Android
5 приложений для работы с сетью на смартфоне Android
Для Android разработано множество очень полезных инструментов, которые позволяют работать с сетью, сканировать их и анализировать.
1. JuiceSSH — SSH Client — терминальный клиент для Android
Терминальный клиент для Android с поддержкой SSH, Local Shell, Mosh и Telnet.
Возможности:
2. Fing — проверьте безопасность сети Wi-Fi
Fing Network Tools — удобный сканер сети для Android. Приложение через Wi-Fi сканирует сеть и выводит весь список хостов с информацией о производителе сетевого адаптера, IP-адресом и mac-адресом.
Также можно просканировать каждый отдельный хост на наличие сервисов. Приложение пригодиться не только специалистам, с его помощью любой сможет определить, например, не подключились ли посторонние лица к домашней Wi-Fi сети.
Fing включает в себя:
3. NetCut — управление сетевыми подключениями
По сути, NetCut — сетевой сниффер, который может управлять устройствами, подключенными по беспроводной сети к вашему маршрутизатору. Приложение обнаруживает все соединения, разрешенные или иным образом.
Возможности:
P.S. Нужны Root-права для нормального функционирования
4. Network Connections — мониторинг входящего и исходящего трафика
5. Метеор — Тест скорости — проверьте скорость работы вашего устройства
Метеор не только проверяет скорость связи, но и определяет, насколько эффективно популярные приложения будут функционировать при этой связи.
Спасибо, что читаете! Подписывайтесь на мои каналы в Telegram, Яндекс.Мессенджере и Яндекс.Дзен. Только там последние обновления блога и новости мира информационных технологий.
Респект за пост! Спасибо за работу!
Хотите больше постов? Узнавать новости технологий? Читать обзоры на гаджеты? Для всего этого, а также для продвижения сайта, покупки нового дизайна и оплаты хостинга, мне необходима помощь от вас, преданные и благодарные читатели. Подробнее о донатах читайте на специальной странице.
Заранее спасибо! Все собранные средства будут пущены на развитие сайта. Поддержка проекта является подарком владельцу сайта.
Троянское приложение для Android обходит проверки Google Bouncer
Аналитики ESET обнаружили интересный метод скрытной атаки на пользователей Android, который содержит в себе интересную особенность. В магазине приложений Google Play нам удалось обнаружить несколько приложений, которые маскировались под легитимные, но на самом деле содержали в себе другое приложение с вредоносными функциями. Это встроенное приложение называлось systemdata или resourcea.
Это второе приложение скрытно сбрасывается в память устройства из первого, но спрашивает у пользователя разрешение на установку. Оно представляется в качестве инструмента для управления настройками устройства «Manage Settings». После своей установки, приложение работает как служба в фоновом режиме.
Антивирусные продукты ESET обнаруживают приложения, которые содержат в себе это дополнительное приложение как Android/TrojanDropper.Mapin. Согласно нашим данным, на долю Индии приходится наибольшее количество заражений устройств Android этим вредоносным ПО.
Вредоносная программа представляет из себя бэкдор, который получает контроль над устройством и включает его в состав ботнета. Бэкдор использует специальный внутренний таймер для отложенного исполнения своей полезной нагрузки. Таким образом, авторы могут обмануть различные автоматические системы анализа файлов, которые могут причислить файл к подозрительным из-за его поведения. В некоторых случаях, бэкдор может ждать три дня прежде чем активировать полезную нагрузку. Скорее всего, такая мера позволяет авторам обойти механизмы проверки инструмента анализа файлов Google Bouncer, используемый Google для проверки загружаемых в Play приложений.
После активации полезной нагрузки, троян запрашивает права администратора в системе и начинает взаимодействовать со своим C&C-сервером. Android/Mapin содержит в себе различные функции, например, отображение пользователю различных уведомлений, загрузка, установка и запуск других приложений, а также получение личной информации пользователя на устройстве. В то же время, основной его функцией является отображение fullscreen-рекламы на зараженном устройстве.
Вредоносные приложения были размещены в магазине приложений Google Play в конце 2013 г. и в 2014 г. Названия приложений были различными, включая, «Hill climb racing the game», «Plants vs zombies 2», «Subway suffers», «Traffic Racer», «Temple Run 2 Zombies», «Super Hero Adventure» разработчиков TopGame24h, TopGameHit и SHSH. Точные даты загрузки приложений были 24-30 ноября 2013 г. и 22 ноября 2014 г. Согласно статистике ресурса MIXRANK, приложение Plants vs zombies 2 было загружено более 10 тыс. раз перед его удалением из магазина. В то же самое время, приложения «System optimizer», «Zombie Tsunami», «tom cat talk», «Super Hero adventure», «Classic brick game», а также вышеупомянутые приложения Google Play с вредоносными возможностями, были загружены в альтернативные магазины приложений Android теми же авторами. Такой же бэкдор был обнаружен в комплекте с другими приложениями, которые были загружены в магазин разработчиком PRStudio (не путать с prStudio) в альтернативные магазины приложений со ссылками на Google Play. Данный разработчик загрузил как минимум и пять других троянских приложений в альтернативные магазины приложений: «Candy crush» или «Jewel crush», «Racing rivals», «Super maria journey», «Zombie highway killer», «Plants vs Zombies». Эти приложения все еще доступны для скачивания из этих магазинов. Перечисленные приложения были загружены пользователями сотни раз.
Рис. Значки вредоносных приложений.
Рис. Вредоносное приложение, которое получило достаточно положительных оценок.
Рис. Еще одно приложение, получившее положительные оценки.
Существуют различные варианты исполнения вредоносной программы после того, как пользователь загрузил нелегитимное приложение. Один из вариантов предполагает, что жертве будет предложено запустить файл с вредоносной программой спустя 24 после первого исполнения загруженного приложения. Такой метод является менее подозрительным для пользователя, который считает, что запрос на запуск поступил от ОС. Другой метод подразумевает под собой выдачу мгновенного запроса пользователю. Оба варианта рассчитаны на срабатывание после изменения подключения к сети, для этого вредоносная программа регистрирует т. н. broadcast receiver в манифесте.
Рис. Регистрация т. н. broadcast receiver.
После изменения подключения, пользователю будет предложено установить «системное приложение». Само сброшенное на устройство вредоносное приложение может называться «Google Play Update» или «Manage Settings».
Рис. Вредоносное приложение маскируется под системное.
В том случае, если пользователь выбирает отмену установки, то вредоносная программа будет показывать запрос каждый раз при смене сетевого подключения. Можно предположить, что простой пользователь будет уверен в серьезности отображаемого уведомления и в какой-то момент, скорее всего, нажмет кнопку установки только чтобы избавиться от него. После запуска троян исполняется в качестве сервиса со своим зарегистрированным broadcast receiver, ожидая изменения подключения.
Когда такое изменение произойдет, троян попытается зарегистрировать себя с помощью сервиса Google Cloud Messages (GCM) для последующего получения сообщений. После этого, Android/Mapin попытается зарегистрировать зараженное устройство на сервере злоумышленников, отправляя туда такую информацию как имя пользователя, аккаунт Google, IMEI, регистрационный идентификатор (ID) и название своего пакета приложения.
Рис. Процесс регистрации устройства на сервере злоумышленников.
Для того, чтобы исключить возможность своего удаления из системы, троян требует от пользователя активировать режим администратора устройства.
Рис. Предложение пользователю об активации режима администратора устройства.
Троян сообщит на удаленный сервер об успешности активации режима администратора устройства. Как только такая операция произойдет, вредоносная программа будет показывать пользователю рекламу в полноэкранном режиме (interstitial). Такая реклама (interstitial ad) будет отображаться пользователю заново каждый раз при смене подключения. Разработка такого типа рекламы возможна с использованием легитимного AdMob SDK.
Рис. Full-screen реклама (interstitial ad).
Троян взаимодействует со своим управляющим сервером используя сервис Google Cloud Messaging (GCM). Этот сервис все чаще используется современными вредоносными программами для своих целей, через него злоумышленники могут инструктировать бот на выполнение нужных им действий.
Рис. Обрабатываемые ботом команды.
Не все функции вредоносной программы полностью реализованы в ее коде, кроме этого, не все уже реализованные функции используются. Возможно, что сама угроза все еще находится на уровне разработки и будет улучшена в будущем. Как мы уже упоминали, ее основная цель заключается в доставке агрессивной full-screen рекламы для ее отображения пользователю, маскируясь под системное приложение. Бот также может быть использован злоумышленниками для установки другого вредоносного ПО на скомпрометированное устройство.
Кроме показа рекламы, список выполняемых им вспомогательных функций достаточно обширен: изменение идентификатора publisher ID отображаемой рекламы, загрузка и запуск других приложений, отображение уведомлений пользователю, отключение режима администратора устройства, изменение адреса управляющего C&C-сервера, создание на домашнем экране Android ярлыков, которые ведут на URL-адреса загрузки приложений. После исполнения каждой задачи, полученной с помощью GCM, бот будет информировать об этом удаленный сервер с использованием протокола HTTPS.
Троянская программа была успешно загружена в магазин Google Play, поскольку содержала в себе механизм отложенной активации вредоносных функций и, таким образом, не вызвала к себе подозрений со стороны инструмента Bouncer. Интересным вопросом является и то, почему Bouncer не специализируется на статическом анализе исполняемых файлов внутри загруженных приложений. По этим причинам троянская программа свободно распространялась пользователям через официальный магазин приложений Google для Android. Вредоносная игра «Super Hero adventure» была загружена в Play Store разработчиком SHSH. Вполне возможно, что этот разработчик загрузил больше приложений в магазин Play. В конечном счете, все они были удалены из магазина, но оставались незамеченными там в течение полутора лет. Возможно, что подобные случаи стали причиной того, что в марте 2015 г. Google объявила о том, что все приложения и обновления должны проходить проверку со стороны человека.
Лучшей практикой для поддержания своего устройства в безопасности является использование только официального магазина приложений для их загрузки. Кроме этого, необходимо уделять внимание отзывам и комментариям пользователей к размещаемым там приложениям. При установке приложения следует внимательно следить за запрашиваемыми приложением правами. Если вы заметили что-либо подозрительное в поведении приложения, его можно отправить в качестве образца в антивирусную лабораторию с соответствующими комментариями о причинах отправки.
Ниже представлена информация о проанализированных нами образцах вредоносной программы.
Погружение в службы Android
Перевод статьи «Deep Dive into Android Services» от Nazmul Idris. Я оставил оригинальное название автора, хотя это скорее не «погружение», а «знакомство». Думаю, текст будет полезен начинающим разработчикам. Статья отлично дополняет офф. документацию по службам на Android. В статье разбираются особенности взаимодействия с запущенными и привязанными службами. Плюс статьи в том, что учитываются изменения в работе со службами в Android O. В переводе есть незначительные, по сравнению с оригиналом, изменения, добавленные для пущей ясности.
Введение
Большинство современных android-приложений выполняют часть задач в фоне. Это означает, что задачи выполняются в фоновом потоке, а не в потоке пользовательского интерфейса (UI-поток).
В этом случае служба (service) это подходящий компонент Android, который свяжет жизненный цикл потока со своим жизненным циклом, и таким образом не потеряет его.
Служба — это компонент android-приложения без видимого интерфейса, который запускается в основном потоке приложения. Служба должна быть объявлена в манифесте. Если вам необходимо чтобы служба работала в фоновом потоке, вы должны самостоятельно реализовать это.
Термины фон и передний план перегружены, и могут применяться к:
В этой статье, по умолчанию будем считать, что термины фон и передний план относятся к жизненному циклу. Но, когда будет идти речь о потоках, мы будем явно говорить фоновый поток или поток переднего плана.
Потоки, службы и жизненный цикл компонентов Android
Ниже приведены пояснения к основным временным моментам этой диаграммы Гантта. Детали этих моментов (и пояснения к ним) приведены в остальной части статьи.
Метод службы onCreate() вызывается в момент ее создания (путем запуска или привязки к ней).
Метод службы onDestroy() вызывается системой только когда вы сообщили службе, что пришло время завершать работу. Служба не знает, что будет происходить в коде ваших Thread или Executor — это зона вашей ответственности. Таким образом, задача программиста сообщить службе о начале и о завершении работы.
Службы делятся на два вида: запущенные и привязанные. Кроме того, служба может быть запущенной и допускать привязку. Мы рассмотрим каждый из случаев:
Изменения в Android O
Запущенные службы
Чтобы служба стала запущенной, вы должны вызвать startService() с явным намерением. Если вы не сделаете этого, тогда служба не перейдет в запущенное состояние. И, таким образом, она не сможет перейти на передний план, и stopSelf() на самом деле ничего не выполнит.
Итак, если вы не перевели службу в запущенное состояние, вы не сможете прикрепить ее к уведомлению. Это довольно важные вещи, о которых вы должны помнить, когда вам нужно перевести службу в запущенное состояние.
Intent
Передний план и механизм постоянного уведомления
Запущенная служба может работать на переднем плане. Опять же, термин передний план не относится к тому работает ли служба в фоновом потоке или в главном потоке. Но это означает, что система присвоит службе наивысший приоритет, и поэтому служба не является кандидатом для удаления системой в случае нехватки памяти. Помещать службу на передний план стоит только в том случае, когда это действительно необходимо для создания современного и отзывчивого приложения.
Примеры использования службами переднего плана:
Когда запущенная служба помещается на передний план, она должна вывести на экран уведомление, явно сообщая пользователю, что служба работает. Это важно, потому что запущенная служба на переднем плане отделена от жизненного цикла UI-компонентов (за исключением, разумеется, самого постоянного уведомления). И нет другого способа сообщить пользователю о том, что на его телефоне что-то работает (и потенциально потребляет много ресурсов) кроме как вывести в UI постоянное уведомление.
Ниже пример старта запущенной службы на переднем плане:
Вот код создания постоянного уведомления в версиях
Кроме того, вот еще одна статья, в которой больше деталей о создании уведомлений в MediaStyle (поскольку для фонового проигрывания аудио-файлов нужны как уведомления, так и привязанные и запущенные службы)
Остановка запущенных служб
Это объясняет почему метод onStartCommand() должен уметь обрабатывать Intent ы. Используя этот механизм мы можем «сказать» службе, чтобы она остановила работу. Ниже код, который иллюстрирует эти возможности:
Чтобы остановить службу вы можете выполнить одно из следующих действий:
Вот несколько примеров остановки службы из Activity :
И вот код в вашей службе, который будет обрабатывать эти запросы (при условии, что ваша запущенная служба находится на переднем плане):
Привязанные службы
Отличия между привязанной и запущенной службами:
В любом случае, когда службе (привязанной или запущенной) необходимо отправлять сообщения привязанному клиенту, ей следует использовать что-то вроде LocalBroadcastManager (в том случае, если клиент и служба работают в одном процессе). Привязанные службы обычно не подключаются к привязанному клиентскому компоненту напрямую.
bindService() и onCreate()
Ниже приведен пример реализации ServiceConnection :
Привязка службы
Отвязка от службы и вызов onDestroy()
Вот как выглядит вызов unbindService() в клиентском компоненте:
Вот пример как может выглядеть onUnbind() в коде привязанной службы:
Привязанные и запущенные службы одновременно
Бывают ситуации, когда вам могут пригодиться службы, которые являются запущенными и вместе с тем могут допускать привязку. В предыдущих разделах, мы показали особенности работы каждого из видов служб. И уже из этих особенностей можно понять, что создание привязанных и запущенных служб одновременно необходимо для реализации особого поведения в момент начала работы со службой и при завершении работы с ней.
Если служба не запущена, то клиент, который хочет привязаться к ней, вызовет onCreate() у службы. Если служба уже запущена, этот метод не вызывается. С другой стороны, если клиент отвязывается от службы и при этом служба не запущенная, то вызывается onDestroy() и служба уничтожается.
Переход в запущенное состояние
Поскольку клиент, привязываясь к службе, не переведет ее в запущенное состояние, то для привязанных и запущенных служб одновременно, требуется чтобы служба переходила в запущенное состояние самостоятельно. Вот, как можно это сделать с учетом Android O:
В коде под спойлером:
Но, перед фактическим исполнением работы, служба сначала переводит себя в запущенное состояние.
Завершение работы службы и отвязывание
Если служба не в запущенном состоянии и клиентский компонент отвязывается от службы, то служба уничтожается и вызывается onDestroy()
Вот диаграмма, в которой суммируются состояния службы и переходы между ними для запущенной и привязанной службы одновременно:
Примеры
Реализацию большинства из того, о чем говорилось в статье, можно глянуть на GitHub.
Это небольшая утилита для Android O и N, которая держит телефон в активном состоянии, если он на зарядке.