2 votos

¿Cómo puedo editar los archivos de biblioteca del APK (archivos .so)?

Quiero instalar 2 versiones diferentes de una aplicación. Investigué un poco y descubrí que necesito cambiar el nombre del paquete APK con APK Editor. Descompilé el APK con APK Editor y cambié todo lo relacionado con el nombre del paquete. Por ejemplo, el nombre del paquete de la aplicación era com.oldapk.filee que cambié por com.newapk.file . Luego lo compilé de nuevo e instalé el nuevo archivo APK. Pero no he podido iniciar el nuevo archivo APK.

Habilité la depuración USB en mi teléfono y empecé a mirar los registros de fallos. Vi que el nombre del paquete se menciona como com.oldapk.filee y empecé a pensar qué podía estar mal. Utilicé ack en Linux para comprobar qué archivos tienen el com.oldapk.filee string y vi que 2 librerías (archivos .so) incluían el nombre del paquete antiguo. Los cambié en NotePad++ (Hex Editor Addon) por el nuevo nombre de paquete, pero esta vez cuando la aplicación se lanzó, pude ver la pantalla de inicio, pero se bloqueaba en 0,5 segundos después de lanzarla. Revisé los registros de fallos de nuevo y entonces vi que el nombre del paquete era todavía viejo. Tal vez los cambios que hice no afectaron.

¿Cómo puedo editar estos archivos?

1voto

St0rm Puntos 11

Editar el nombre del paquete de una aplicación existente de la que no eres desarrollador puede ser todo un reto. Además, a diferencia de la edición del código Smali, la edición de archivos binarios puede romper la aplicación.

He aquí algunos puntos que deben tenerse en cuenta:

  • En ack sólo listará cadenas y el nombre del paquete puede codificarse.

  • Ambos APKs pueden utilizar un mismo directorio/archivo (por ejemplo, en el almacenamiento externo), que tal vez no contiene el nombre del paquete, dará lugar a un accidente debido a un problema de permisos como el archivo/directorio será propiedad de la UUID de la com.oldapk.filee y no se puede acceder a él. Para listar las carpetas/archivos que son utilizados por la aplicación, se pueden utilizar estos comandos del shell ADB:

    • Obtener el usuario de la aplicación com.oldapk.filee

      ps -A | grep com.oldapk.filee u0_a230 10259 899 16984024 74060 0 0 S com.oldapk.filee

    • Obtener la lista de archivos propiedad del usuario de la aplicación ( u0_a230 ) en el /sdcard

      find /sdcard/ -user u0_a230

  • En el binario, cambiando el nombre del paquete por otro cuya longitud no sea igual a la longitud de com.oldapk.filee romperá la biblioteca (asegúrese de que el campo ' \0 ' 0x00 es el último byte de la cadena).

  • La aplicación puede tener una protección antimanipulación, puede instalarse pero bloquearse si se manipula la aplicación.

  • Añadir la bandera android:debuggable="true" a la etiqueta <application> en el "AndroidManifest.xml" puede ayudar a depurar el APK manipulado.

Espero que pueda ayudar y buena suerte.

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X