Обход обнаружения root в коде приложения

Root Linux

Многие приложения, такие как финансовые и банковские, отказываются работать на устройстве с root. В статье покажу, как обойти обнаружение root путем изменения кода приложения. Заранее предупреждаю, статья для разбирающихся. Для тех, кто не в теме, рекомендую прочитать «Как используя Magisk скрыть root на Андроид».

Обход обнаружения root в коде приложения

Существует различные способы обойти проверку обнаружения root в приложении Android, первый — статический анализ кода, который мы обсудим сегодня, а второй — динамический с использованием Frida, Xposed framework.

Для обхода root надо понять, какие методы использует приложение для обнаружения root. Для этого необходимо декомпилировать APK-файл приложения, изменить код и собрать заново.

Ниже приведены инструменты, необходимые для обхода обнаружения root:

  • Apktool для декомпиляции приложения.
  • d2j-dex2jar для конвертации файла.
  • JD-GUI для отображения кода приложения.
  • Sublime или любой другой текстовый редактор.

Шаг 1: Открываем терминал Kali Linux и декомпилируем APK с помощью Apktool.

Декомпиляция APK Apktool

Шаг 2: Для преобразования файла class.dex в jar, используем d2j-dex2jar. Это нужно для работы с кодом приложения.

d2j-dex2jar конвертация apk

Шаг 3: jd-gui — инструмент, который отображает в удобном виде исходные коды Java файлов .class.

jd-gui декомпилятор Java

Шаг 4: Чтобы получить точные методы и функции Java, найдите слова: isDeviceRooted, root, rootUtils, /sys, /system, superuser.

Обход root Андроид

Шаг 5: Здесь мы видим, что поиск JD-GUI нашел классы со строкой isDeviceRooted. Изучите классы и код Java.

Обход root Android

Шаг 6: Как только найдете ключевое слово и точный класс, попытайтесь понять логику проверки обнаружения root. Также поищите в файлах smali те же самые методы / функции.

Шаг 7: После того, как найдете функцию или метод из класса в файле smali, проверьте возвращаемое значение в функции. Всегда помните, когда приложение проверяет, рутировано устройство или нет, нужно возвращать 0x0 в функцию, т.е. возвращать false. И когда нужно вернуть true, нужно будет использовать 0x1.

Обход root Android

Шаг 8: Когда приложение проверяет isDeviceRooted? он вернет false.

Шаг 9: Есть еще одна вещь, которую можно изменить в файлах smali, найти Superuse.apk и переименовать его во что-то другое.

Поиск строки Superuser.apk

Изменил строку superuser на что угодно

Шаг 10: Соберите приложение и используйте собственный самозаверяющий сертификат, чтобы подписать приложение с помощью apk-signer.

Шаг 11: Теперь после запуска приложения на устройстве с root, оно будет работать.

Заключение

Это просто демонстрация того, как найти код для обнаружения рута и как мы можем его обойти. Пожалуйста, следуйте концепту, а не точно описанным выше шагам.

Полезные ссылки:

QUASAR

Этичный хакер и компьютерный ниндзя. Новые статьи в нашей Телеге!

Добавить комментарий