Estoy tratando de extraer el archivo APK de una aplicación de Android instalada SIN permisos de root.
Pensé que esto era imposible, porque todos los archivos APK para aplicaciones que no son del sistema se encuentran en / data / app, y el acceso a esta carpeta requiere permiso de root. Luego descubrí que hay numerosas aplicaciones en la tienda Google Play que parecen tener acceso a los archivos APK incluso en dispositivos no rooteados.
¿Alguien puede decirme cómo es esto posible? ¿No hay aplicaciones de respaldo que respalden los archivos APK sin root?
Respuestas:
El acceso a / data / app es posible sin permiso de root; los permisos en ese directorio son rwxrwx - x. El permiso de ejecución en un directorio significa que puede acceder a él, sin embargo, la falta de permiso de lectura significa que no puede obtener una lista de su contenido, por lo que para acceder debe conocer el nombre del archivo al que accederá. El administrador de paquetes de Android le dirá el nombre de la apk almacenada para un paquete dado.
Para hacer esto desde la línea de comandos, use
adb shell pm list packages
para obtener la lista de paquetes instalados y encontrar el paquete deseado.Con el nombre del paquete, podemos obtener el nombre real del archivo y la ubicación del APK usando
adb shell pm path your-package-name
.Y conociendo el directorio completo, finalmente podemos extraer el adb usando
adb pull full/directory/of/the.apk
Gracias a @tarn por señalar que bajo Lollipop, la ruta apk será
/data/app/your-package-name-1/base.apk
fuente
adb shell pm list packages
para obtener la lista de paquetes instalados, elija el paquete deseado, añádalo-1.apk
y extráigalo/data/app
. Ejemplo: si el nombre del paquete esorg.mozilla.firefox
, useadb pull /data/app/org.mozilla.firefox-1.apk
.adb: error: remote object '/data/app/com.Slack-1/base.apk' does not exist
Android agrega un número de secuencia al nombre del paquete para producir el nombre final del archivo APK (es posible que esto varíe con la versión del sistema operativo Android). La siguiente secuencia de comandos funciona en un dispositivo no rooteado :
Obtenga el nombre completo de la ruta del archivo APK para el paquete deseado.
Esto le da a la salida como:
package:/data/app/com.example.someapp-2.apk
.Tire del archivo APK desde el dispositivo Android al cuadro de desarrollo.
La ubicación de APK después de una extracción exitosa será en ../sdk/platform-tools/base.apk en su PC / computadora portátil.
fuente
No necesita permisos ROOT para obtener la lista de aplicaciones instaladas.
Puedes hacerlo con Android PackageManager.
A continuación se muestra un pequeño fragmento de código.
fuente
fuente
Cuando tenga instalado Eclipse para el desarrollo de Android:
fuente
En Nougat (7.0), la versión de Android se ejecuta
adb shell pm list packages
para enumerar los paquetes instalados en el dispositivo. Luego correadb shell pm path your-package-name
para mostrar el camino de la apk. Después de usar adb para copiar el paquete a Descargasadb shell cp /data/app/com.test-1/base.apk /storage/emulated/0/Download
. Luego, ejecute el apk de Descargas a su máquinaadb pull /storage/emulated/0/Download/base.apk
.fuente
Conseguí una
does not exist error
Así es como lo hago funcionar:
fuente
List PackageManager.getInstalledApplications () le dará una lista de las aplicaciones instaladas, y ApplicationInfo.sourceDir es la ruta al archivo .apk.
fuente
Encontré una manera de obtener el nombre del paquete del APK en un dispositivo no root. No es tan elegante, pero funciona todo el tiempo.
Paso 1 : en tu dispositivo, abre el APK objetivo
Paso 2 : en la ventana de cmd de PC, escribe estos comandos:
Debido a que la salida de este comando es numerosa, se recomienda redirigir a un archivo.
Paso 3 : abra este archivo dump.txt con cualquier editor.
para dispositivos con Android 4.4:
el comienzo del archivo se vería así:
el nombre del paquete está en la tercera línea, com.tencent.mm para este ejemplo.
para Android 4.4 y
versiones posteriores: la salida de dumpsys ha cambiado un poco. intente buscar "Pila # 1", el nombre del paquete estaría muy cerca debajo de él.
Además, busque "baseDir", ¡encontrará la ruta completa del archivo apk!
fuente
Abra ES explorer -> presione el botón Menú en la esquina superior izquierda (tres franjas horizontales) -> en la sección Bibliotecas, elija APLICACIONES.
Por lo tanto, obtienes la lista de todas las aplicaciones de usuario. Encuentra tu aplicación y selecciónala presionándola durante mucho tiempo. Luego presione "Más" en la esquina inferior derecha y elija "Enviar". Luego puede usar diferentes opciones, por ejemplo, puede elegir "ES Guardar en" para guardar el archivo .apk en su directorio de inicio o en cualquier otro lugar.
fuente
O puede obtener 'Transferencia de archivos Bluetooth' desde Google Play y configurar la carpeta de inicio en
/system/
. Entonces incluso puedes ir a/
.fuente