Skip to content
AndroTickler exploit

AndroTickler exploit

Sploitus September 7, 2026

Инструмент на Java, помогающий тестировать Android-приложения на проникновение быстрее, проще и эффективнее. AndroTickler предлагает множество функций сбора информации, статических и динамических проверок, охватывающих большинство аспектов тестирования Android-приложений. Он также предоставляет несколько функций, необходимых пентестерам во время работы. AndroTickler интегрируется с Frida для трассировки и манипуляции методами. Ранее был опубликован под именем **Tickler**.

AndroTickler требует хост с Linux и рутированное Android-устройство, подключенное через USB. Инструмент ничего не устанавливает на устройство, он только создает каталог _Tickler_ в /sdcard. AndroTickler использует Android SDK для выполнения команд на устройстве и копирования данных приложения в каталог _TicklerWorkspace_ на хосте для дальнейшего анализа. _TicklerWorkspace_ — это рабочий каталог AndroTickler, и каждое приложение имеет отдельный подкаталог в _TicklerWorkspace_ , который может содержать следующее (в зависимости от действий пользователя):

* DataDir: копия каталога данных приложения

* extracted: результат работы apktool с приложением, содержит smali-код, ресурсы, библиотеки и т.д.

* bgSnapshots: фоновые снимки, скопированные с устройства.

* images: любые сделанные скриншоты приложения.

* JavaCode: Java-код приложения, декомпилированный с помощью dex2jar и JD Tools.

* logs: файлы журналов, созданные с помощью -t -log, как описано ниже.

* transfers: файлы и каталоги, скопированные с устройства на хост с помощью -copy2host.

* AndroidManifest.xml: манифест приложения, полученный через apktool.

* base.apk: APK-файл приложения, установленный на устройстве.

* debuggable.apk: отладочная версия приложения, созданная с помощью -dbg.

Каталог _libs_ и файл конфигурации _Tickler.conf_ находятся в том же каталоге, что и jar-файл. Файл конфигурации задает расположение каталога _TicklerDir_ на хосте и _Tickler_ в /sdcard на Android-устройстве. Если файл конфигурации не существует или эти два каталога не заданы, используются значения по умолчанию (Tickler_workspace в текущем каталоге и /sdcard/Tickler соответственно). Каталог _Tickler_lib_ содержит некоторые Java-библиотеки и внешние инструменты, используемые AndroTickler, такие как apktool и dex2jar.

AndroTickler сильно зависит от следующих инструментов, поэтому они должны быть установлены на вашей машине перед использованием:

Другие инструменты требуются для некоторых функций, но AndroTickler может работать и без них:

2. Переместите AndroTickler.jar в тот же каталог, что и каталог Tickler_lib и файл Tickler.conf (автоматически создается в build/libs).

3. Сделайте dex2jar исполняемым (libs/notJars//dex2jar-2.1/d2j-dex2jar.sh и libs/notJars//dex2jar-2.1/d2j_invoke.sh)

4. Подключите ваше Android-устройство с установленным тестируемым приложением.

**Примечание** : Если сборка из исходников не удается, вы можете загрузить последнюю скомпилированную версию со вкладки релизы

Список установленных приложений на устройстве:

Поиск приложения (пакета), установленного на устройстве, имя пакета которого содержит searchKey:

java -jar AndroTickler.jar -findPkg

java -jar AndroTickler.jar -pkg [other options]

Любая команда с опцией -pkg (независимо от того, используется ли она с любыми из следующих опций) выполняет следующие действия, если они еще не были выполнены:

* Декомпилирует приложение в Java-код с помощью dex2jar и JD Tools

java -jar AndroTickler.jar -pkg -info

* Указывает ли код приложения на использование внешнего хранилища

* Каталоги приложения, уже существующие во внешнем хранилище

* Поддерживается ли резервное копирование приложения

java -jar AndroTickler.jar -pkg -squeeze [short | ]

Извлекает из декомпилированного Java-кода приложения:

* Любые признаки возможных учетных данных пользователя

* Распространенные компоненты, такие как OkHttp и WebView

Неудивительно, что его вывод обычно огромен, поэтому рекомендуется перенаправлять вывод команды в файл.

_short_ Сжимает только декомпилированный код, принадлежащий разработчику. Например, если приложение имеет имя пакета com.notEnaf.myapp, то _squeeze short_ сжимает только код в каталоге com/notEnaf.

__Сжимает код только в указанном каталоге _codeLocation_. Полезно для ограничения поиска или сжатия исходного кода, если он доступен.

java -jar AndroTickler.jar -pkg -l [-exp] [-v]

Выводит список всех компонентов приложения.

_-exp_ Показывает только экспортируемые компоненты.

_-v_ Предоставляет более подробную информацию для каждого компонента:

* Инструмент проверяет соответствующий Java-класс для каждого компонента и возвращает все возможные intent-дополнения (extras).

java -jar AndroTickler.jar -pkg -l [-act | -ser | -rec | -prov ] [-exp] [-v]

* -rec: приемники широковещательных сообщений

* -exp: показать только экспортируемые компоненты любого из вышеперечисленных типов

java -jar AndroTickler.jar -pkg -db [|e|l|d] [nu]

По умолчанию все команды -db обновляют каталог хранения данных приложения на хосте перед запуском проверки.

_нет атрибута ИЛИ e_ Проверяет, зашифрованы ли базы данных приложения. Это действие по умолчанию, если после флага -db не указана опция. _l_ Выводит список всех баз данных приложения. Зашифрованные базы данных могут не быть обнаружены. _d_ Выполняет дамп sqlite любой из незашифрованных баз данных. _nu_ noUpdate: выполняет любую из вышеперечисленных опций без обновления каталога данных приложения на хосте.

java -jar AndroTickler.jar -pkg -diff [d|detailed]

Копирует каталог хранения данных приложения (в DataDirOld), затем запрашивает у пользователя выполнить нужное действие и нажать Enter, когда он закончит. Затем снова копирует каталог хранения данных (в DataDir) и запускает diff между ними, чтобы показать, какие файлы были добавлены, удалены или изменены.

_d|detailed_ Делает то же самое, что и обычная команда -diff, а также показывает, что именно изменилось в текстовых файлах и незашифрованных базах данных.

java -jar AndroTickler.jar -pkg -sc [ ]

__Заменяет расположение декомпилированного Java-кода на пользовательское расположение.

java -jar AndroTickler.jar -pkg -sd

Ищет ключ в каталоге хранения данных приложения

Запускает компоненты приложения со всеми возможными комбинациями intent. Например, если активность имеет intent-фильтр с 2 возможными действиями и 3 схемами URI данных, то AndroTickler запустит эту активность со всеми возможными комбинациями этого intent. Кроме того, AndroTickler перехватывает intent-дополнения (extras), упомянутые в соответствующем Java-классе компонента, присваивает им фиктивные значения и добавляет их в возможные комбинации intent. Поддерживаются только дополнения типов boolean, string, int и float.

Если используется опция _-exp_ , то компоненты будут запускаться без привилегий root или специальных разрешений. Если нет, то компоненты будут запускаться с привилегиями root. Это помогает тестировать приложение в двух разных сценариях: против атакующих с обычными или высокими привилегиями.

Перед запуском компонентов AndroTickler выводит все команды, которые будут выполнены. Затем для каждой команды он запускает компонент, выводит команду и ожидает действий пользователя. Это дает пользователю достаточно времени для выполнения дополнительных проверок после выполнения команды. Перед переходом к следующей команде пользователю предоставляется возможность сделать скриншот устройства для документирования PoC.

java -jar AndroTickler.jar -pkg -t [-all | -exp] [target] [-log]

_target_ , как описано в команде list, может быть:

* -act : активности. запускает активность(и) со всеми комбинациями intent, как описано выше

* -ser : службы. запускает службу(ы) со всеми комбинациями intent, как описано выше

* -rec: приемники широковещательных сообщений: отправляет все возможные широковещательные сообщения, которые соответствуют приемнику(ам)

* -prov: поставщики контента: выполняет запрос к поставщику(ам) контента

если значение не указано, то target включает всё вышеперечисленное

_[-comp] _ Указывает только один компонент. Вы также можете использовать _ _ напрямую без флага -comp. _-exp_ AndroTickler использует обычные привилегии для запуска только экспортируемых компонентов. _-all_ Опция по умолчанию. AndroTickler использует привилегии root для запуска экспортируемых компонентов. _-log_ Захватывает все сообщения logcat, сгенерированные во время сеанса запуска. Файл журнала сохраняется в подкаталоге logs.

Frida должна быть установлена на вашем хосте. Также расположение сервера Frida на Android-устройстве должно быть добавлено в файл _Tickler.conf_ в поле _Frida_server_path_

## Захват аргументов и возвращаемого значения

java -jar AndroTickler.jar -pkg -frida vals [-reuse]

Отображает аргументы и возвращаемое значение этого метода (только примитивные типы данных и String).

_reuse_ В случае опций vals и set Frida создает/обновляет Frida-скрипт этой функциональности. Вы можете изменить созданный скрипт по своему усмотрению, а затем, если хотите запустить его через AndroTickler, используйте опцию _-reuse_ , чтобы он не был перезаписан.

## Изменение аргументов или возвращаемого значения

java -jar AndroTickler.jar -pkg -frida set [-reuse]

Устанавливает аргумент с номером _NumberOfArgToModify_ в значение _newValue_ (только примитивные типы данных и String). _NumberOfArgToModify_ начинается с 0: Первый аргумент --> NumberOfArgToModify = 0, ... и т.д. Для изменения возвращаемого значения установите NumberOfArgToModify в _ret_

java -jar AndroTickler.jar -pkg -frida script

Запускает Frida JS-скрипт, расположенный по пути _scriptPath_ на вашем хосте

java -jar AndroTickler.jar -pkg -frida enum

java -jar AndroTickler.jar -pkg -dbg

Создает отладочную версию приложения, которая может быть установлена на устройство и отлажена с помощью любого внешнего инструмента. AndroTickler поставляется с хранилищем ключей для подписи отладочного APK, но требует инструмент _jarsigner_ на хосте.

java -jar AndroTickler.jar -pkg -apk

Собирает APK-файл из каталога, подписывает его и устанавливает.

java -jar AndroTickler.jar [-pkg ] [-bg|--bgSnapshots]

Копирует фоновые снимки, сделанные устройством (работает как с опцией -pkg, так и без нее), в подкаталог _bgSnapshots_.

java -jar AndroTickler.jar -pkg -dataDir [dest]

Копирует каталог хранения данных в DataDir. _dest_ Необязательное имя целевого каталога, который в любом случае будет расположен в подкаталоге _transfers_.

java -jar AndroTickler.jar -pkg -cp2host [dest]

Копирует файлы / каталоги с Android-устройства.

* source_path — абсолютный путь к тому, что нужно скопировать с Android-устройства.

* dest: необязательное имя целевого каталога, который в любом случае будет расположен в подкаталоге _transfers_.

Если опция dest не указана, имя каталога будет меткой времени транзакции.

java -jar AndroTickler.jar [-pkg ] -screen

* Захватывает текущий снимок экрана устройства и сохраняет его в подкаталоге _images_.

* Работает как с флагом пакета, так и без него.

Для опций, не требующих -pkg, их данные будут сохранены в _Tickler_Dir_ /NoPackage

java -jar AndroTickler.jar -pkg -t -act -exp

java -jar AndroTickler.jar -pkg -t -prov -log

Запрашивает всех поставщиков контента и сохраняет сообщения logcat до остановки выполнения инструмента.

java -jar AndroTickler.jar -pkg -t

Запускает компонент; тип запуска зависит от типа компонента.

java -jar AndroTickler.jar -pkg de.not3naf.myApp -frida set de.not3naf.myApp.myActivity myMethod 2 0 "newValue"

Хукирует метод "myMethod", который имеет 2 аргумента, и изменяет значение первого аргумента (args[0]) на "newValue".

java -jar AndroTickler.jar -pkg de.not3naf.myApp -frida set de.not3naf.myApp.myActivity myMethod 2 2 false

Хукирует метод "myMethod", который имеет 2 аргумента, и изменяет возвращаемое значение на логическое false.

Extracted Entities