Обзор мода с паролем (часть 1)

by Snow Volf
Обзор мода с паролем (часть 1)

Прежде всего, стоит сказать, что на первый взгляд, мод сделан абсолютнейшим дилетантом, ничего не смыслящим в моддинге от слова совсем. И вот почему:

  • Диалог ввода пароля сделан с помощью готового импланта из приложения AppCloner (Android)
  • Приложение зашифровано через MT Manager (Android)
  • К приложению применен хук снятия проверки подписи mthook, из того же MT Manager. При этом, в оригинальном приложении нет проверки подписи!
  • При запуске приложение фризит (не реагирует на нажатия кнопок) до того момента, пока ты вручную не выдашь все разрешения через настройки

Т.е из этого можно сделать вывод, что у моддера либо нет ПК (иначе бы он не стал маяться такой фигней с андроид приложениями для моддинга), либо он конченный извращенец...

Ну что, заглянем внутрь?

Структура мода

И с самого первого взгляда становится ясно, что без бубна тут не обойтись:

Сравнение структуры папок из оригиала (слева) и мода (справа)

К оригинальным папкам со smali, добавилось еще 2:

  • smali_classes2
  • smali_mthook

Сначала глянем, что же в первой. А в ней есть следующие папки с классами:

andhook/lib/ - множество классов, целью которых являются снятие проверки подписи APK через череду хаков. Но вот в чем прикол - в оригинальном приложении я не нашел даже намёка на ее наличие. Зачем этот хук нужен здесь - не особо понятно. Также внутри andhook/lib/ имеется отдельная папка с названием xposed. При беглом анализе я понял, что это тот же самый хук, только еще и при помощи xposed (для тех, у кого он установлен). Но дела это не меняет.

android/os/Environmenu.smali - изнасилованная копия стандартного класса android.os.Environment. Отличие лишь в добавленной отладке для более лучшего дебага.

com/applisto/appcloner/ - классы, добавленные небезызвестным приложением AppCloner. Все те самые моды, которые можно добавить через него, лежат здесь. Суть в том, что даже если тебе нужно добавить всего 1 фичу в приложение, например тот же пароль на запуск, в приложение интегрируется не только экран с паролем, а ВООБЩЕ ВСЕ ФИЧИ, которые предоставляет AppCloner. Т.е всякие маскировщики, смена икони и названия, автозагрузчики, чистильщики кеша при выходе из приложения, блокировщики сенсоров камеры и т.д. тоже будут вкорячены внутрь, просто будут отключены через специальный файл конфигурации cloneSettings.json (зашифрован)

java/io/ByteArrayOutputStrean.smali - изнасилованная копия стандартного класса java.io.ByteArrayOutputStream. Отличие лишь в добавленной отладке для более лучшего дебага.

С первым дексом разобрались. А что же со вторым (smali_mthook)?

Это тоже обход проверки подписи, встроенный в MT Manager. Просто это более ранняя его версия (появилась чуть более 2-х лет назад). Тот хук, который я описывал в начале, это его приемник (появился чуть более 3-х месяцев назад). Скорее всего человек применил сразу 2 патча, чтоб наверняка.

Ресурсы (разметка, иконки, и т.д.) зашифрованы и складированы в одну кучу в папке /r/. Их анализ не представляется возможным, ввиду огромного количества времени и сил, которое мне придется потратить (не день, не два и не три).

А был ли мальчик?

Перейдём к самой главной папке smali, в которой находится код приложения. Может быть здесь будет нечто интересное, крышесносное, и вообще прям "пушка"? Как бы не так...

Открываем папку, и видим, что очень много smali файлов отличаются между собой на несколько десятков байт. Открываем первый попавшийся файл и нам предстаёт картина маслом:

Содержимое этих файлов идентично. Различается только лишь строка .source. Если в оригинале её значение равно "", то в моде мы видим "SourceFile_xxx". Вместо xxx могут быть абсолютно любые числа. Сделано это умышленно, чтобы всяческие утилиты сравнения файлов считали эти файлы отличающимися. Да, они отличаются, но по факту это лишь пыль в глаза.

Иной мододел, будь он на моем месте, опустил бы руки, сказав "я не знаю", но я-то плюс ко всему еще и разработчик...

Стоит лишь убрать эти строки, с помощью регулярных выражений

Для того, чтобы убрать эти строки, нужно написать регулярное выражение. Удобнее всего это делать на regex101.com

Используя следующее регулярное выражение, стоит лишь найти и заменить все совпадения через текстовый редактор с такой функцией (я использую Atom)

В результате я привел 4 тысячи файлов к оригинальному виду:

Делать это вручную было бы сродни самоубийству.

Ну и последнее, пакет приложения был изменен с com.pk.taxoid на com.pk.taxoie, следовательно нужно его переименовать для удобства сравнения.

И еще пара штрихов:

Изменения приложения опишу завтра. Их там не особо много. Скажу лишь одно: этот мод - сборная солянка, помноженная на 1000 и 1 патч для ApkEditor, и накрытая слоем говна от AppCloner.

November 2, 2019
by Snow Volf