Нужна однострочная оболочка adb su push & pull to access /data из командного файла Windows

Я боролся два дня. Надеюсь на помощь здесь.

Я написал пакетный файл Windows, который заменяет рекламные блокировки на основе Amazon с изображениями пользователя на rooted kindle fire hd 7 ", 2013 (kfsowi). Просто узнал, что я испортил команды adb, потому что я запускал adb небезопасный ", поэтому доступ к нему был недоступен, не введя его в команды adb.

Что мне нужно: Для запуска в пакетном файле мне нужны однострочные команды sub оболочки adb, чтобы вытащить с /push на /data на этом устройстве. (Или я мог бы использовать -> adb -d shell su -c "mount -o remount rw, /data <- на одной строке, за которым следует pull или push)

Я установил команду ls следующим образом:

  • это работало с adb insecure: adb ls "/data /secureStorageLocation"
  • мне нужно было: adb shell su -c "ls ./data/securedStorageLocation"

Теперь мне нужно то же самое для pull и push. Проблема:
 - С adb insecure это работает отлично: adb pull "/data /secureStorageLocation" "C: /destination"
 - Без adb insecure я получаю: удаленный объект '/data /secureStorageLocation /' не существует

Выше, даже если я сначала запускаю: adb -d shell su -c "mount -o    remount rw, /data ​​p>

Может кто-нибудь сказать мне, как сделать растягивание и нажатие с помощью оболочки adb и su. Я пробовал много перестановок и не могу понять это. Спасибо за ваше время.

EDIT: команда adb root не получает root на этом устройстве

6 голосов | спросил sjoy 23 +04002014-10-23T09:05:00+04:00312014bEurope/MoscowThu, 23 Oct 2014 09:05:00 +0400 2014, 09:05:00

3 ответа


5

Ну, вам нужно сделать несколько команд, так как я не верю, что это сработает в одном.

Вам нужно сделать:

    adb shell литий> su литий> cd /data/path/of/file литий> cp /data/path/of/file/copyme /data/local/tmp литий> chown shell.shell /data/local/tmp/copyme литий> exit литий> exit литий> adb pull /data/local/tmp/copyme /destination/copyme литий>

Это работает для меня каждый раз.

ответил Mike N. 23 12015vEurope/Moscow11bEurope/MoscowMon, 23 Nov 2015 10:28:24 +0300 2015, 10:28:24
2

Спасибо за это обсуждение. Это привело меня к решению, которое работало достаточно хорошо для меня при резервном копировании моего телефона, который не будет монтировать его внутренний ext4, прежде чем я сделаю что-то решительное, пытаясь его исправить (видимо, это требует прав root).

Обратите внимание, что adb shell обычно настраивает текстовый терминал (поэтому может преобразовывать одиночные символы конца строки в CRLF, бинарные данные, например, изображения разделов или архивы TAR). Хотя вы можете обойти это в Unix /Linux версиях adb (например, добавьте stty raw в свою команду обстрелов) или используйте несколько новых adb с ---- +: = 2 =: + ----, в Windows он все еще записывает CRLF в свой вывод. Чистый прием заключается в том, чтобы передавать данные через кодировку и декодирование base64 (двоичные файлы доступны для Windows en-masse). Также обратите внимание, что ошибки или подробные сообщения, напечатанные на exec-out в оболочке, заканчиваются на stderr программы stdout в хост-системе - так что вы хотите отбросить их после неизбежных начальных экспериментов.

Здесь:

adb shell

Может быть легко написан сценариями Windows для охвата всех разделов (можно просмотреть список вверх по adb shell "su -c 'cat /dev/block/mmcblk0p25 | base64' 2>/dev/null" | base64 -d > p25 и /или по ls -la /dev/block/ или cat /proc/diskstats), например:

cat /proc/partitions

(Примечание для использования for /L %P in (1,1,25) do ..\platform-tools\adb shell "su -c 'cat /dev/block/mmcblk0p%P | base64' 2>/dev/null" | base64 -d > s3-mmcblk0p%P.img в командных файлах CMD или %%P в интерактивной оболочке).

Не забывайте, что существуют также разделы %P и что mmcblk0boot[01] в целом содержит все эти разделы в обертке GPT, как и любой другой жесткий диск или имитатор одного:)

Чтобы оценить размеры отдельных разделов, вы можете посмотреть результат:

mmcblk0

К сожалению, мне не удалось быстро и легко обойтись fdisk -u -l /dev/block/mmcblk0* и получить содержимое раздела, чтобы я мог его транслировать, например. tar cf - mmcblkp0* и получить данные как несколько файлов в переносном однострочном пространстве.

К 7z x -si некоторые файлы, которые вы можете:

tar

ОБНОВЛЕНО: нашел еще несколько трюков для передачи двоичных данных.

Надеюсь, это поможет кому-то еще, Джим Климов

ответил Jim Klimov 21 MarpmTue, 21 Mar 2017 16:39:08 +03002017-03-21T16:39:08+03:0004 2017, 16:39:08
0

Не обязательно будет однострочным, но вы можете попробовать сделать следующие действия:

  • (с помощью adb shell, su) Скопируйте файлы во временное доступное местоположение на вашем устройстве (например, /sdcard) или внешних SD-карта)
  • (с помощью adb pull) Скопируйте эти файлы из временного местоположения на ваш компьютер.
  • Удалить временную копию

Возможный недостаток: между первым и последним шагом вредоносное приложение, если вы «используете» его, может читать и /или изменять файлы во временном общедоступном каталоге. На практике это очень маловероятно.

ответил Sarge Borsch 9 J0000006Europe/Moscow 2015, 10:05:24

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132