У меня есть мобильное приложение для Android, и я не вижу некоторые его запросы при попытке сниффинга (это мобильное приложение не требует от пользователя какой-либо аутентификации)
Я пытался использовать Proxyman на iOS и перехватывал запросы и ответы (даже HTTP), но не все их вижу. Например, я не вижу запрос с деталями продукта или их списком. Разработчик Proxyman ответил мне:
Возможно, приложение не использует URLSession (Apple Framework) для выполнения сетевого запроса. Если это онлайн-приложение, это может быть приложение React Native, Flutter, которое (по умолчанию) не проходит через VPN. Таким образом, Proxyman не смог его захватить.
Я пробовал Wideshark / Charles / Mitmproxy на своем эмуляторе Android (пробовал версии Android 5.1–11.0), но это также не сработало.
Я пытался декомпилировать APK этого приложения (с помощью apktool) и нашел много файлов .java, но там слишком сложно найти пути API, потому что все имена нечитаемы (но я нашел некоторые, но этого недостаточно )
Подскажите, что мне сделать, чтобы получить API этого мобильного приложения?
Я действительно не знаю, как это может быть так сложно, почему я не могу получить простые вызовы API, потому что мое приложение каким-то образом знает, куда оно должно идти и какие данные оно должно получить (в браузере это намного проще !)
Спасибо! Я пытаюсь получить как можно больше информации об этом, я просто потерялся, когда пытался установить модуль Magisk + Edxposed + TrustMeAlready Xposed на эмуляторе Android Studio. Может быть, у вас есть какая-нибудь статья об этом? (Я вообще не мобильный разработчик)
Если это всего лишь одно приложение на корневом устройстве, я бы предпочел Frida+Objection, так как его проще установить и он более гибкий в адаптации.
У вас есть root-доступ? Чтобы перехватить приложение Android, единственными вариантами действительно являются доступ с правами root (и изменение конфигурации системы устройства) или изменение APK приложения. Для большинства приложений (всех приложений, которые специально не настроены для разрешения пользовательских сертификатов/отладки) нет другого возможного способа перехвата трафика.
Я написал подробное описание того, как работает HTTPS-доверие Android, и низкоуровневые сведения о том, как его перехватить, здесь: https://httptoolkit.com/blog/intercepting-android-https/. Это может дать больше контекста, но вывод тот же: вам нужно изменить систему или изменить приложение.
Если у вас нет root-доступа, поэтому вы не можете изменить систему, apk-mitm обычно ваш лучший вариант, и если это не сработает, вам придется вручную исследовать код Java самостоятельно.
Имейте в виду, однако, что вы всегда можете использовать эмулятор для запуска приложения, и большинство эмуляторов (все, кроме официальных версий эмулятора «Google Play» — например, официальные «службы API Google» и ванильные изображения доступны с правами root) разрешат root-доступ , так что это обычно возможно. Вы также можете использовать эмуляторы, такие как Genymotion, у которого есть бесплатная версия для личного использования.
Если это практично для вас, я бы пошел по этому пути — я написал полное пошаговое руководство по настройке эмулятора и перехвату сторонних приложений здесь: https://httptoolkit.tech/blog/inspect-any-android-apps- http/
Последний вариант: если перехват для большинства HTTPS работает, но не работают только некоторые запросы, то вам нужно отключить закрепление сертификата. Вы можете сделать это с помощью Frida , я написал универсальный скрипт для открепления сертификата для Android, вы можете использовать Frida здесь: https://github.com/httptoolkit/frida-android-unpinning
Пожалуйста, прочитайте первый раздел stackoverflow.com/a/62731432/150978 еще раз. Если вы видите некоторые HTTPS-запросы, но не все, то, скорее всего, используется закрепление сертификата. О закреплении см., например. stackoverflow.com/a/64659970/150978