Главная » Безопасность » Как вирусы попадают в Google Play Market?
google play вирус

Как вирусы попадают в Google Play Market?

Как же все-таки вирусы попадают в Google Market? Все же в этой компании трудятся лучшие умы планеты, разработавшие много крутых продуктов…

Все довольно просто: чаще всего такие приложения при загрузке в этот репозиторий вообще не имеют вредоносной функциональности.

Еще по теме: Онлайн декомпилятор APK

Данный материал носит информационный характер. Ни редакция сайта www.spy-soft.net, ни автор публикации не несут никакой ответственности за любой вред нанесенный материалом этой статьи.

Как вирусы попадают в Google Market?

Приложение разбивается на несколько модулей, которые можно подгружать в приложение удаленно.

Делается это не сложнее обычного продукта. Для начала создается пустой проект — empty Activity. К созданному проекту добавляется новый модуль (File → New → New module).

Тут есть два варианта библиотеки: Android или Java, если у вас будет какой-то академический код, не связанный с Android SDK.

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

Вирус Google Play
Вирус в Google Play. Создание модуля в Android Studio

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

public String getInfo(Context ctx){
...
return "Data is: " + somedata;
}

Написанный код собирают в один JAR-файл. Делают это разными способами, проще всего через Gradle. По умолчанию такая конвертация не идет, в конфиг (файл build.gradle для созданного модуля) поэтому добавляют эти строки:

task makejar(type: Jar, dependsOn: 'assembleRelease') {
from fileTree(dir: 'build/intermediates/classes/release')
}

Gradle умеет много чего, для него есть отдельная панель справа в IDE. Там есть много вариантов компиляции, к ним должен добавиться еще вариант makejar.

Вирус Google Play Вирус в Google Play. Генерация JAR через Gradle

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

Для такой конвертации в стандартном SDK есть компилятор dx.

Конечно, динамическая загрузка модулей — это не изобретение вирусописателей, такая схема вполне легальна и используется повсеместно. Эту возможность Google добавила очень давно, еще в 2011 году. Главная причина такого решения — ограничение на количество методов, используемых в приложении, их не может быть больше 65 тысяч.

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

Вы могли заметить, что большинство игр под мобильные платформы выкладываются в Google Play только в виде базового лаунчера, остальное пользователь скачивает напрямую с сервера разработчиков.

Для подгрузки таких модулей создан класс DexClassLoader. У него доступен только конструктор, который всю работу и выполняет.

public String getInfo(Context ctx){
...
return "Data is: " + somedata;
}
new DexClassLoader(pathToDex, internalStorage, null, classLoaderInstance);

В качестве аргумента у него пути к dex-файлу pathToDex и внутреннему хранилищу internalStorage, путь к дополнительным библиотекам (не нужны) и экземпляр класса ClassLoader.

Но прежде чем подгружать библиотеку, ее нужно скачать и разместить во внутренней памяти, она может быть прочитана только оттуда. Но тут никакой магии не нужно — хватит классов AsyncTask и HttpURLConnection.

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

Class<?> wordClass = dexClassLoader.loadClass("hacker.com.mylibrary.LibraryClass");
Class<?>[] args = new Class[1];
args[0] = Context.class;
Method libMethod = wordClass.getDeclaredMethod("getInfo", args);
String libMethod = (String) libMethod.invoke(wordClass.newInstance(), this);

Тем, кто до этого с проблемой не сталкивался, происходящее будет малопонятно, в таком случае помогут исходники готового проекта.

Заключение

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

Надеяться на антивирус как панацею я бы не стал, нужно продолжать держать голову светлой и не искать в Google Play халявы или глупых развлечений — именно такие люди составляют целевую аудиторию троянов и другой малвари.

Ну, а если очень захотелось установить что-то левое, тогда лучше сделать это правильно. Для тех кто у нас в первый раз рекомендую прочитать статью «Как установить приложение».

Как и ожидалось, с ростом пользователей количество угроз тоже увеличивается. Наверное, нужно ждать, что Google введет какие-то новшества в своем репозитории, слишком уж много там мусора скопилось за последнее время, что очень сильно отразилось на безопасность Андроид в целом.

Отмечу, что экосистема Apple выглядит гораздо лучше — массовых заражений нет, украсть данные гораздо сложнее.

Есть и хорошие новости: в Android-мире доля старых устройств быстро падает, к октябрю ОС KitKat (4.4) и старее уже занимают менее 20% рынка. Если контроль над качеством кода не ослабнет, то следующий год будет спокойней — серьезные уязвимости появляются редко, и главной проблемой становится человеческий фактор.

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

Еще по теме: Как проверить APK на вирусы

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *