# Как я Strings порешал
Всем привет! Недавно обнаружил, что на платформе https://www.mobilehackinglab.com/ появились лабы и я решил посмотреть, насколько будет прикольным их порешать.
Начать решил с таска

Почему-то он привлёк моё внимание
Скачиваем и устанавливаем на девайс

Ну да :) а чего я ожидал от таска на экспортируемые активити :)
Ладно давайте в Jadx
Ну и ожидаемо находим активити с `android:exported="true"` и обраткой схемы `mhl://labs`

Ну все, пора распаковать свой adb и попробовать обратится

Но это явно было не всё
Снова идём в jadx и пробуем посмотреть код обработчика

Видим, что flag лежит в нативной библиотеке, которая вызывается после ряда проверок
Давайте попробуем до него добраться, максимально ломая все проверки, которые нам мешают. Для начала давайте накинем frida hook на функцию `getflag()` - не люблю всплывашки на экране :)
```javascript
Java.perform(function () {
let Activity2 = Java.use("com.mobilehackinglab.challenge.Activity2");
Activity2["getflag"].implementation = function () {
console.log(`Activity2.getflag is called`);
let result = this["getflag"]();
console.log(`Activity2.getflag result=${result}`);
return result;
};
});
```

Теперь самое весёлое

Ну и радостно выпиливаем проверки с 37

> Тут показалось, что патч одной инструкции более элегантное решение
и 47 строки в Jadx

> Когда ищете нужную инструкцию, цепляйтесь за строки и названия переменных
Собираем apk

Подпишем и установим на девайс

Не забудьте перезапустить фрида скрипт после того, как переустановили apk
Пробуем вызвать нужную активити и видим, что флаг получен успешно

На экране уведомлялка тоже есть

Итак: флаг то загрузили, но получить его не смогли
Знаем, что флаг формата `MHL{}`, как-то связан со строками и явно находится в нативной библиотеке.
Сдампим память процесса и пройдёмся по ней strings c помощью fridump

Дальше просто откроем файл со строками из дампа и грепнем

Флаг найден! Ждем сертификат от ребят о прохождении лабы!