Написание бота для андроид

Написание бота для андроид

Для функционирования программы необходимы права root пользователя.

Краткое описание:
Инструмент автоматизации, который превратит ваше андроид-устройство в бота для выполнения повторяющихся задач.

Описание:
Возможности программы:
— Поддерживаются касания, долгий тап, текстовый ввод и физические клавиши управления.
— Отключение блокировки для предотвращения выключения экрана.
— Задержка запуска, дает необходимое времени, для того, чтобы сделать то, что вам нужно перед запуском виполнения.
— Экспорт/импорт ваших отредактированных файлов (в расширении .abm)
— Добавляйте, выбирайте, переключайте, изменяйте и удаляйте действия из списка.
— Экспортируйте их в скрипт, выполняемый из эмулятора терминала или через ADB.
— Добавляйте виджеты, чтобы выполнять предварительно созданные задания!
— Просматривайте свои файлы в приложении!

Полезные подсказки:
— Чтобы отредактировать задание, нужно сделать долгий тап по нему и задать требуемые значения.
— Чтобы выбрать действие просто нажмите на него.
— Чтобы поменять местами два, находящихся рядом действия, выберите их и нажмите кнопку «Поменять местами строки»
— Чтобы остановить выполнение в фоновом режиме просто тапните по уведомлению.
— Чтобы удалить элементы в файловом менеджере сделайте по ним долгий тап.

Русский интерфейс: Да
Версия андроида 4.1+

версия 3.4: AndroidBotMaker_3.4.apk ( 672.37 КБ )

версия 1.9:AndroidBotMaker_1.9.apk ( 1.1 МБ )
версия 1.9 Rus:AndroidBotMaker 1.9_Rus.apk ( 1.13 МБ )

Сообщение отредактировал Slav_nsk — 10.12.19, 18:53

Источник

Запускаем Telegram-бота на Android устройстве (Remote Bot for Telegram)

Четыре месяца назад у меня появилась идея написать Telegram-бота, который будет запускаться не на внешнем сервере, как большинство ботов, а на мобильном телефоне.

Идея родилась не на пустом месте: я часто пропускал входящие звонки и СМС, когда телефон был в куртке или в кармане, поэтому мне нужен был дополнительный способ уведомлений. А так как я активно использую Telegram на компьютере, то подумал, что было бы не плохо, если бы входящие СМС и пропущенные звонки приходили в Telegram. Немного покопавшись, я решил написать бота.

Разработка прототипа

Я стал изучать тему создания Telegram ботов по официальной документации и по примерам. В основном все примеры были написаны на Python. Поэтому не долго думая, стал искать способы запуска Python сервера на Android. Но оценив время на изучение Python и не найдя ничего подходящего для запуска сервера, занялся поиском альтернатив и наткнулся на несколько библиотек на Java для написания Telegram ботов. В итоге остановился на проекте от Pengrad: java-telegram-bot-api.

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

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

Приведу в пример функцию, позволяющую получать последние сообщения и отправлять их на обработку:

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

Добавив несколько команд для бота, такие как: отправка, чтение СМС, просмотр пропущенных звонков, информация о батарее, определение местоположения и др., я опубликовал приложение в Google Play, создал темы на нескольких форумах, стал ждать комментарии и отзывы.

В основном отзывы были хорошие, но вскрылась проблема большого расхода батареи, что, как вы могли догадаться, было связано с WakeLock и постоянной активностью сервиса.Немного погуглив, решил периодически запускать сервис через AlarmManager, затем после получения сообщений и ответа на них сервис останавливать.

Это немного помогло, но появилась другая проблема, AlarmManager некорректно работал на некоторых китайских устройствах. И поэтому бот иногда не просыпался после нескольких часов, проведенных в состоянии сна. Изучая официальную документацию, я читал о том, что Long Polling это не единственная возможность получения сообщений, сообщения еще можно было получать используя Webhook.

Получение сообщений через Webhook

Я зарегистрировался на Digital Ocean, создал VPS на Ubuntu, затем реализовал простейший http сервер на Java, использующий Spark Framework. На сервер можно делать запросы 2 типов: push (отправка пуш-уведомления через webhook) и ping.

Пуш-нотификации отправлялись с помощью Google Firebase.

Генерация SSL сертификата

Протестировав отправку пуш-уведомлений, я стал разбираться с тем, как настроить и запустить сервер с HTTPS, так как это одно из требований при получении сообщений из Telegram через webhook.

Бесплатный сертификат можно сгенерировать с помощью сервиса letsencrypt.org, но одним из ограничений является то, что указываемый хост при генерации сертификата не может быть ip адресом. Регистрировать доменное имя я пока не хотел, тем более официальная документация Telegram Bot API разрешает использование самоподписанных сертификатов, поэтому я стал разбираться, как создать свой сертификат.

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

После запуска скрипта, на выходе получаем два файла: keystore.jks — используется на сервере, public_cert.pem — используется при установке webhook в Android приложении.

Для того, чтобы запустить HTTPS на Spark Framework достаточно добавить 2 строки, одну указывающую порт (разрешенные порты для webhook: 443, 80, 88, 8443), другую, указывающую сгенерированный сертификат и пароль к нему:

Чтобы установить webhook для бота, необходимо добавить в андроид-приложение следующие строки:

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

Функция чтения публичного сертификата из RAW ресурса:

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

Автоматическое создание бота

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

В этом мне помогла библиотека tdlib от создателей Telegram. К сожалению, я нашел очень мало примеров использования этой библиотеки, но разобравшись в API, оказалось, что не так все сложно. В итоге удалось реализовать авторизацию в Telegram по номеру телефона, добавление @Botfather в список контактов и отправку и получение сообщений заданному контакту, а в конкретном случае, боту @Botfather.

Добавление новых возможностей

После решения первостепенных проблем с автономностью, я занялся добавлением новых команд.
В итоге были добавлены такие команды как: фото, запись видео, диктофон, скриншот экрана, управление плеером, запуск избранных приложений и т.д. Для удобного запуска команд, добавил Telegram-клавиатуру и разбил команды по категориям.

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

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

Заключение

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

Большое спасибо за внимание. Буду рад услышать от Вас полезные замечания и предложения.

Источник

[Статья] Андроид боты от А до Я

Ɗevil

Ɗevil

Ɗevil

Основные принципы работы

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

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

Без предоставления специальных прав (взаимодействие с пользователем не требуется):

1. Сбор информации об устройстве.
Сюда входит — номер телефона, GPS-координаты, версия Android, IP-адрес, язык, мобильный оператор, страна (по IP/оператору), IMEI, дисплей (вкл/выкл), список установленных приложений. А так же информация о предоставленных правах: является ли бот SMS-мессенджером по умолчанию, администратором устройства.

2. Показ веб-инжектов.
Это фейки популярных приложений, которые предлагают юзеру ввести нужные данные (логин, пароль и т.п.) Подробнее веб-инжекты мы рассмотрим ниже.

3. Граббер/Cтилер СС — формы для сбора информации о кредитных картах.
Как и вебинжекты, это фейки, предлагающие ввести в них данные. Но они используют стандартный интерфейс Android, что позволяет им маскироваться например под Google Play. Если граббер сделан качественно, юзер не имеет никакой возможности отличить поддельное окно граббера от настоящего окна Google Play.

4. Выполнение USSD-запросов.
USSD-запрос, это короткий код, предоставляющий доступ к сервисам мобильных операторов и устройства. Например, код *#06# набранный вместо телефонного номера покажет вам IMEI устройства. С помощью подобного кода можно установить перенаправление всех звонков на нужный вам номер.

Читайте также:  Сброс настроек андроид через twrp

5. Push-уведомления.
Это сообщения, появляющиеся в верхней панели Android, так называемой «шторке». Особенность таких сообщений заключается в том, что нажатие на них может запускать необходимое приложение. Так же, сообщение может иметь любую иконку и, соответственно, маскироваться под уведомление от установленных приложений юзера.

6. Сбор контактов адресной книги (имена, телефоны и т.п.).

7. Отправка СМС на любой номер, включая платные.

8. Рассылка СМС по заданному списку номеров или по всем контактам адресной книги.

9. Запуск установленных на устройстве приложений, чтобы спровоцировать появление на экране веб-инжекта.

10. Навигация по устройству, поиск, скачивание, шифрование и даже удаление любых файлов из домашней директории юзера. В том числе баз данных популярных мессенджеров (Viber, Whatsapp и т.п.), которые содержат списки контактов, сообщения и прочую личную информацию.

11. Запуск на устройстве socks5-сервиса, что позволяет использовать телефон как прокси-сервер.

12. Выгрузка всех СМС сохранённых на устройстве.

13. Запись звука/видео. Как и публичные приложения для захвата экрана.

Предоставление прав расширяет список возможностей:

1. Перехват СМС. От простого дублирования входящих сообщений в панель управления, до полного перехвата, когда бот заменяет собой СМС-мессенджер. Это позволяет боту скрывать входящие сообщения, но в то же время юзер не имеет никакой возможности принять или даже отправить СМС.

2. Показ юзеру любой веб-страницы в полноэкранном режиме без возможности закрыть её или свернуть.

Невозможно без предоставления прав юзером:

1. Блокировка устройства.
Перманентное выключение экрана (если юзер включает его, он моментально отключается), отключение звука (для блокировки звуковых уведомления о входящих СМС и т.п.), смена пароля на разблокировку (при наличии прав администратора устройства).

2. VNC-сервис — весьма экзотическая вещь, которая позволяет управлять телефоном на расстоянии, как через удалённый рабочий стол (RDP).

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

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

Ввиду того, что Android базируется на Linux, безопасность в нём организована намного лучше чем в Windows. Каждое приложение имеет доступ только к своим личным данным и файлам, находящимся в публичной домашней директории. Для чтения файлов с SD-карты приложению требуется запрос дополнительных прав. Никогда, за исключением наличия root-прав, у приложения нет доступа к внутренним процессам системы. Таким образом невозможно получить содержимое буфера обмена юзера, нельзя как-либо модифицировать другие приложения, следить за событиями в них (без Accessibility Service) или перехватывать вводимые в них данные (только если ваш бот не является полноценной заменой стандартной клавиатуре).

Многие из действий требуют ручного предоставления прав юзером. Правда юзеры предоставляют эти права не особо задумываясь, особенно если бот запрашивает их бесконечно долго. И чем новее Android, тем больше ограничивается функциональность, доступная боту сразу после установки. Есть некоторое послабление в контроле для приложений, установленных из Google Play. Ввиду того, что приложения, размещённые там, проходят проверку. Но минимальная версия SDK, необходимая для загрузки приложения в Google Play — 26, что в свою очередь лишает бота возможности пользоваться автоматическим предоставлением прав для приложений с targetSDK О root-правах ​

В общих черта, root-права — это наличие на устройстве консольной утилиты su. Любое из Android-приложений может обратиться к нему и выполнить команду от имени пользователя root. А так как root в Linux обладает возможностями бога, то и приложение получает доступ ко всем этим возможностям.

Поэтому получить root непросто даже на своём собственном телефоне, имея непосредственный физический доступ и навыки. Для загрузки утилиты su на устройство необходимо разблокировать и заменить загрузчик системы, а если загрузчик окажется неподходящим это окирпичит ваш девайс.
Другой способ установить желанную утилиту — использовать уязвимости системы. Найти эксплоиты для устройств новее Android 5 представляется довольно сложной задачей. И дело даже не в высокой стоимости, а в отсутствии предложений на рынке. Кроме того, наличие утилиты su на устройстве может привести к негативным последствиям. Банковские приложения видят её и ограничивают свой функционал. Например, запрещают отправлять переводы неизвестным получателям.

Технически, веб-инжект — это html-страничка, с графикой и стилями. Абсолютно то же самое, что и фейки сайтов. Но внешне инжект изображает существующее приложение (или мобильную версию сайта). Он содержит минимум информации — чаще всего логотип приложения, заголовок, форму для ввода данных (логины, пароли, номера карт, личная информация) — которые якобы требуются оригинальному приложению.

Несмотря на название, инжект никуда не инжектится. Он не внедряется в другое приложение, ввиду невозможности сделать это средствами Android. В тот момент, когда юзер запускает приложение, бот показывает инжект поверх этого приложения. Так что юзер принимает появившуюся форму за окно реальной программы. После введения данных, бот отправляет их в админ. панель и убирает инжект с экрана. Юзер снова видит оригинальное приложение. Если данные были указаны верно, то инжект скорее всего больше не появится.

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

В Android вплоть до 6-ой версии определение запущенного приложения осуществлялось с помощью getRunningTasks / getRunningAppProcesses. Затем эту возможность ограничили и разработчики стали прибегать к разным ухищрениям.

Среди которых:
• Анализ содержимого /proc/ (с помощью библиотеки AndroidProcesses. Доступ к /proc/ закрыли на версиях Android 7 и выше, возможен только с root-доступом)
• Usage Stats Manager (требуется предоставление прав пользователем)
• Accessibility Service (требуется предоставление прав пользователем) Наибольшей популярностью на данный момент пользуется Usage Stats Manager ввиду простоты реализации, однако пользователь должен дать боту права на использование этой функции.

Несколько фактов:
• Каждый бот получает все входящие СМС и может отправлять их в админ. панель.
• До Android 5 можно было также предотвратить получение СМС юзером.
• На Android 5 и выше скрыть СМС от юзера может только СМС-мессенджер установленный по умолчанию.

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

Плюсы: бот получает полный контроль над СМС, юзер не видит уведомлений об их поступлении и никогда не сможет их прочитать.

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

Вкратце, о том как изменениях в свежих версиях Android (7-8-9) отражаются на поведении и устройстве ботов.

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

Равно как и боты, совершенно безобидные приложения запрашивают те же самые разрешения (например доступ к Usage Stats Manager требуется приложению, позволяющему ставить пароль на запуск других программ). В результате, юзер не имеет никакой возможности отличить опасное поведение бота от совершенно легальной активности.

Мобильные антивирусы не в состоянии отслеживать поведение других приложений, поэтому и они нисколько не улучшают ситуацию. Другим основным отличием Android-устройств начиная с версии 7, стало отсутствие возможности определения запущенного приложения. Теперь эту информацию можно получить только от Usage Stats Manager, разрешение на использование которого должен выдать пользователь.

Google Protect — это АВ встроенный в сам Android. Он может проверять на угрозы устанавливаемые apk-файлы, регулярно сканировать устройство, отправлять в Google подозрительные или просто интересные файлы с вашего устройства.

В свежих версиях Android он играет все большую роль, так что зачастую установка бота с включённым Google Protect становится практически невозможной. Но при этом возможно отключить сам Google Protect, например с помощью Accessibility Service. Это делают продвинутые лоадеры, о чём так же будет рассказано позже.

Как я писал в главе «Что не могут сделать боты», приложения Android очень сильно ограничены в доступе к системе и не имеют доступа к данным друг друга. Всё это распространяется и на мобильные антивирусы.

Мобильные антивирусы могут анализировать лишь статичные данные (apk-файл до установки), сканировать список процессов на появление известных им имён пакетов, отправлять найденные файлы на сервера АВ для прохождения ручной проверки. АВ не могут анализировать действия ботов, не могут вмешиваться в процесс их работы и как-либо сообщать юзерам о вредоносной активности. Они ничего не знают об СМС-перехвате, о фейковых pushуведомлениях, о веб-инжектах. Даже блокировка экрана устройства не может быть никак предотвращена установленным антивирусом.

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

Читайте также:  Android architecture components data binding

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

Примечание: на разных устройствах и разных версиях Android пути к настройкам могут сильно различаться.

Я укажу лишь основные названия разделов. Если не можете найти нужный раздел — используйте гугл или ставьте дополнительные приложения из Google Play (например, AutoStarts Manager)

Прежде всего, проверим список приложений (Settings — Apps), на наличие ботов. Ботом может оказаться что угодно — т.к. название и иконка бота могут соответствовать реальным приложениям. Если приложение появилось недавно и его название и предназначение вам незнакомо, его можно попробовать удалить. В отличии от Windows это не нарушит стабильную работу системы никоим образом.

Итак, предполагаемый бот обнаружен и надо его удалить.
• Жмём кнопку Uninstall (Удалить) на странице с информацией о приложении

• Если кнопка неактивна, надо сперва снять с бота права администратора. Идём в раздел Device Administrators (Администраторы устройства) и лишаем прав.

• Если бот настойчиво требует их обратно — вернём права. Теперь ищем список автозагрузки приложений. В нём отключаем запуск бота и перезагружаем устройство

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

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

Если получится, если же бот усердно мешает сделать и это, переходим к плану Б.

А именно — удаление бота с помощью компьютера, USB-кабеля и приложения adb.

• Устанавливаем adb на ПК hхххps://www.xda-developers(х)com/install-adb-windows-macos-linux/

• Подключаем телефон к USB

• Снимаем с бота права админа. Он начинает требовать их снова, игнорируем.

• Получаем список установленных приложений: adb shell ‘pm list packages -f’
Теперь нам предстоит так или иначе узнать имя пакета бота. Зачастую оно выглядит так: sof8wo3f.s8y3roha.sf8oyse. В некоторых случаях имя пакета бота может помочь узнать стороннее приложение Android (Монитор процессов и т. п.)

Если вам не удаётся удалить бота и вы не знаете на что он способен, по меньшей мере вытащите симку и несите телефон в сервис. Либо скиньте все ценные данные и сделайте Factory reset (сброс к заводским настройкам).
Боты связываются с админ. панелью каждую минуту (чаще невозможно по причине ограничений Android), так что ваша личная информация может безвозвратно уйти на сервер в любой момент (см. главу «Возможности ботов»).
Если нет возможности отключить телефон прямо сейчас, то выключите WI-FI (и удалите сохранённый пароль от точки), а также отключите мобильный трафик. Установка брандмауэра/файрвол из Google Play может обрезать боту доступ к интернету.

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

Чем больше ограничений для приложений вводят разработчики Android, тем больше разрешений требуют боты у юзеров. И юзеры эти разрешения дают.
С другой стороны, всякое ужесточение политики Android негативно отражается на разработчиках белых приложений. Им, так же как и представителям тёмной стороны, приходится запрашивать у юзеров множество разрешений, в то же время пытаясь всё это как-то обосновать для пользователя. При этом они не могут поступить как разработчики ботов — требовать у юзера разрешения в бесконечном цикле. Так как это чревато удалением назойливого приложения и гневным отзывом с низкой оценкой в Google Play.

Учитывая что характер предоставления разрешений на разных устройствах Android различается и все их порой невозможно учесть, это приводит к дополнительным багам. Например, доступ к отправке СМС на Android 7 требует разрешения пользователя, а если приложение собрано с targetSdk 19, то уже не требует. Иначе сломались бы старые приложения, ничего не знающие о том, что им нужно запрашивать. Порой приложения крешатся от того, что им необходимо для работы определённое разрешение, но в них нет кода для его запроса.

Страдают белые разработчики, страдают пользователи, в то время как разработчики ботов просто добавляют новый запрос, бесконечно возникающий сразу после установки приложения. Вирусы для Windows эксплуатируют уязвимости системы. С выходом нового функционала, новой версии Windows всегда появляются новые дыры. Юзеры требуют новых фич, новые фичи приводят к новым уязвимостям, уязвимости — провоцируют появление новых вирусов. В случае с Android публично доступных уязвимостей практически нет, поэтому юзер сам даёт ботам все необходимые для работы права. Антивирусы не могут позволить себе многого. Но даже когда смогут, кто помешает заставить пользователя их отключить? Затягивание гаек со стороны разработчиков Android приводит к неудобствам и для юзеров и для белых приложений и для самих разработчиков.

Определённо, подходы к разработке ботов в дальнейшем будут меняться также как изменились после перехода с линейки версий Android 4-5-6 на 7-8-9, но до тех пор пока это приносит финансовую выгоду, разработка ботов для Android не прекратится. Android-сцена исчезнет только вместе с Android.

Что такое лоадер? Принцип работы

Лоадер (loader, загрузчик, лодырь) — это простое приложение для Android,
работающее по следующему принципу:
• Сразу после установки лоадер скачивает apk-файл бота и предлагает юзеру этот файл установить (apk-файл может содержаться в теле лоадера, в зашифрованном виде)

• Если юзер отказывается от установки, она запускается снова и снова, пока бот не будет установлен

• Если юзер, впоследствии, удалит бота — лоадер так же попытается установить бота заново

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

Лоадер же может быть склеен с белым приложением (о чём я расскажу ниже) и загружен в Google Play. Таким образом, юзеру не нужно качать подозрительные apk-файлы с сайтов и устанавливать их вручную. Достаточно установить лоадер из Google Play, а дальше лоадер почти всё сделает сам.

В то время как проверки приложений в Google Play усложняются и требования к ним усиливаются, код лоадеров стремится к упрощению. Изначально лоадеры, как и боты, имели свою собственную панель. Они отсылали в неё информацию о девайсе и получали apk-файл для установки. Панель позволяла создавать задачи — например, «лоадерам из страны X с языком Y нужно установить apk Z».

На данный момент, отчасти в связи с усложнением установки неизвестных apk-файлов в Android 7-8-9, наблюдается тенденция слияния лоадера и бота. Apk-файл бота шифруется и скрывается в теле лоадера (а также белого приложения). Это лишает возможности получать детальную информацию об установленных лоадерах, но избавляет лоадер от необходимости связываться с контрольной панелью. Что, в свою очередь, избавляет от ряда неудобств (домен панели может быть заблокирован, VPS может быть недоступен, при плохом соединении скачивание apk может длиться долго). И сам по себе код для осуществления сетевых запросов (а также дополнительное разрешение android.permission.INTERNET) могут обрастать сигнатурами антивирусов, что делает невозможной загрузку лоадера в Google Play.

Лоадерам приходится адаптироваться под меняющиеся условия новых версий Android. Теперь недостаточно просто предложить юзеру установку файла — он может блокироваться Google Protect. Лоадеры научились запрашивать у юзера доступ к Accessibility Service, с помощью которого становится возможным отключить проверку Google Protect и выдать боту все необходимые для работы права. Таким образом, от юзера больше не требуется вообще ничего — дав лоадеру необходимые права, остается лишь наблюдать как apk-файл бота устанавливается автоматически. Что, в свою очередь, может быть скрыто маскирующим оверлеем.

Лоадер сам по себе не стоит пытаться грузить в Google Play, потому что он, чаще всего, не имеет интерфейса и вызывает подозрение. Для этого приложение лоадера встраивают в так называемое «белое приложение».

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

Чаще всего это разнообразные полезные утилиты — конвертеры валют, калькуляторы, блокноты и т. п. В качестве белого приложения плохо подойдут, например, игры — если юзеру не понравится игра, он её тут же удалит. А задача хорошего приложения, склеенного с лоадером, оставаться на девайсе как можно дольше. Для склейки лоадера с приложением, необязательно иметь исходники белого приложения.

Лоадер можно встроить и в имеющийся apk-файл. Однако можно и приобрести исходники чистого легального приложения на таких ресурсах как hхххps://www.chupamobile(х)com/

• Версию Android для которой создано приложение.
Чем выше тем лучше. Чтобы не пришлось впоследствии тратить время на доработку и исправление самого белого приложения.

• Размер.
Не каждый юзер станет скачивать приложение большого размера — платный трафик, плохой канал и т.п.

• Запрашиваемые разрешения.
В идеале, белое приложение должно требовать те же права что и лоадер. Таким образом, юзер будет понимать, зачем он должен дать доступ к Accessibility Service или Usage Stats. Если лоадер скачивает apk из паанели, ему требуется доступ к интернету. В таком случае будет выглядеть странно Блокнот, пытающийся отправить запрос на неизвестный домен. Разнообразные файрволлы для Android сообщат юзеру о подобной активности и доступ может быть ограничен.

Читайте также:  Время не обновляется автоматически андроид

Вопреки распространённому мнению, загрузить лоадер, склеенный с белым приложением, в Google Play не так уж и сложно.

Для этого потребуется:

• Аккаунт разработчика. Желательно зарегистрировать его самому, но можно и купить готовый.

• Подходящее белое приложение

• Чистый, без единой сигнатуры, код лоадера. Чем меньше объем кода и чем он проще — тем лучше.

• Данные о белом приложении (название, описание, изображение с логотипом, 2 или более скриншотов)

Важно: название приложения не должно содержать уникальных слов, вроде «SmartXProtector», который могут быть использованы в уже существующих приложениях Google Play. В таком случае ваше приложение будет отклонено с просьбой изменить название.

О других особенностях загрузки в Google Play можно узнать, потренировавшись размещать там разнообразные приложения без лоадера внутри. Каких-то особенных сложностей при этом возникнуть не должно.

Приложение в Google Play проверяется тремя типа проверок:

1. Расширенная, в течении нескольких часов после публикации в GP.

2. Упрощённая, повторяется несколько раз со случайной периодичностью в последующие дни после публикации или загрузки обновления.

3. Ручная — если лоадер вызвал подозрение, он попадёт на ручную проверку к специально обученным людям.

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

Для обхода упрощённых проверок, лоадер должен иметь в себе 2 функции:

1. Возможность отключения его работы из админ. панели. Так что в первые дни после загрузки в GP лоадер соединяется с панелью, но не скачивает и не устанавливает apk.

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

Комбинирование этих двух функций в первые дни после загрузки лоадера в GP, позволит избежать третьей, ручной проверки. Однако если она всё же произошла и ваше приложение заблокировали, дела не так плохи. Чаще всего вам рекомендуют удалить «вредоносный код» — вдруг он закрался туда по ошибке? — затем поменять название / имя пакета и попробовать разместить приложение снова. На данный момент даётся 3 попытки, после чего аккаунт разработчика блокируется без возможности восстановления. Уведомления о блокировках высылаются на почту. Структура и объем лоадера влияет на определение антивирусами. Чем проще лоадер, чем меньше прав он требует для работы — тем легче загрузить его в GP и использовать.

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

Сразу после загрузки лоадера в GP, следует отключить его главную функцию — установку apk. И после прохождения проверок запускать лоадер лишь после реакции от юзера (например, закрытие диалогового окна).

Однако в первые дни, когда приложение уже в GP и лоадер ничего не грузит, уже стоит начинать медленно лить инсталлы. Другими словами, направлять людей на страницу приложения, с целью его установить.

Это служит двум целям:

• Приложение «прогревается» и проходит проверки GP. До осуществления 100 инсталлов, проверки могут и не начаться.

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

Если приложение обфусцировано ProGuard, необходимо залить в соответствующий раздел GP отладочный файл build/outputs/proguard/release/mapping.txt, который ProGuard генерирует во время обфускации приложения. Это сделает ошибки читаемыми и позволит их исправить.

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

Что нужно для работы с Android?

Допустим, ваша цель — иметь сеть, состоящую из Android-устройств. Для её организации необходимо иметь следующие составляющие:

1. Бот и лоадер, возможно объединённые в одно приложение.
2. Белое приложение для загрузки лоадера в Google Play.
3. Аккаунт разработчика для GP и трафик. Про загрузку лоадера в GP я рассказывал в предыдущей части статьи.
4. VPS для админ. панели. Не рекомендую связываться с разрекламированными «антиабузными» сервисами. Стоят они втридорога, но проблем с ними может быть больше чем с обычными серверами. Хороший сервер можно купить у обычных «белых» селлеров, а для его защиты использовать proxy VPS, перенаправляющую трафик.
5. Домены. Далеко не все зоны хороши. Выбирайте зоны, устойчивые к абузам.

• Можно не иметь лоадер, а покупать готовые инсталлы бота.
• Лоадер может быть отдельным приложением, с отдельной панелью.
• Распространение apk бота может происходить вообще без лоадера, например таргетированной рассылкой с применением соц.инженерии. Но грамотный лоадер с автоматизацией установки и обходом Google Protect сильно повысит процент успешных инсталлов.

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

1. Аккаунт разработчика GP

$60
2. Исходники приложения, либо затраты на склейку лоадера с имеющимся apk $50-$300
3. VPS для панели

$100
4. VPS-прокладка для перенаправления трафика

$5/шт.
6. Аренда или разработка лоадера

$500-$1000
7. Аренда или разработка бота

$1000-$3000
8. Покупка или разработка необходимых веб-инжектов

$40-$80 за инжект. Чем больше у вас инжектов, тем лучше вы отработаете инсталлы. Пак инжектов:

$500
9. Регулярные чистки бота/лоадера (FUD) —

$300, либо крипт в онлайн-сервисах

$50.
10. Инсталлы:
◦ Покупка трафика для лоадера в GP
◦ Покупка готовых инсталлов

$1/инсталл, можно начать с 300 инсталлов, чтобы прогреть лоадер и оценить их живучесть => $300
◦ Директ-рассылка
◦ Email-спам (о чистоте apk можно забыть)
◦ Раздача бота на компакт-дисках в подземном переходе — не требует затрат, однако даёт до 4х лет тюрьмы.

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

Итого, порог вхождения в тему получается $3-5k. Разумеется, сэкономить можно на многом, но наличие в распоряжении указанной суммы поможет вам скорее достигнуть желаемого результата.

• Инсталлы — мрут чаще всего, особенно если трафик плохой, apk имеет баги или детекты АВ.

• Аккаунт GP — блок зависит от того какой лоадер вы используете и приводит ли это к жалобам юзеров. Арендованный публичный лоадер может быть удалён из GP с намного большей вероятностью, чем приватный самописный.

• Домены — зависит от зоны, есть устойчивые к абузам

• VPS-прокладка — следует за доменами

• Главный VPS — вероятность блокировки крайне мала

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

Помните, что скупой платит дважды.

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

Один из важнейших вопросов, который встаёт перед людьми, решившими работать с Android: арендовать бота или заказать разработку собственного. Сравним оба этих подхода.

• Стоимость ниже чем у разработки
• Если сервис аренды открыли не вчера, то код скорее всего отлажен и стабилен
• Проект может иметь уникальные фичи, разработка которых может стоить очень дорого
• Чистка поставлена на поток
• Большой набор доступных инжектов

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

Этот вариант хорош, если вам требуется бот с минимальным функционалом. Однако и у него есть недостатки.

• Вы можете (и должны!) получить исходники проекта. Убедитесь что можете собрать их Android Studio в рабочий apk, это не требует каких-то технических знаний. Кодер должен помочь вам с этим. Так вы будете знать, что имеете полную версию проекта, а не какуюто нерабочую часть. В таком случае, если кодер сольётся, вполне реально найти другого для поддержки бота.
• Код написанный с нуля должен быть кристально чист от сигнатур. Если вы ещё не начали работать, а apk уже палится — кодер использовал наработки из своих старых проектов. Они могут быть хорошо отлажены, но их необходимо хорошо вычистить.

Минусы:
• Код сырой и плохо отлажен. Использование готового отлаженного кода может провоцировать детект АВ. Палка о двух концах — чем отлаженнее код, тем лучше он известен АВ.
• Стоимость в разы больше чем аренда. Если вам предлагают написать бота за $100, лучше и не начинать.
• Возможность исчезновения кодера выше чем у проверенного сервиса аренды

Источник

Оцените статью