В предыдущей статье брат Хун объяснил и поделился некоторыми временными методами экстренной помощи, как быстро решить проблему, но думаете ли вы, что некоторые методы используются для лечения головных болей, болей в голове и ногах, лечения симптомов, но не первопричины, или некоторые тестировщикам относительно сложно реализовать. Итак, сегодня брат Хун представит и поделится основной причиной проблемы.
Чтобы коренным образом решить проблему, нам просто нужно найти первопричину и не отставать от проблемы! Основная причина — targetSdkVersion. >= 24 приложения на Android Причина, по которой пакеты не могут быть перехвачены на устройствах с системой 7.0+, связана с Android Приложения после версии 7.0 по умолчанию доверяют только системным сертификатам и не доверяют пользовательским сертификатам. Тогда мы сможем найти способ установить сертификат Fiddler в каталог системных сертификатов и замаскировать его под системный сертификат. Тогда не будет проблем с невозможностью установки. перехватывать пакеты, поскольку сертификат Fiddler не является доверенным. Мы нашли основную причину. Поскольку сертификат пользователя не является доверенным, мы можем решить эту проблему, создав системный сертификат и установив его на мобильный телефон. Далее брат Хун решит задачу согласно этой идее.
1. Брат Хун ранее продемонстрировал, что он может захватывать пакеты https на телефонах Android, поскольку версия симулятора Yeshen брата Хонга для Android — 5.1.1, поэтому он может захватывать пакеты.
2. Брат Хун нажимает на кнопку Yeshen Multi-Opener в меню в правой части симулятора Yeshen, как показано на рисунке ниже:
3. Добавьте эмулятор с версией Android выше 7.0, как показано на рисунке ниже:
4. Настройте прокси-сервер и снова используйте Fiddler для захвата пакетов с помощью Baidu Mobile Assistant. Это означает, что сеть занята. Конкретным проявлением является то, что WebView в приложении не может открыть контент и не может захватить пакет приложения, как показано на следующем рисунке:
5. Результаты захвата пакетов Fiddler. В Fiddler можно увидеть большое количество соединений CONNECT, а затем ничего. Как показано ниже:
1. Загрузите и установите инструмент захвата пакетов Fiddler. После завершения загрузки не нажимайте кнопку, чтобы открыть и запустить его (если это ваша первая установка, если вы уже установили его, не запускайте Fiddler).
2. Загрузите fiddlercertmaker.exe, генератор сертификатов Bouncy Castle. Поскольку новая версия Android отклоняет сертификаты, действительные более двух лет, дважды щелкните загруженный файл fiddlercertmaker.exe (убедитесь, что Fiddler закрыт), и появится диалоговое окно. появится всплывающее сообщение о том, что импорт сертификата прошел успешно. (Если ваша новая версия может быть установлена, этот шаг можно пропустить).
3. Экспортируйте сертификат Fiddler на свой компьютер и нажмите «Инструменты». -> Options -> HTTPS -> Actions -> Export Root Certificate to Рабочий стол. Как показано ниже:
4. После успешного экспорта вы увидите экспортированный файл сертификата FiddlerRoot.cer на рабочем столе. Как показано ниже:
1. Загрузите версию openssl для Windows, адрес загрузки: http://slproweb.com/products/Win32OpenSSL.html, прокрутите вниз, выберите верхний 64-битный EXE-файл и нажмите для загрузки и установки, как показано на рисунке. рисунок ниже:
2. После завершения установки откройте командную строку cmd в корзине каталога установки openssl и попробуйте, подействует ли команда openssl. Если введена следующая входная информация, установка прошла успешно:
1. Преобразуйте сертификат Fiddler cer в сертификат pem и введите следующую команду в cmd для преобразования:
openssl x509 -inform DER -in C:\Users\DELL\Desktop\FiddlerRoot.cer -out C:\Users\DELL\Desktop\FiddlerRoot.pem
2. Используйте режим md5 для отображения хеш-значения сертификата pem. Введите следующую команду в cmd:
openssl x509 -inform PEM -subject_hash_old -in C:\Users\DELL\Desktop\FiddlerRoot.pem
Как видно из приведенного выше, хеш-значение сгенерированного нами сертификата Fiddler составляет 269953fb.
3. Переименуйте сертификат pem, используя значение 269953fb, указанное выше. Следующая команда применима только к window. Используйте mv для Linux. Как показано ниже:
ren C:\Users\DELL\Desktop\FiddlerRoot.pem 269953fb.0
Уведомление:ren
Второй параметр команды,Просто введите новое имя файла,Не входить полный путь,В противном случае будет сообщено об ошибке, как показано ниже:
1. Найдите рутированный телефон или любой эмулятор, потому что только рутированный телефон может выполнять различные команды с высоким уровнем привилегий. Я скачал эмулятор под названием Yeshen android 7 system. Как показано ниже:
2. Введите adb connect 127.0.0.1:62001 в cmd, чтобы подключить adb к симулятору Yeshen (если вы не уверены в этой части, вы можете прочитать статью брата Хонга о Appium, в которой есть подробное описание того, как подключиться).
(1) После установки симулятора Yeshen при проверке cmd появляется сообщение: версия сервера adb (36) не соответствует этому клиенту (41);
Описание версии andriod adb и версии adb симулятора не совпадают
Найдите причину:
(2) Проверьте версию Android-adb, введите adb --version в cmd, вы увидите, что текущая версия — 1.0.41, называемая версией 41.
(2) Проверьте версию adb в эмуляторе (Yeshen). В каталоге установки \Nox\bin есть файл nox_adb.exe, который на самом деле является adb.exe. (Это легко отличить от adb Android)
(3) Затем введите cmd в адресную строку каталога на предыдущем шаге, чтобы войти в командную строку, затем введите nox_adb и убедитесь, что версия adb в симуляторе — 36.
(4) После выяснения причины измените файл adb.exe в папке инструментов платформы. Просто замените nox_adb.exe в корневом каталоге эмулятора. Затем скопируйте версию adb.exe в android-sdk, затем переименуйте ее в nox_adb.exe, а затем замените nox_adb.exe в папке \Nox\bin. симулятор и снова запустите симулятор для обнаружения. Вы можете видеть, что 127.0.0.1:62001 — это имя устройства симулятора, что указывает на успешное соединение.
3.cmd Войдите в оболочку adb, чтобы войти в терминальную оболочку симулятора Yeshen. Набрав напрямую, я обнаружил ошибку: ошибка: более одного устройства/эмулятора. Как показано ниже:
(1) Причина проверки заключается в том, что брат Хун открыл два симулятора и ввел команду напрямую. Система не знает, в какой симулятор следует войти. Необходимо указать один. Как показано ниже:
(2) Укажите симулятор и войдите в оболочку, и вы сможете успешно войти, как показано на рисунке ниже:
4.cmd Введите cd /system/etc/security, а затем введите ls -l. Вы можете увидеть каталог cacerts. У нас есть только разрешения на чтение и выполнение, но нет разрешений на запись. Как показано ниже:
5. Введите chmod 777 cacerts в cmd, чтобы предоставить нам права на запись в каталог. После выполнения введите ls -l, чтобы убедиться, что мы получили права на запись. Как показано ниже:
Постучите по доске! ! !
Некоторые друзья могут ввести chmod 777 cacerts в других эмуляторах, и им будет предложено указать файловую систему только для чтения. Как показано ниже:
В этом случае вам необходимо перемонтировать систему и сделать ее доступной для чтения и записи. Введите mount -o remount,rw /system, а затем введите chmod 777 cacerts. Вы обнаружите, что настройка может быть успешной. Как показано ниже:
6. Введите exit, чтобы выйти из терминала оболочки, затем введите adb push C:\Users\DELL\Desktop\269953fb.0 /system/etc/security/cacerts (по той же причине вам необходимо указать симулятор) и нажмите предварительно преобразованный сертификат Fiddler в каталог /system/etc/security/cacerts симулятора Yeshen. Как показано ниже:
7. На этом этапе сертификат Fiddler успешно установлен в системный каталог. Нажмем на настройки симулятора. -> Информация о безопасности и местоположении -> Шифрование и учетные данные -> Доверенные учетные данные -> Система, прокрутите вниз, чтобы увидеть наш сертификат Fiddler. Как показано ниже:
Теперь откройте Fiddler для захвата пакетов, и вы обнаружите, что пакеты могут быть успешно перехвачены (не забудьте установить прокси-сервер на Wi-Fi в симуляторе), как показано на рисунке ниже:
1. Найдите рутированный телефон или любой эмулятор, потому что только рутированный телефон может выполнять различные команды с высоким уровнем привилегий. Я скачал эмулятор под названием Yeshen android 7 system.
2. Щелкните значок компьютера на боковой панели симулятора Night God и выберите папку компьютера. Будет выполнен переход в каталог компьютера C:\Users\Administrator\Nox_share и скопирован преобразованный сертификат Fiddler 269953fb.0 в каталог ImageShare. . Вот и все
3. Загрузите МТ Менеджер,Скачать адрес:https://coolapk.com/apk/bin.mt.plus . Перетащив его в симулятор и установив, щелкните, чтобы открыть приложение. Откройте каталог «Изображения» слева, и вы увидите сертификат Fiddler 269953fb.0 в каталоге ImageShare вашего компьютера.
4. Нажмите справа, чтобы войти в каталог system/etc/security/cacerts, затем нажмите и удерживайте файл 269953fb.0 слева и нажмите «Копировать», чтобы скопировать его в каталог, открытый справа.
5. Большинство людей думают, что это здесь.,Но, пожалуйста, взгляните на файл 269953fb.0, который вы только что переместили в каталог system/etc/security/cacerts.,Вы обнаружите, что по сравнению с другими существующими системными сертификатами,269953fb.0 вообще не имеет разрешения на чтение,Вы не сможете найти этот сертификат Fiddler, когда перейдете в раздел Доверенные учетные данные.,Нажмите на верхний левый угол MT Manager.,Найдите и откройте терминал
6. После входа в терминал введите следующую команду, чтобы сделать файл 269953fb.0 доступным для чтения.
7. Посмотрите разрешения файла 269953fb.0 в каталоге system/etc/security/cacerts и обнаружите, что у него есть разрешения на чтение.
8. Вернёмся на рабочий стол симулятора и кликнем по настройкам симулятора. -> Информация о безопасности и местоположении -> Шифрование и учетные данные -> Доверенные учетные данные -> System, прокрутите вниз и наконец увидите наш сертификат Fiddler. Попытаться перехватить пакет не составит труда.
Теперь откройте Fiddler для захвата пакетов, и вы обнаружите, что пакеты могут быть успешно перехвачены (не забудьте установить прокси-сервер на Wi-Fi в симуляторе), как показано на рисунке ниже:
1. После вышеуказанных настроек в симуляторе Thunderbolt 4 вы обнаружите, что по-прежнему не можете успешно перехватывать пакеты. В этом случае вам необходимо разрешить следующую команду для установки глобального прокси-сервера для Thunderbolt 4.
adb shell settings put global http_proxy <актерское мастерствоip>:<актерское мастерствопорт> Среди них adb можно найти в каталоге установки симулятора.
2. Перед работой убедитесь, что на телефоне или эмуляторе включен root. Если используется эмулятор, должна быть включена опция отладки по USB. Необходимо зайти в «Настройки» — «О планшете» или «О телефоне» — и нажать Android. номер версии 5 раз (Включить параметры разработчика) - Вернуться к параметрам разработчика - Включить переключатель кнопки отладки USB PS: чем сильнее вы нажимаете, тем лучше эффект.
3. Не забудьте указать каталог установки openssl, прежде чем использовать команду openssl. В противном случае вам будет предложено указать, что команда не существует. Если вам нужно использовать команду openssl в других каталогах, вам необходимо настроить среду. переменные. Вы можете проверить конкретный метод конфигурации самостоятельно. В конце концов, брат Хонг сегодня не объясняет здесь openssl.
4. Есть еще один момент, который необходимо объяснить отдельно. Разрешение на запись в каталог /system/etc/security/cacerts/ требует root-прав мобильного телефона. Другими словами, копирование сертификата в этот каталог требует от вас рутирования вашего собственного устройства. Что касается рутирования мобильных телефонов Android, производители мобильных телефонов обычно имеют свои собственные официальные руководства. Рекомендуется следовать официальным инструкциям по рутированию.
У некоторых друзей здесь могут возникнуть вопросы. Системный сертификат размещается в каталоге system/etc/security/cacerts. Если установленный сертификат пользователя хранится в каталоге, то на самом деле он хранится в каталоге data/misc/keystore.