Китайский вирус рут права

Обновлено: 23.04.2024

Человек хочет свободы. Другое дело, что ему не всегда понятно, зачем оно вообще нужно – некоторые индивидуумы преспокойно могут жить в клетке, отдавая себе об этом отчёт, другим на целом континенте места будет мало. Это зависит от самого человека, от его воспитания, детства, друзей и врагов. Каждый уникален, и каждый идёт по своему пути. Для пользователя смартфона доступ к root-правам– не жизненно важная функция. Это, скажем так, запасной вариант. Есть же пользователи iPhone, которые никогда не делали Jailbreak, и не собираются. И тут дело не в умении, а в нужде. Если ваш карманный друг на Android выполняет функции, ради которых он покупался – вопрос о необходимости шаманства снят. Но в случае голода по функциям, который посещает продвинутого пользователя, root-права становятся лакомым кусочком. И сегодня мы с вами обсудим основные плюсы и минусы этого действия.

Сначала немножко матчасти. Совсем немножко, не переживайте. Словом root в среде Linux называется аккаунт, имеющий определённые привилегии в доступе к файлам. Его ещё называют суперпользователем (superuser). Ближайшее точное сравнение — профиль администратора в Windows, только пароль обычно не нужен. Впрочем, это зависит от устройства, да и речь сейчас пойдёт не о полноценном Линуксе, а о его отпрыске мобильного формата по имени Android.

Итак, представьте себе, что к вашему компьютеру есть доступ через профиль администратора. Вы можете редактировать системные файлы, шаманить с реестром, гадить в кэш и делать другие операции, которые при определённом уровне кривизны рук могут привести к превращению ПК в фоторамку с перманентным BSOD на экране. Так вот, суперпользователю в Android приходится ещё тяжелее, потому что ошибок можно совершить больше, а просто переустановить ОС на нём – задача не из простых. Резюмируем: права суперпользователя позволяют обладателю смартфона получить доступ к системным файлам, и, что более важно — изменять их и сохранять эти изменения.

Не лишним будет сообщить, что существует три вида root-прав. Full Root предоставляет пользователю постоянный доступ к возможностям суперпользователя, Shell Root является обрезанным вариантом Full, то есть изменение папки /system недоступно, а Temporary Root даёт полный доступ лишь до перезагрузки смартфона. А теперь:

Недостатки

Отсюда следует второй недостаток: при ошибке в работе с правами суперпользователя можно нарушить работу ОС вплоть до безвозвратной потери данных. Избежать этого можно следующими действиями: прежде чем что-то делать, необходимо узнать последствия — в Интернете наверняка есть хотя бы один человек, который уже рискнул и выложил свои мысли в доступной форме. Далее — всегда имейте под рукой резервную копию, и не одну. Я говорю не о файлах галереи или контактах, но про полноценный бэкап всей системы — так называемый recovery. Как его делать, мы обсудим позже.

Также для пользователя, впервые вкусившего прелести root, будет печальной следующая новость: вмешательство в системные файлы отберёт возможность смартфона к автоматическому обновлению, то есть к получению новых версий прошивки. Да-да, не видать вам KitKat, если сидите на старых версиях Android и решили побаловаться с суперпользователем. Впрочем, о надёжности тут речи не идёт — обновление может и прийти, и даже установиться, и даже работать! Но если у вас это произошло, считайте, что выиграли в три лотереи подряд, потому что это колосс на глиняных ногах, и ваша ОС работает на файлах, которые для этого не приспособлены. Поэтому недостаток номер три: после получения root-доступа про автообновления ОС смартфона можно забыть, разве что вы — очень удачливый человек. Если же очень хочется новую версию Android, придётся делать всё вручную. Это непросто, но раз вы получили root-доступ, извольте отвечать этому званию!

И последний, но очень важный факт. Любые эксперименты с получением root-прав, изменением прошивки, созданием бэкапа на ПК или созданием рекавери должны проводиться ТОЛЬКО через РОДНОЙ USB-кабель, который должен быть воткнут ПРЯМО в корпус компьютера , в обход любых хабов. Дело в том, что различные китайские поделки любой цены и стоимости, за исключением фирменной периферии, глючат в самый важный момент, или просто не справляются с подобными задачами. Это не явление недавних дней – даже телефоны Siemens прошивалсь только через родной USB, который, кстати, стоял немало денег и был довольно редким. В результате можно сделать смартфон дорогостоящим кирпичом в процессе получения, скажем, рекавери, который должен обезопасить пользователя от подобных ситуаций. Будьте внимательны!

Преимущества

Свобода действий. Получив права Root, вы, как пользователь смартфона, приобретёте полный контроль над устройством. Не нравятся стандартные приложения? Удалите их с концами! Надоели стандартные ярлыки/иконки? Бога ради, смените их на любые, которые вам понравятся! Можно убрать заставку при запуске и выключении устройства, можно заставить родную вспышку приплясывать во время звонка, можно поставить искусственные ограничители на Интернет-траффик, убрать рекламу из приложений, скрыть панель уведомлений или навигационное меню и многое, многое другое. Само собой, для подобных изменений нужны соответствующие программы.

Обнаруженные в новом Андроиде вирусы, это результат не дружеского жеста со стороны разработчика телефона и стандартным антивирусом их не удалить.

CCleaner на компьютер скачать бесплатно

Обычные антивирусы могут только найти вшитые в систему вирусы, но никак не удалить их. Тут нужен другой подход.

Несколько рабочих приемов :

  • 1. (а) Установить рут права (взломать систему) и вырезать вирусный файл
    (б) Перепрошить телефон кастомной (собранная народными умельцами) без вирусов прошивкой.

(а) Вариант с рут правами довольно простой, но опасный и неудобный. Установите рут права и многие приложения, как мобильный банк могут полноценно уже не работать, поставите крест на обновлениях телефона, удалите что-то лишнее и получите роскошный кирпич:)

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

  • 2. Ничего не взламывая и прошивая просто заблокировать вирус в системе, оставить его и не дать развиваться.

Когда не получается удалить вирус из системы, можно применить к нему способ попроще и заблокировать его, обезвредить вирус-приложение встроенное в Андроид, перекрыть доступ к интернет, Wi-fi сетям установочному файлу или рабочей программе с помощью Брандмауэра.

Воспользоваться можно любым выбранным на плей маркете Фаерволом, мне понравился бесплатный Брандмауэр без Root. Довольно простой, не глючный с понятным интерфейсом. Главное, что это реально работающее средство от вирусов не подвластных антивирусным программам или превращающих телефон в "кирпич" при удалении системных вирусов.

Как заблокировать системный вирус на Андроиде - Инструкция

Сканируем смартфон бесплатным антивирусом Dr.Web Light, определяемся с вирусами. Пробуем удалить вирусы с телефона, нажимаем на трехточие, если есть возможность (кнопка Удалить) значит удаляем.

Как удалить системные вирусы на Андроиде

Какие не удаляются вирусы, заносим в Фаервол отмечая крестиком. Для этого открываем приложение Брандмауэр без Root переходим на вкладку Программы находим вирус-приложение (иконку, название) отмечаем его крестиком.

P.S. Раньше, на телефоне с вирусом в системе, периодически снимались деньги за искусно созданные платные подписки, неожиданно открывались страницы в рекламах непонятного сайта, добавлялись без ведома новые приложения. Телефоны перепрошивались, рутовались, но лучшим решением по удалению системных вирусов стал Брандмауэр:)

В ходе пыток смартфона Highscreen Zera S я пытался увеличить внутреннюю память любыми способами, так как обновление программ съедало всё скромное пространство. Один раз мне удалось назначить в качестве внутренней памяти карту microSD на 32GB, но это было несколько сбросов назад. В общем, я решил попробовать ещё один способ, который требовал root-прав и должен был сработать только со стоковой прошивкой и родным рекавери. То есть нужен был рут либо через установку apk, либо через подключение к компьютеру. Первый вариант не сработал, поэтому я перешёл ко второму.

Программа iRoot рекомендовалась для этих целей на довольно популярном и уважаемом ресурсе. Более того, программа была включена в шапку основной страницы об устройстве, что теоретически гарантировало доверие к ней.


Я установил iRoot, сделал всё по инструкции и… Успешно получил root-доступ к своему Highscreen. Это круто. И всё бы было хорошо, если бы после рутования телефон не начал жить своей жизнью, устанавливать какие-то свои китайские программы и — главное, что бросилось в глаза — периодически разворачивать во весь экран изображение красочной подарочной коробки на алом фоне.


Вот, что случилось после работы программы iRoot: видно установленный KingRoot и подозрительный, не поддающийся удалению Update. Там ещё был какой-то китайский маркет, китайский чат, китайская почта и прочие заменители сервисов от Google, но всё это я успешно удалил вручную.

Чтобы оценить масштаб повреждений я прогнал на смартфоне антивирус Dr.Web. Он нашёл более 20 угроз! И угрозы серьёзные. Впрочем, антивирус успешно справился с вирусами, которые разместились в кэш-файлах. Я вылечил все возможные угрозы я запустил проверку снова.

А при повторной проверке Dr.Web нашёл семь угроз. Вроде бы лучше, чем 25, но нет. Смотрите сами.


В ходе рутования устройства вирусы прописались в системные, никак не удаляемые точки. Например, Android.Triada.389.Origin и Android.Siggen.6036 внедрились в разные места системного приложения настроек. Вы открываете настройки телефона, а на деле запускаете вирусы.

Android.Loki.54 и Android.Loki.55 прописались в штатные обои (com.wallpapers), а судя по fankingbox — именно из-за них телефон показывал мне коробку с подарками.


Занятнее поступил Android.Gmobi.1 — он вписался в штатную программу обновления прошивки и, вероятно, предстал в виде неудаляемой программы Update.

Помимо прочего в com.android.settings нашёлся Android.Triada.208, а в обоях Android.Loki.53.

И это плохо!

Root-доступ к телефону даёт вирусам неограниченные возможности и привилегии. Совершение звонков, перехват СМС, слив любой информации в сеть и прочее. Фактически зловред не только полностью берёт под контроль смартфон, но и может никак не проявлять своего присутствия, блокируя всяческие уведомления.

Что это за android-вирусы?

Ой, это плохие вирусы!

Android.Gmobi — это, скорее, рекламный зловред, который может собирать информацию и подменять рекламу на свою.

Как удалить весь этот зоопарк из Loki, Triada и прочих?!

С учётом того, что все эти вирусы пытаются влезть в систему поглубже, единственный надёжный метод их удаления — тотальный формат всей памяти и перепрошивка на сток. У меня при этом даже IMEI слетает. Впрочем, процедура уже отработана, поэтому выполняется на автомате. Все пользовательские данные, в том числе на карте памяти, лучше тоже затереть. Детальных рекомендаций по каждой модели не дам. Просто помните:

Делайте периодически полный бэкап всех данных и имейте про запас стоковую прошивку и информацию о разметке памяти.

Как остановить вирус, если он пробрался на смартфон?!

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

А как же iRoot?

Прописался у меня на телефоне вирус спамер по имени "Devices" (первый попавшийся процесс монитор приписывает к имени - salmon, но это всё равно не первоисточник заразы.). Сам по себе получил все возможные права доступа и постоянно фигачит рекламу. Сброс прошивки не помогает. Думаю что залетает с каким то приложением из маркета. Ни один антивирус с ним не справился. Сам я телефон не рутовал, и ни одному приложению не давал никаких прав кроме телеграмма и ватсапа - которым разрешил доступ к чтению и записи на карту памяти и доступ к контактам.

1) Есть ли какой нибудь аналог виндовского process monitor для андроид - чтобы хотя бы поглядеть откуда растут ноги?
2) Если вирус умудряется повышать себе привилегии без установленного root -почему так же не поступают антивирусы?

Да и вообще куда лучше копать?

  • Вопрос задан более трёх лет назад
  • 2194 просмотра

Средний 2 комментария

Nekto_Habr


А что это, собственно, значит? И как выглядит? Я вот вообще никогда ни разу не устанавливал антивирус на смартфон (при этом на декстопах дома везде стоит лицензионный касперский - я понимаю, что такое вирусы и вред от них). До сих пор юзаю древний живучий смартфон под андроид 4.0 - каждый день, с интернетом. И ничего. У окружающих - всевозможные лопаты с самыми разными прошивками и версиями андрюхи. И тоже ничего. Как же выглядят мобильные вирусы, есть скриншоты?

Нерон Лордов, присоединяюсь. Десятки устройств прошли через меня. Родители, друзья пользуются. Что нужно сделать, чтобы подцепить вирус - не знаю (кроме как поставить его самостоятельно).

в том то и прикол что соблюдаю все меры предосторожности - не ставлю приложения из посторонних источников

это не является достаточным условием же.

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

Про рут все верно pfg21 написал.

1) есть, много, разных, смотри соотвествующий раздел гуглплея или 4пда :) я вообще иногда пользую top из busybox.
2) если антивирус будет поступать как вирус, то его будут принимать за вирус всякие проги (к примеру, антивирусник на серверах гуглплея). а зачем ему это нужно, если есть возможность официально прописать себя в рут.проге.

вариантА: поставить таки рут на телефон и вычистить /system раздел от левых исполняемых файлов. долго и надо думать.
ВариантБ: отнести умельцу и перепрошить телефон, (нередко требует рута). быстро и думать нинада.

камент: наличие рута на телефоне никак не связано с какими-либо дыркой в защите (как большинство почему-то думает). вирус и прочая гадость не рассчитывается на рутованность телефона :)

- в том то и прикол что соблюдаю все меры предосторожности - не ставлю приложения из посторонних источников.

- фаиктически мне для этого придётся установить левое приложение типо "проводник", разрешить ему доступ на запись в рут разделах - т.е. добровольно разрешить ему окирпичить мне телефон. Спасибо не надо. Именно так зараза и прилетает.

Sergey6661313, пожалуйста читай что-то более технически грамотное, чем жОлтая пресса. обычно копирайтеры, пишущие для нее слабо разбираются в технике работы операционных систем, он творят свои "произведения" с целью получения хайпа сенсации и прочаго. насколько грамотны их статьи вопрос глубоко вторичный.

- просто так вирусы на телефон не попадают. "Не виноватя я, он сам пришёл" бывает только в фильмах :)

- несколько телефонов рутованы, куча необходимых приложений стоит, имеющих доступ к руту, или вообще не работающих без рута. и ни одной заразы за много-много лет.

Supersu, к примеру, есть приложение, дающее доступ к правам суперпользователя сторонним приложениям, но только с разрешения пользователя. Иных систем, в обход мнения пользователя, доступа в ней нет.

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

отсутствие рута на твоей телефоне тебя не спасло - отнеси телефон умельцу и оплати его работу и знания.

В этой статье я хочу поделиться своим опытом обхода проверки на рутованость своего устройства. Статья может рассматриваться не только как самостоятельный материал, но и как прямое продолжения моей работы из предыдущей статьи.

Дисклеймер

Сразу предупрежу, что люблю писать подобные статьи довольно подробно, не ради объема и многобукав, а ради максимального погружения в проблему и способ ее решения. Обратите внимание, что я работаю на macOS, поэтому все команды в терминале будут ориентированы под данную ОС.

Как до этого дошло?

Мне выслали .apk файл приложения. Где-то внутри программы есть баг, который мне нужно воспроизвести. Но пройти вглубь приложения у меня не получается. Мое устройство не проходит проверку на рутованность.

Экран, который меня не пропускает

Экран, который меня не пропускает

Так как я уже потратил немало усилий, чтобы все же запустить это приложение (о каких именно усилиях идет речь можно узнать в прошлой статье), то и здесь я решил не сдаваться и попробовать обойти проверку на рутованность устройства.

Что будем делать?

Небольшое отступление о том, как во флаттере запускается нативный код, то есть родной код для Android или iOS платформы. Например, перед flutter-разработчиком стоит задача: не давать возможность работать с приложением на рутованном устройстве. Аналогом андроид root-устройства является jailbreak для iOS. Для проверки на рутованность или jailbreak необходимо воспользоваться нативными средствами обеих платформ. Для этого разработчик пишет плагин, который вызывает соответствующие нативные методы в зависимости от платформы на которой запущено приложение.

Таким образом, я сделал вывод, что в имеющемся .apk файле есть как минимум 2 интересующих меня места в виде байт-кода. Первое место - это нативная часть приложения, которая слушает команды из flutter части приложения, чтобы вызвать соответствующие нативные методы. И второе место - это собственно те самые нативные методы, а в данном случае - библиотека для проверки на рутованность устройства.

Я решил, что буду менять байт-код во втором месте. Честно говоря, сначала я работал с первым местом, то есть с плагином. Все потому, что кода там намного меньше и запутаться было сложнее. Всего лишь метод, который вызывает другой метод - это пара строк кода. Но в таком случае статья была бы еще сильнее завязана под конкретный .apk, и не было б такой абстрактности. Поэтому будем работать напрямую с кодом библиотеки.

Смотрим байт-код .apk

Итак, посмотрим на внутренности .apk. Для этого можно воспользоваться инструментом, предоставляемый Android Studio. В меню выбираем Build -> Analyze APK… В окне выбора файла находим интересующий нас .apk.


Весь скомпилированный байт-код хранится в файле classes.dex. Выберем его и взглянем на содержимое. В первую очередь, нас интересуют не файлы java или androidx, а именно файлы приложения. Поэтому выбираем первый package в структуре файлов android проекта, в моем случае это папка com. Из любопытства к содержимому каждой из папок я затригерился на слово rootbeer. Погуглив в гугле оказалось, что это весьма популярная библиотека для проверки устройства на предмет рутованности.

Исследовав документацию и исходники библиотеки стало ясно о том, как пользоваться библиотекой и где располагается ключевой метод isRooted().

Даже не смотря на то, что большинство классов приложения были обфусцированы, по прежнему получается сориентироваться и найти нужный файл. Не хочу сказать, что обфускация бесполезна. Ведь будь необходимый мне файл где-то в глубине приложения, то я б скорее всего его не нашел.

Судя по исходникам библиотеки, нужный мне файл должен находится рядом с классом RootBeerNative, и как мы видим тут таких, два a и b. Эмпирическим методом я понял, что это файл b. Правый клик по файлу b и в выпадающем меню выбираем Show Bytecode.



К сожалению, имена всех методов обфусцированы. Снова обращаясь к исходному файлу на github становится ясно, что метод isRooted() находится на строке 42. Побегав по файлу с байт-кодом мне удалось найти этот метод. Только теперь он называется a() и почему-то начинает работу с .line 43. Вот этот метод я и буду редактировать. Но не так быстро. К сожалению здесь только Read-only доступ.

Редактируем содержимое classes.dex

Для этого придется декомпилировать весь .apk при помощи известного инструмента apktool. Работать с ним довольно просто. После его установки нам понадобятся всего 2 команды:

apktool d appname.apk , которая декомпилирует указанный .apk и apktool b directory_with_app , которая соберет .apk обратно (в указанной directory_with_app должен располагаться файл apktool.yml).

Итак, выполняю декомпиляцию при помощи команды в терминале: apktool d app.apk


После выполнения команды появляется папка с файлами приложения. Нас интересует папка smali. Smali - это язык которым описан байт-код (вот классная статья по основам smali). Именно эта папка и есть содержимое файла classes.dex. К только что выполненной команде можно добавить параметр --skip-sources или просто -s тогда вместо папки smali мы увидим тот самый файл classes.dex.

Далее, в папке smali находим интересующий и уже известный нам файл b.smali:


Открываем его любым текстовым редактором и переходим к месту, где располагается метод isRooted():

Содержимое файла b.smali

Можем сравнить его с неповторимым оригиналом:


Очень похожи. Итак, нас интересует return, то есть самый конец метода. Видим, что метод возвращает некоторое константу v0, значение которой определяется на основе выполнивших в методе условий. Нам это не подходит. Нам всегда нужно возвращать false или же, как это будет в smali, 0x0. Для этого добавим свою констант v1 со значением 0x0. Сделаем это прямо над return:

И конечно же заменим в return v0 на v1. Поднимемся в самое начало метода и изменим значение .locals с 1 на 2, потому что так надо. Сохраняем изменения в файле и закрываем редактор.

Собираем .apk обратно

Для этого воспользуемся командой apktool b app , где app - папка с приложением, в котором мы редактировали smali файл. После завершения команды, в папке app появится директория dist. Здесь и расположен наш заново собранный .apk. Однако, при попытке установить его, мы получим следующую ошибку:

Это из-за того, что после пересборки нужно еще и переподписать приложение. Для этого нам понадобиться любой keystore файл. Или можно создать новый при помощи команды:

Подписать ключом приложение можно при помощи одного из двух инструментов: apksigner или jarsigner.

Я выбрал jarsigner используя следующую команду:

В этой команде мы указываем путь к keystore, путь к .apk, который хотим подписать и имя ключа (alias) из указанного keystore. После, вводим пароль от keystore и приложение успешно подписано.

Однако и это еще не все. Теперь, при попытке установить .apk, мы будем получать другую ошибку:

Это потому, что после подписи приложения нужно выполнить оптимизацию .apk файла при помощи инструмента zipalign.

Для выполнения оптимизации нужно ввести следующую команду: ~/Library/Android/sdk/build-tools/30.0.3/zipalign -v -f -p 4 app.apk rdy.apk

30.0.3 - я выбрал самую последнюю версию на момент написания статьи. После завершения команды на выходе получаем файл rdy.apk, который можно успешно установить! Проверим, получилось ли обойти проверку на рутованность устройства:


Заключение

Вызов принят - вот, что я подумал получив этот .apk. И считаю это маленькой победой. Данной статьей я стремился написать не просто инструкцию о том, как расковырять приложение. И не про свои способности по типу "смотрите как могу". Этой статьей я хочу сказать (и напомнить тем, кто стал забывать), что большинство проблем решаемы, нужно только копать, копать и еще раз копать, не опускать руки и результат обязательно будет положительным. Даже если, в конце концов, баг я так и не обнаружил, я очень рад, что расширил свой кругозор и в дальнейшем смогу взяться за более сложные задачи! Спасибо за внимание, обязательно буду писать еще про подобные танцы с бубном!

Читайте также: