Многие приложения, такие как финансовые и банковские, отказываются работать на устройстве с 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.
Шаг 2: Для преобразования файла class.dex в jar, используем d2j-dex2jar. Это нужно для работы с кодом приложения.
Шаг 3: jd-gui — инструмент, который отображает в удобном виде исходные коды Java файлов .class.
Шаг 4: Чтобы получить точные методы и функции Java, найдите слова: isDeviceRooted, root, rootUtils, /sys, /system, superuser.
Шаг 5: Здесь мы видим, что поиск JD-GUI нашел классы со строкой isDeviceRooted. Изучите классы и код Java.
Шаг 6: Как только найдете ключевое слово и точный класс, попытайтесь понять логику проверки обнаружения root. Также поищите в файлах smali те же самые методы / функции.
Шаг 7: После того, как найдете функцию или метод из класса в файле smali, проверьте возвращаемое значение в функции. Всегда помните, когда приложение проверяет, рутировано устройство или нет, нужно возвращать 0x0 в функцию, т.е. возвращать false. И когда нужно вернуть true, нужно будет использовать 0x1.
Шаг 8: Когда приложение проверяет isDeviceRooted? он вернет false.
Шаг 9: Есть еще одна вещь, которую можно изменить в файлах smali, найти Superuse.apk и переименовать его во что-то другое.
Шаг 10: Соберите приложение и используйте собственный самозаверяющий сертификат, чтобы подписать приложение с помощью apk-signer.
Шаг 11: Теперь после запуска приложения на устройстве с root, оно будет работать.
Заключение
Это просто демонстрация того, как найти код для обнаружения рута и как мы можем его обойти. Пожалуйста, следуйте концепту, а не точно описанным выше шагам.
Полезные ссылки: