MASTG-TECH-0002: Transferência de Dados entre Host e Dispositivo
Usando adb¶
Você pode copiar arquivos de e para um dispositivo usando os comandos adb adb pull <remoto> <local> e adb push <local> <remoto> comandos. Seu uso é bastante direto. Por exemplo, o seguinte comando copiará foo.txt do seu diretório atual (local) para a pasta sdcard (remoto):
adb push foo.txt /sdcard/foo.txt
Essa abordagem é comumente usada quando você sabe exatamente o que quer copiar e de/para onde, e também suporta transferência de arquivos em massa, por exemplo, você pode puxar (copiar) um diretório inteiro do dispositivo Android para seu computador host.
$ adb pull /sdcard
/sdcard/: 1190 arquivos copiados. 14.1 MB/s (304526427 bytes em 20.566s)
Usando o Device File Explorer do Android Studio¶
O Android Studio possui um Device File Explorer integrado que você pode abrir indo em View -> Tool Windows -> Device File Explorer.

Se você estiver usando um dispositivo com root, agora pode começar a explorar todo o sistema de arquivos. No entanto, ao usar um dispositivo sem root, o acesso às sandboxes de aplicativos não funcionará, a menos que o aplicativo seja depurável, e mesmo assim você ficará "preso" dentro da sandbox do aplicativo.
Usando objection¶
Essa opção é útil quando você está trabalhando em um aplicativo específico e deseja copiar arquivos que possa encontrar dentro de sua sandbox (note que você terá acesso apenas aos arquivos aos quais o aplicativo alvo tem acesso). Essa abordagem funciona sem ter que definir o aplicativo como depurável, o que seria necessário ao usar o Device File Explorer do Android Studio.
Primeiro, conecte-se ao aplicativo com o Objection conforme explicado em objection. Em seguida, use ls e cd como você normalmente faria no terminal para explorar os arquivos disponíveis:
$ frida-ps -U | grep -i owasp
21228 sg.vp.owasp_mobile.omtg_android
$ objection -g sg.vp.owasp_mobile.omtg_android explore
...g.vp.owasp_mobile.omtg_android on (google: 8.1.0) [usb] # cd ..
/data/user/0/sg.vp.owasp_mobile.omtg_android
...g.vp.owasp_mobile.omtg_android on (google: 8.1.0) [usb] # ls
Type ... Name
--------- ... -------------------
Directory ... cache
Directory ... code_cache
Directory ... lib
Directory ... shared_prefs
Directory ... files
Directory ... app_ACRA-approved
Directory ... app_ACRA-unapproved
Directory ... databases
Readable: True Writable: True
Quando você tiver um arquivo que deseja baixar, basta executar file download <algum_arquivo>. Isso fará o download desse arquivo para seu diretório de trabalho. Da mesma forma, você pode fazer upload de arquivos usando file upload.
...[usb] # ls
Type ... Name
------ ... -----------------------------------------------
File ... sg.vp.owasp_mobile.omtg_android_preferences.xml
Readable: True Writable: True
...[usb] # file download sg.vp.owasp_mobile.omtg_android_preferences.xml
Downloading ...
Streaming file from device...
Writing bytes to destination...
Successfully downloaded ... to sg.vp.owasp_mobile.omtg_android_preferences.xml
A desvantagem é que, no momento desta escrita, o objection ainda não suporta transferência de arquivos em massa, então você está limitado a copiar arquivos individuais. Ainda assim, isso pode ser útil em alguns cenários onde você já está explorando o aplicativo usando o objection de qualquer forma e encontra algum arquivo interessante. Em vez de, por exemplo, anotar o caminho completo desse arquivo e usar adb pull <caminho_para_algum_arquivo> a partir de um terminal separado, você pode simplesmente fazer file download <algum_arquivo> diretamente.