Скачивание apk платного приложения с устройства

Я извлекал файлы .apk с устройства с помощью следующей команды:

./adb pull /data/app/com.example.tracker-1.apk

Когда я попытался использовать ту же команду для зашифрованного приложения, как показано ниже:

./adb pull /mnt/asec/net.stfj.spelltower-1/pkg.apk 

Я получаю следующее сообщение

failed to copy '/mnt/asec/net.stfj.spelltower-1/pkg.apk' to './pkg.apk': Permission denied

Устройство не рутировано, а приложение является платным. Цель извлечения — не пиратство, а понимание библиотеки и архитектуры набора приложений. Есть ли способ получить этот файл .apk?

Ответы (3)

Вы не сможете вытащить «защищенное приложение» без рута, извините.

Это не имеет ничего общего с платным приложением, за исключением того, что обычно «защищены» только платные приложения (теоретически, бесплатные приложения также могут быть «защищены»); думайте об этом скорее как о своего рода «DRM».

После того, как ваше устройство будет рутировано, вы можете использовать «полномочия root» для извлечения этих .apkфайлов. Это можно сделать либо с помощью специализированного приложения (такого как AppMonster ), либо через adb pull, если демон ADB работает в корневом режиме (обычно это не так, но этого можно добиться с помощью adbd Insecure ). adb rootобычно не работает на «производственных устройствах», поэтому вам придется использовать этот другой подход.

Итак, если устройство рутировано, будет ли это обычный способ доступа к .apk? скажем: ./adb pull /mnt/asec/net.stfj.spelltower-1/pkg.apk или мне нужно быть суперпользователем в оболочке, чтобы получить данные. Было бы здорово, если бы у кого-то были шаги для достижения этого. Прочитал кучу форумов. общие строки, которые я вижу, это корневое устройство, суперпользователь оболочки adb, корень adb
Пожалуйста, нажмите на галочку рядом с ответом, если вы считаете его таковым :) Это и «голосование» (которое вы можете сделать, как только у вас будет немного больше репутации) - это способы StackExchange сказать «спасибо». Тем временем я обновлю свой ответ запрошенными деталями.
+1 за ответ, но есть ли юридическая двусмысленность в отношении извлечения apk-файлов платных приложений? Я предполагаю, что нет, но любое распространение будет незаконным, верно?
@RossC Точно. Пока вы извлекаете их «для резервного копирования», но держите их при себе, не должно быть никаких юридических претензий. «Защита» скорее предназначена для предотвращения «совместного использования»: если вы не можете получить файл, вы не можете поделиться им.

Если вы не хотите специально играть с adb, вы можете использовать любой из этих двух 100% проверенных обходных путей (однако каждый из них требует установки другого приложения).


Подход_1: (требуется рутированный гаджет)


  • загрузите и установите приложение для резервного копирования/восстановления (например, Titanium Backup или AppMonster; подойдут бесплатные версии);
  • резервное копирование нужного вам приложения;
  • перейдите в каталог /sdcard/TitaniumBackup (в случае с AppMonster вам нужно будет заглянуть в настройки AppMonster, чтобы увидеть его каталог резервных данных) и получить APK оттуда

Подход_2:


  • установить Busybox (в случае устройств с заводским рутом --- на так называемых телефонах/планшетах для разработчиков --- он уже будет там)
  • загрузите и установите эмулятор терминала (например, эмулятор терминала от Джека Палевича)
  • запустите его и введите это (не используйте $ или #; это просто подсказки оболочки для вашего удобства; замените требуемое_имя_приложения.apk реальным именем APK, которое вы увидите в списке после запуска команды «ls»):

    $cd data/app
    $su
    #ls
    #cat desired_app_name.apk > /sdcard/Download/desired_app_name.apk
    #exit
    $exit
    
  • получить APK из каталога загрузки (конечно, вы можете использовать другой неограниченный каталог)

Неважно, о каких приложениях идет речь, бесплатных или платных.

Вам нужно рутировать свой телефон, чтобы получить доступ к /mnt