Elm agent что это за программа на андроид
Это вторая часть серии статей об архитектуре android приложения vivid.money. В ней мы расскажем в деталях о том, что из себя представляет ELM архитектура. В связи с тем, что наша реализация доступна в open source в качестве библиотеки Elmslie, в статье будет использоваться нейминг из нее.
Оглавление
Вступление
Одной из основных проблем в разработке мобильных приложений с использованием MVP/MVVM/MVC паттернов становится раздутие презентеров. Часто в них скапливается абсолютно все управление асинхронной работой и состоянием приложения. С течением времени, усложнением логики и общим ростом кодовой базы их становится невероятно трудно менять. А понимание того что происходит в написанном другим разработчиком презентере может стать непосильной задачей и исправление багов лишь привносит больше новых ошибок.
О чем эта статья?
ELM архитектура достаточно общее решение, для которого есть множество применений. Однако, чтобы упростить понимание, опишем ее на примере реализации слоя представления. Разобравшись с поведением архитектуры на простом примере, можно поискать и другие применения.
Место ELM в архитектуре
Представьте, что мы проектируем архитектуру с нуля. Конечно, на момент написания статьи результат уже известен. В каждый момент времени можно было бы принять и другое решение, выделить другие детали или решить проблему по-другому. Такой способ изложения выбрал исключительно для упрощения понимания.
В описании мы не будем останавливаться на модели, рассказывать о том как писать бизнес-логику, делать запросы к API. Про организацию кода во View тоже не будет ни слова, эти моменты остаются на ваше усмотрение.
Слой представления снаружи
Когда мы рассматриваем слой представления в контексте разработки мобильных приложений, мы представляем экраны и способы их написания. Архитектура описывает то, как построить реализацию одного экрана. Попробуем сформулировать набор требований к тому, как будет устроено взаимодействие со слоем представления одного экрана в общем случае.
Требования к слою представления
Любой слой представления должен общаться с моделью. Нам придется обращаться с бизнес логикой, делать запросы к Api, сохранять данные в кеш и так далее. Представим это на диаграмме как возможность Store обращаться к модели, получать из нее данные и запускать операции.
Взаимодействие с View устроено немного сложнее. У него есть три составляющие:
В пользовательском интерфейсе происходят события - нажатия на кнопку, прокрутка списка, pull-to-refresh и другие. Назовем их Event.UI.
У экрана есть некоторое состояние. В него может входить информация о том, показывается ли сейчас состояние загрузки, данные для отображения в списке или текущее положение toggle switch. Все это включим в термин State.
Слой представления не только имеет состояние, но еще и может отдавать команды View. Например нужна возможность показать Toast, Snackbar или перейти на другой экран. Все это не получится описать в State, поскольку в нем хранится информация, а требуется представить некоторое действие. Для этого выделим отдельную сущность - Effect.
А теперь внутри
В предыдущем разделе мы описали поведение Store снаружи, то как оно выглядит для внешнего наблюдателя или пользователя. Теперь попробуем описать то, что происходит внутри него:
Обработка событий в пользовательском интерфейсе (Event.UI)
Изменение состояния экрана (State)
Запуск операций в UI (Effect)
Получение данных из модели
Запуск операций в модели
Все эти вещи можно разделить на две группы, которые мы объединили в две сущности - Actor и Reducer
Разделение работы экрана
Опишем сущности, которые у нас получились:
Actor
Схема работы Actor
В Actor находятся все асинхронные операции, вычисления и работа с моделью. Опишем это с помощью Command, которая в общем случае запускает некоторую операцию и Event, который вернет результат этой операции.
Выполнение запроса к API
Запуск таймера на выполнение операции
Reducer
Схема работы Reducer
По сути в Reducer осталась вся логика работы экрана. Он знает о текущем состоянии экрана, узнает о происходящих событиях и вычисляет реакцию на них. События могут приходить из UI и из Actor, как результат работы операции. Реакция состоит из Effect - команды для UI, State текущего состояния для отрисовки на экране и Command - запуска операции в Actor
При Event - нажатие на кнопку загрузки в State выставится флаг isLoading на true и запустится Command - сделать запрос к API
При Event - произошла ошибка при загрузке данных в State выставится флаг isLoading в false и отправится Effect - показать ошибку в UI
Отличным качеством Reducer является то, что его можно реализовать не используя асинхронных операций. Его можно представить как pure function. То есть функцией, которая не создает побочных эффектов и всегда выдает одинаковый результат для одних и тех же входных данных.
Result
Комапоненты Result
Выделим так же отдельную сущность, которая будет представлять ту самую реакцию Reducer на Event и назовем ее Result.
Effect - команды для UI
State - текущее состояния экрана
Command - команды запуска операций в Actor
Собираем все вместе
Если объединить все эти компоненты получится примерно следующая картина:
Внутренности Store
View и Actor являются источниками событий. Это представлено в виде Event. События разделяются по типу источника, для View это Event.Ui, а для Actor это Event.Internal. События побуждают изменения состояния экрана, одиночные эффекты, а также запуск асинхронных операций. Состояние экрана представлено State, которое доставляется View для отрисовки. Одиночные эффекты обозначены как Effect и так же обрабатываются View. Actor в свою очередь работает с моделью, запускает операции и получает из нее данные. А Store связывает все это вместе.
Как это работает?
Далее на GIF диаграммах схематично представлена работа простого экрана. Слева - UI, в центре то что происходит в ELM, справа - текущий State экрана.
Сценарий успешной загрузки
Разберем сценарий, когда при нажатии на кнопку значение успешно загружается и отображается в UI.
Пользователь нажимает на кнопку Reload
UI отправляет Event.UI обозначенный CLICK
CLICK приходит в Reducer
Результатом работы Reducer становится изменение isLoading на true в State и отправка Command обозначенная как LOAD
Из-за изменения State в UI отрисовывается текст LOADING.
В Actor выполняется Command загрузки данных - LOAD
Результатом выполнения команды становится Event.Internal со значением VALUE
Reducer обрабатывает событие VALUE и изменяет в State у поле value значение на 123, а у поля isLoading на false
В UI отрисовывается текст VALUE = 123
Сценарий неуспешной загрузки
А теперь неуспешной
Разберем сценарий, когда при нажатии на кнопку значение не получается загрузить, после чего показывается Snackbar с ошибкой.
Пользователь снова нажимает на кнопку Reload и отправляется Event.UI обозначенный CLICK
CLICK приходит в Reducer
Результатом работы Reducer становится изменение isLoading на true в State и отправка Command обозначенная как LOAD
Из-за изменения State в UI отрисовывается текст LOADING.
В Actor выполняется Command загрузки данных - LOAD
Результатом выполнения команды становится Event.Internal со значением ERROR
Reducer обрабатывает событие ERROR и изменяет в State значение у поля isLoading на false, а также отправляет Effect под названием ERROR
UI обрабатывает Effect обозначенный ERROR и показывает Snackbar с ошибкой
В итоге
ELM архитектура пришла из веба и пока не столь популярна в мобильном сообществе. Однако она определенно заслуживает внимания, наравне с более привычным MVI, благо в них не так много различий. По сравнению с популярными MVP и MVVM она удобнee в тестировании, позволяет писать более простой код и лучше масштабируется. Подробнее о причинах нашего выбора ELM архитектуры мы рассказывали в предыдущей части серии.
Поскольку существующие реализации ELM показались нам недостаточно лаконичными и простыми в использовании мы создали Elmslie. Мы постарались вобрать достоинства существующих реализаций, максимально упростив написание кода. В следующей части мы расскажем о том, как пользоваться нашей библиотекой.
Всем привет Вот купили вы смартфон, ну и вот разбираетесь в нем, смотрите его там.. Ну и вот видите непонятные программы, их у вас может быть несколько и вот среди них вы можете заметить ELM Agent. Я сегодня постараюсь рассказать что это за приложение, несет ли оно опасность ну и вообще, нужно ли оно или стоит удалить? Значит первое что нужно сказать, это то, что ELM Agent это не вирус, то есть прога не опасная.
Блин, но в конце концов что же такое это ELM Agent (com.sec.esdk.elm)? Ну ребята, блин, вы думаете я вот знаю что это но не хочу писать вам, верно? Это не так ребята. В интернете инфы ОЧ МАЛО ВООБЩЕ НЕ НАЙТИ, я копаю зарубежный интернет и вот что узнал. ELM Agent расшифровывается как Emulated Legacy Mount Агент. То есть эмуляция чего-то, вроде какой-то многопользовательской поддержки. Согласен, понятного тут мало, спору нет..
Узнал на другом сайте, что ELM Agent можно заморозить, то есть можно сделать вывод что смартфон и без этого приложения будет работать нормально.
Данное приложение часто можно заметить именно на смартах от Самсунга
Вот еще узнал, что вроде бы просто так ELM Agent НЕ ЗАМОРОЗИТЬ, ну то есть через стандартный диспетчер не получается это сделать. Советуется использовать титан какой-то..
Вот кстати нашел картинку, да, тут видно плохо, извините, но тут написано что ELM Agent это служебное приложение, смотрите:
Один чел написал, что он отключил ELM Agent и это отключение не повлияло на стабильную работу телефона
Вот нашел еще одну картинку, так бы сказать в тему, здесь показаны свойства ELM Agent:
Но вот некоторые пользователи пишут что у них кнопка Деактивация (Deaktivieren) неактивна, ну то есть она не работает. Вроде это потому что прога системная.. Кстати наверно поэтому ее и можно удалить только при помощи root-доступа…
А вот еще кое что нашел! Один чел на форуме 4PDA пишет, что ELM Agent это сервис для отправки отчетов о багах и ошибках, сами отчеты отправляются видимо на сервера Самсунга, ну что-то типа такого. И вот он еще пишет что отключать ELM Agent можно ТОЧНО!
Не знаю что на этой картинке показано, ну то есть что именно, но все таки оставлю ее здесь:
Так ребята, кое что еще узнал: ELM Agent отвечает за поддержку многопользовательского режима. Если смартфоном пользуетесь только вы, то ELM Agent не несет никакой пользы. Не могу быть уверенным в достоверности инфы, но реально похоже на правду
Кстати ребята ELM Agent особо батарею ВРОДЕ БЫ не кушает, только один чел писал об этом, но больше упоминаний я не нашел… Ну это так, просто вам к сведенью..
Ну вот и все ребята, что смог, то нашел и написал, собрал инфу со всех уголков интернета. Надеюсь данная заметка была вам полезной, если что не так, ну тогда извините! Удачи
Всем привет Поговорим о том что такое KLMS Agent (com.samsung.klmsagent), моя цель сегодня как всегда проста, это собрать максимум инфы о KLMS Agent и написать все это здесь так, чтобы вам было сразу все понятно. Ну что, начинаем, пошел я значит копать интернет… Ну и как всегда ребята, инфы оч мало и приходится сложно. Значит о том что такое KLMS Agent я пока ничего не нашел кроме того, что данное приложение относится к KNOX. Ничего не остается мне как узнать что такое KNOX. Пошел копать..
Ну и вот что я узнал, короче вся эта тема идет от фирмы Самсунг. Но что такое KNOX? Значит как говорит сама компания Самсунг, KNOX это мобильное решение для работы предприятий. Звучит громко и немного бредово. Читаю дальше, пишется что KNOX это типа решение для усиления безопасности Андроида, типа защита от каких-то сбоев и несанкционированного доступа к данным. Короче ребята, там еще кое что написано, но поверьте мне, что все это вам интересно не будет. Одним словом KNOX это какое-то фирменное ПО от Samsung для безопасности данных. Не знаю нужное ли это все, однако факт того что умельцы делают прошивки где полностью выпиливают KNOX из системы как бэ намекает…
Компания Самсунг вроде думает как сделать так чтобы KNOX нельзя было выпилить из телефона..
Ага ребята! Вроде все стало понятно. Короче KNOX это такая штука которая обеспечивает безопасную работу приложений, которые используются на предприятиях. Короче все, делаем вывод: KNOX относится к безопасности. Мало того, не знаю правда это или нет, но вроде бы KNOX будет платным или уже есть.. Еще есть такая инфа что даже министерство обороны США будет использовать KNOX, тут даже не знаю что сказать, все так серьезно…
Вот я нашел картинку, это сведенья о приложении KLMS Agent, тут версия идет 1.5 (у вас может быть другая):
Тут можно было бы остановить приложение ну или отключить, но как видите кнопки для этого тут не активны. У вас может быть активны, но наверно тоже неактивны. Галочку вроде тоже снять нельзя, ну чтобы не было уведомлений. То есть могу предположить, что для того чтобы отключить KLMS Agent, нужно иметь root-доступ, ну а это требует уже неких знаний. Root-доступ это не шутки, нужны знания
Хм, на форуме 4PDA нашел интересную инфу. Получается что KNOX это не совсем как бы относится к безопасности. Я не буду писать своими словами что я там прочитал, лучше вы это тоже сами почитайте, весьма познавательно, вот что пишет по этому поводу юзер KlonDike на форуме:
Есть сведенья что к KNOX относится не только KLMS Agent но и ELM Agent, во как
Нашел еще одну инфу на форуме 4PDA, вот можете сами посмотреть что пишет юзер под ником Муррр:
Еще может быть такое, что откроется KLMS Agent и там будет запрос о том что вы соглашаетесь с тем что KNOX будет следить за безопасностью устройства, хм хм…
Как я вроде понимаю, то если KNOX удален, то KLMS Agent ничего не делает, то есть можно удалить и его, но я не знаю возможно ли вообще это.
Также узнал что через KLMS Agent могут некоторые программы получать какую-то лицензию.
Короче такие дела ребята. Запарился искать инфу которой нет. KLMS Agent это от KNOX идет и я думаю что удалять нет смысла, ибо если вы простой юзер, то просто так вы не удалите. А чтобы грамотно удалить KNOX и все что касается этого то нужно быть ну я думаю спецом, понимаете? А то если не знаете и будете делать, просто можете напартачить и телефон еще не включиться, ну мало ли, короче я вас предупредил…
Вот нашел интересную картинку, тут показана корзина (Recycle bin):
И вот в этой корзине как видите есть KNOX, Knox Notification Manager, KNOX SetupWizardClient.. То есть у кого-то это получилось все таки удалить
Ребята, кстати, вот что еще хочу вам сказать. Вообще существуют так называемые кастомные прошивки, где уже много ненужного выпилено, вот такую прошивку можно поставить на смартфон, в теории сам смарт даже работать должен быстрее (наверно). Но опять же чтобы поставить прошивку самому нужно немного шарить в этом деле, а то можно натворить делов то..
А вот вся семейка KNOX в сборе:
А тут их еще больше…, это вообще капец:
Ну что ребята, будем заканчивать. Надеюсь что вам тут все было понятно, ну а если что не так, прошу простить, я знаю что написал инфы мало, но блина ее вообще нету. Удачи вам и всех благ
Всем привет Поговорим мы сегодня о такой программе как DevID Agent, что смогу то о ней я расскажу и надеюсь что вы сможете понять, нужна вам эта прога или нет. Значит DevID Agent это прога для того чтобы найти драйвера на устройства автоматически, через интернет, также прогу можно использовать для обновления уже установленных драйверов. Эту инфу я прочитал на официальном сайте, но так ли это на самом деле, то это нам еще предстоит выяснить
Вы наверно знаете эту ситуацию, ну или не знаете, я ее все равно расскажу. Вот например вы купили какое-то устройство, вы знаете модель, но не точную, и при этом у вас драйверов нет, что в таком случае делать? В таком случае нужно брать ИД устройства и искать в поисковике драйвера. Да, так делать можно, но все таки это немного геморойно, согласитесь. Вот чтобы этого не делать руками, то вот для этого дела и была придумана прога DevID Agent
В общем ребята, я скачал эту прогу с официального сайта, кстати вот он:
В общем запускаю установщик, появляется такое окошко:
Ну это такая виндовская безопасность, у вас такого окошка вообще может не быть. В общем нажал я в этом окошке на кнопке Запустить, после чего появилось такое окошко, тут нужно нажать Next:
Потом будет окошко, где будет написано, куда именно установится прога. Знаете, это место, куда будет ставится прога, то изменять его я без необходимости не советую. В общем нажимаете на кнопку Install:
После этого прога DevID Agent уже установится, будет написано Completed, нужно будет снова нажать на Next:
Все, потом уже последний шаг, это нажать кнопку Done:
И если вы галочку с Run DevID Agent не снимали, то прога сама автоматически запустится. Вот у меня она и запустилась, смотрите как она выглядит:
Значит тут написано, что прога бесплатная, это очень хорошо, также есть кнопка Задать вопрос, она в самом вверху, если ее нажать, то появится вот такая вот форма и тут можно написать сам вопрос:
Только смотрите, там внизу есть еще галочка, если ее не снять, то будет отправлен также и скриншот вашего экрана.. Не волнуйтесь, это я так понимаю нужно для того, чтобы разработчикам было легче понять в чем дело. Но если что, то вы спокойно можете эту галочку снять..
Значит у меня вроде все с драйверами нормально, установлены все драйвера, но ради интереса я все таки нажму кнопку Начать поиск:
Ну и потом уже понятное дело что начался поиск, вот так будет идти отображение процесса, смотрите:
Ну а потом я увидел, что было найдено три устройства, одно из них было вообще без драйверов, а остальные два, то у них типа стояли старые драйвера, ну вот, смотрите:
Первое что мне тут понравилось, это то, что тут написано все четко и нет никакой ерунды. В общем ну если нашла прога нужные драйвера, то давайте я их все таки установлю, нажимаю короче на Установить выбранные:
Ну и все, потом уже пошла установка:
Потом еще выскочило такое окошко:
Честно ребята, я не знаю что тут написать, вернее как правильно написать.. Короче это означает что драйвер там какой-то неподписанный, в принципе да, тут есть немного опасности. Но с другой стороны я не думаю что прога DevID Agent какая-то вирусная или косячная, думаю что просто дело в драйвере, но если его прога предлагает установить, то я его таки установлю, короче я в окошке выше, то я там нажал на Все равно установить этот драйвер. После этого у меня появилось еще одно окошко, тут уже пишется, что не удалось установить этот драйвер, ну капец! Короче еще предлагается другим способом поставить драйвер, ну что же ребята, давайте попробуем, нажимаю я в этом окошке Yes:
Как видите, тут пишется что мол драйвера успешно установились, но вот некоторые установлены с ошибками, вот такой прикол ребята.. И еще пишут, что мол сделайте перезагрузку и попробуйте повторить. В этом окошке я нажал Yes и после этого пошла перезагрузка…
После перезагрузки никаких ошибок в винде не было, все работало как обычно. Я для интереса снова запустил прогу DevID Agent, снова нажал на кнопку Начать поиск, и уже показалось только одно устройство, кстати это сетевая карта и вот у нее типа старый драйвер стоит, а прога нашла новый. Я попробовал установить, но потом опять была ошибка, то есть вот именно с этим устройством у меня и проблема, на него не хочет ставиться новый драйвер! Но ребята, на самом деле, я думаю что это дело не в проге, а в моем устройстве, ну то есть в сетевой карте. Я просто прогу вам показываю то не в обычном компе, а в виртуальном, ну это типа специальный комп для тестов и всяких экспериментов. Может в нем где-то есть глюк.. Короче такие дела ребята, сама прога DevID Agent мне очень понравилась, работает четко, комп не грузит, и вообще, как мне кажется что это годная прога
Значит что я еще могу сказать вам? Работает прога под таким процессом как DevidAgent3.exe, вот он в диспетчере задач:
Запускается процесс вот из этой папки:
C:\Program Files (x86)\DevID Agent
Ну и теперь ребята я вам покажу как удалить DevID Agetn с компьютера полностью, ну вдруг вам эта прога окажется ненужной то.. Значит смотрите, зажимаете кнопки Win + R, появится окошко Выполнить, туда вы пишите такую команду:
Нажимаете потом ОК и после этого у вас запустится окно Программы и компоненты, в этом окне у вас будет список всех установленных программ. Вот тут вам нужно найти DevID Agent, нажать правой кнопкой и выбрать Удалить:
Дальше появится такое маленькое окошко, тут пишется, а вы это реально хотите удалить? Ну, если вы не передумали, то нажимаете тут Да:
Ну ребята, прикол или нет, это такое, я не знаю, но блин, я нажал там в окошке Да, и вот после этого сразу выскочило окошко, что мол прога уже удалилась, и еще написано что успешно, ну вот, смотрите сами:
Короче так быстро удаляется прога, что даже непривычно! Знаете что я потом подумал? Ну прога качественная, ну и что тут такого что она быстро удалилась.. Но не все так просто тут ребята, дело в том, что я потом поискал на системном диске файлы, в имени которых упоминается слово devid.. Ну и что бы вы думали? Я был очень удивлен, ибо вот в этой папке:
C:\Program Files (x86)
Была папка DevID Agent и я не совсем понимаю, почему она там была, если я прогу удалил? Ну вот смотрите сами, вот это результаты поиска:
Ну не прикол, а? Капец капецкович! Вы на DevID_Agent_Installer.exe не смотрите, это просто установочный файл, я знал что он останется, ибо я его вручную скачал. ну короче я перешел в эту папку, ну то есть в C:\Program Files (x86)\DevID Agent и вот что я там увидел:
И все ребята, папка благополучно удалилась. Потом для надежности я снова поискал следы проги на системном диске, но ничего уже не нашел кроме самого установщика:
Короче ребята вот такие пироги. Нет, я все равно думаю что прога DevID Agent хорошая, дело в том, что я не написал, но эта прога, это как приложение к сайту devid.info, где можно скачать драйвера, сам сайт вполне хороший и качественный. Вот поэтому я думаю что и прога DevID Agent у них тоже качественная, ну а то что папка осталась, ну это такой косяк какой-то странный. Может быть дело вообще в моей винде? Не знаю ребята, не знаю…
На этом все ребята, надеюсь что вам тут все было понятно, ну а если что-то не так, то вы уж извините. Удачи вам в жизни и чтобы вы были счастливы
Аналитики 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 в манифесте.
После изменения подключения, пользователю будет предложено установить «системное приложение». Само сброшенное на устройство вредоносное приложение может называться «Google Play Update» или «Manage Settings».
Рис. Вредоносное приложение маскируется под системное.
Рис. Процесс регистрации устройства на сервере злоумышленников.
Для того, чтобы исключить возможность своего удаления из системы, троян требует от пользователя активировать режим администратора устройства.
Рис. Предложение пользователю об активации режима администратора устройства.
Троян сообщит на удаленный сервер об успешности активации режима администратора устройства. Как только такая операция произойдет, вредоносная программа будет показывать пользователю рекламу в полноэкранном режиме (interstitial). Такая реклама (interstitial ad) будет отображаться пользователю заново каждый раз при смене подключения. Разработка такого типа рекламы возможна с использованием легитимного AdMob SDK.
Рис. Full-screen реклама (interstitial ad).
Сетевое взаимодействие
Троян взаимодействует со своим управляющим сервером используя сервис Google Cloud Messaging (GCM). Этот сервис все чаще используется современными вредоносными программами для своих целей, через него злоумышленники могут инструктировать бот на выполнение нужных им действий.
Рис. Обрабатываемые ботом команды.
Не все функции вредоносной программы полностью реализованы в ее коде, кроме этого, не все уже реализованные функции используются. Возможно, что сама угроза все еще находится на уровне разработки и будет улучшена в будущем. Как мы уже упоминали, ее основная цель заключается в доставке агрессивной full-screen рекламы для ее отображения пользователю, маскируясь под системное приложение. Бот также может быть использован злоумышленниками для установки другого вредоносного ПО на скомпрометированное устройство.
Троянская программа была успешно загружена в магазин Google Play, поскольку содержала в себе механизм отложенной активации вредоносных функций и, таким образом, не вызвала к себе подозрений со стороны инструмента Bouncer. Интересным вопросом является и то, почему Bouncer не специализируется на статическом анализе исполняемых файлов внутри загруженных приложений. По этим причинам троянская программа свободно распространялась пользователям через официальный магазин приложений Google для Android. Вредоносная игра «Super Hero adventure» была загружена в Play Store разработчиком SHSH. Вполне возможно, что этот разработчик загрузил больше приложений в магазин Play. В конечном счете, все они были удалены из магазина, но оставались незамеченными там в течение полутора лет. Возможно, что подобные случаи стали причиной того, что в марте 2015 г. Google объявила о том, что все приложения и обновления должны проходить проверку со стороны человека.
Ниже представлена информация о проанализированных нами образцах вредоносной программы.
Читайте также: