В настоящее время при использовании многих приложений, особенно банковских и государственных приложений, если ваш телефон рутирован, появляется всплывающее окно, напоминающее вам, что операционная среда небезопасна, и некоторые функции будут недоступны. В обратном процессе мы часто сталкиваемся с Обнаружением. Если проблему ROOT невозможно обойти, будет сложно использовать распространенные инструменты, такие как Xposed и Frida, что вызовет большие трудности при реверс-инжиниринге. Лично я считаю, что обнаружение и обход ROOT — это сопоставление по шаблонам. Детектор обнаруживает ROOT на основе некоторых характерных шаблонов телефона после ROOT, в то время как сторона обхода разрабатывает различные обходы на основе различных методов обнаружения метода детектора. Эта статья в основном суммирует Обнаружение, с которым я обычно сталкиваюсь. ROOT-метод и некоторые идеи его обхода.
Обнаружение Есть много способов получить ROOT. Многие приложения на рынке теперь прямо или косвенно используют этот проект для выполнения Обнаружения. ROOT:RootBeer
В Readme этого проекта это также очень понятно. Он в основном разделен на два уровня: уровень Java и собственный уровень. ROOT, обнаружены следующие объекты:
Он достаточно всеобъемлющий и может охватывать другие приложения, представленные на рынке. КОРНЕВЫЙ способ. Подводя итог, его можно разделить на несколько категорий.
Для обнаружения также используются различные API. Например, File.exists и File.canRead на уровне Java могут использоваться для определения существования файла, а также fopen и access на собственном уровне. До сих пор я видел и успешно анализировал Обнаружение. ROOT - это все вышеперечисленное.
Итак, основываясь на вышеизложенном, я написал общее Обнаружение. КОРНЕВОЙ Сценарий обхода может очень хорошо работать для большинства приложений, но недавно я столкнулся с таким случаем и точно знаю, что у него есть Обнаружение. ROOT, но с моим скриптом не выводит никакого Обнаружения Следы ROOT меня очень смутили. Я отказался от переднего плана и применил несколько уловок, чтобы обойти Обнаружение. КОРЕНЬ (обсуждается ниже).
Но в последние несколько дней я вдруг вспомнил, что у этого приложения явно нет даже оболочки. В нем есть только Обнаружение. ROOT невероятно силен. На самом деле, это Обнаружение. ROOT не сильный. Это Обнаружение При ROOT для этого будет открыт новый дочерний процесс, поэтому исходный процесс в моем HOOK бесполезен.
Кроме того, сеть безопасности Google также может быть использована для того, чтобы сделать Обнаружение ROOT,Кажется очень сильным,Но поскольку я перевернул относительно небольшое количество иностранных приложений, большую часть из них я не видел.
Способ определения ROOT относительно фиксирован, но КОРНЕВОЙ обход можно сделать разными способами
Самое прямое Обнаружение ROOT-метод — найти Обнаружение в приложении. Тогда логика ROOT может напрямую вернуть False, поэтому я не буду вдаваться в подробности.
В Objection встроена функция обхода Root, просто введите
android root disable
Он может обойти обнаружение корня многих приложений, но после просмотра исходного кода этой части объект обходит только обнаружение некоторых файлов на уровне Java, поэтому во многих случаях он не работает. Но даже в этом случае это помогло мне очень хорошо пройти этап новичка.
Поскольку приведенный выше RootBeer настолько мощный и имеет такой широкий охват, мы напишем для него соответствующий сценарий обхода и будем перехватывать его один за другим в зависимости от используемого им API и объектов, которые он обнаруживает.
Первоначальная версия заключалась в строгом подключении API. Позже она была оптимизирована, просмотрен исходный код Android, а затем подключены к этим API с более низкого уровня. С одной стороны, он может найти общие базовые функции, которые могут существовать между несколькими. функции. Это устраняет необходимость перехвата нескольких функций, с другой стороны, это не позволяет приложению использовать отражение для обхода наших перехватов. Наконец рассмотрите многопроцессный Обнаружение КОРНЕВАЯ проблема,использоватьPython-bindingизchild-gatingсделать это в дочернем процессеhook。ссылкаfrida Как подключить многопроцессный
我из绕过脚本开源在这:FridaAntiRootDetection
Вживив в приложение Frida-гаджет или xposed framework, переупаковка может использовать frida на нерутированном телефоне. Фактически, в упомянутом выше многопроцессном случае я использовал этот метод, чтобы избежать обнаружения root. Этот метод подходит для Обнаружения. ROOT сильный, но проверка подписи слабая, потому что переупаковка должна обходить проверку подписи.
Я уже много раз упоминал об этом в других статьях,Основная идея - использовать magisk для исправления boot.img.,использоватьfastboot boot magisk.img
начинать,вместо использованияfastboot flash boot magisk
,Таким образом, вы можете получить Временный КОРЕНЬ.,Этот ROOT исчезнет после перезагрузки. Итак, во время ROOT,Мы можем исправить SO-файл целевого приложения.,Перезагрузить после завершения,Патч не исчезнет с ROOT.
по системе сборки,Имплантируйте Frida или измените исходный код основной целевой системы.,можно использовать без ROOT,Достигните того же эффекта, что и ROOT.
Я не особо пользовался этими модулями, поэтому не уверен, что просто упоминаю этот метод. Вероятно, принцип заключается в том, чтобы скрыть файл su или что-то в этом роде.