Post

RU | 'APK - Introduction' from root-me.org

First

Сегодня наше подопытное - андроид приложение, поэтому с самого начала надо запастись необходимыми инструментами. Можете найти сами, можете воспользоваться моими фаворитами:

jadx
adb
smali debugger

Поскольку это лёгкое задание, мы можем обойтись без отладчика и динамического анализа, воспользовавшись только утилитой jadx.
Открываем на телефоне или в эмуляторе basic_rev.apk и пытаемся ввести рандомный пароль, чтобы узнать больше информации о строках, которые присутствуют в файле: Second

Открываем jadx-gui, загружаем .apk и пока что нас интересует каталог с кодом. (левый виджет)
Переходим в
basic_rev.apk -> Код -> com -> example.basic_rev
И тут нас встречает 3 класса - BuildConfig, MainActivity, R. Но, исходя из названия, нам интересен только второй. Открываем, и чуть чуть пролистав, можно заметить ту самую строчу “Try again ;)” в условном блоке. Смотрим на условие, видим что сравнивается наша введенная строчка с переменной seed, которая должна еще как то преобразоваться в функции makeFlag() (её тоже можно найти в MainActivity). Third

Для начала разберемся что же за переменная seed, а потом посмотрим на функцию.
Ресурсы -> resources.arsc -> res -> values -> strings.xml
Прослистав весь файлик strings, в конце мы натыкаемся на такую строчку. Four

Возвращаемся к MainActivity, и видим, что перед тем как сравнить наши строки, переменная seed должна пройти через функцию makeFlag(). Пойдем лёгким путём, откроем браузер, напишем Online Java Debugger и просто скопипастим всю функцию, подставив в аргумент значение переменной seed. Five

Получаем строку “@ndro01d”, пробуем её в качестве нашего пароля: Six

This post is licensed under CC BY 4.0 by the author.