Запуск Java-кода с привилегиями shell

Запуск Java кода с привилегиями shell

Introducing scrcpy — статья об утилите scrcpy, позволяющей в одну команду получить на экране ПК картинку с экрана телефона, с возможностью управления с помощью мыши и клавиатуры. Однако интересна статья не этим, а тем, что рассказывает, как эта утилита работает.

Рекомендуем к прочтению: Создание биткойн-майнера на Java

Чтобы получить картинку с экрана, scrcpy должна загрузить на смартфон и выполнить с правами adb shell код, который запустит процесс скринкастинга экрана и передачи видеопотока на комп. И утилита делает это весьма интересным образом. Код, запускаемый на смартфоне, написан на Java, но это не приложение для Android, а просто запакованный в jar файл DEX.

Разработчик scrcpy объясняет, как сделать такое «неприложение».

  1. Пишем приложение на Java (пример простейший):
    [/crayon]
  2. Собираем приложение:
    [/crayon]
  3. Перегоняем его в DEX:
    [/crayon]
  4. Запаковываем в jar:
    [/crayon]
  5. Закидываем на устройство и запускаем:
    [/crayon]

Вуаля, мы получили приложение, которое нет необходимости устанавливать и которое имеет права shell, то есть может выполнять многие привилегированные действия, недоступные обычным приложениям (signature level permission): бэкап, скринкастинг, снятие скриншотов, установку и удаление приложений.

Понравилась статья? Поделиться с друзьями:
Комментарии: 1
Добавить комментарий