Accede a los datos de la aplicación de Android sin root

Recientemente, recomendé a mi compañero de trabajo una determinada aplicación de recopilación de datos para Android. La aplicación era excelente, pero estaba diseñada para cargar los datos recopilados en la nube y no ofrecía ningún medio para exportar o realizar copias de seguridad de la información localmente.

Esto no es un problema en mi Galaxy Nexus rooteado. Por lo general, conecto mi teléfono a mi computadora con un cable USB, abro CLI y hago lo siguiente, donde app.package.name debe reemplazarse con el nombre real del paquete de la aplicación:

Actualización : después de descubrir este ingenioso truco, lo anterior se puede reducir a una línea:

Sin embargo, en el teléfono de mi co w orker, esto no funcionaría ya que estaba usando un sistema operativo Android no rooteado.

Busqué en Google una solución y aparentemente encontré una. Si la aplicación, cuyos datos desea acceder, se puede depurar, se puede acceder a su carpeta protegida contra lectura con la ayuda del comando ejecutar como. En esencia, pretendemos ser la aplicación en cuestión y copiamos los archivos almacenados dentro de la carpeta de datos de la aplicación en una carpeta legible por el usuario de esta manera:

Desafortunadamente, en este caso la aplicación no se pudo depurar, por lo que el método anterior tampoco funcionó. Parecía que leer la carpeta de datos de la aplicación de Android con acceso de root era imposible…

En este punto recordé que a partir de Android v4.0 (Ice Cream Sandwich), Google ha proporcionado una forma de hacer copias de seguridad de datos y aplicaciones de dispositivos Android sin root a través de adb. Entonces, todo lo que tuve que hacer para extraer los datos de esa aplicación del dispositivo es ejecutar:

Esto le pedirá que “desbloquee su dispositivo y confirme la operación de copia de seguridad”. Para mantener las cosas simples no proporcione una contraseña, de lo contrario tendrá que pasar por los aros para descifrarla más tarde. Simplemente haga clic en el botón “Hacer una copia de seguridad de mis datos”. La pantalla mostrará el nombre del paquete que está respaldando y luego se cerrará por sí solo cuando se complete con éxito.

El archivo “.ab” resultante contiene datos de la aplicación en formato un ndroid b ackup, que, gracias a + Nikolay Elenkov, está muy bien explicado y documentado en su excelente publicación de blog. Básicamente, es un archivo tar que se ha ejecutado mediante desinflado y opcionalmente cifrado (de una manera algo peculiar) mediante cifrado AES-256-CRC. Nikolay incluso llegó a escribir un programa Java conveniente que puede empaquetar y descomprimir tales copias de seguridad de Android con y sin cifrado. Para extraer rápidamente una copia de seguridad sencilla no cifrada (omitió la contraseña de seguridad como sugerí, ¿no es así?) Ejecute:

Actualización : se me informó que no todas las instalaciones de openssl están compiladas con soporte zlib. Aquí hay un resumen alternativo que utiliza Python para lograr el mismo resultado:

El resultado es la carpeta apps / app.package.name / que contiene datos de la aplicación, como la base de datos SQLite que me interesó especialmente y las preferencias de la aplicación. ¡Disfruta!

Actualización : algunas personas mencionaron en los comentarios a continuación y en StackOverflow que este método no funciona si el desarrollador de la aplicación ha inhabilitado explícitamente la capacidad de hacer una copia de seguridad de su aplicación al configurar android: allowBackup = & quot ; falso & quot; en el manifiesto de la aplicación.

Publicado originalmente en blog.shvetsov.com el 1 de febrero de 2013.