¿Cómo abrir APK y cómo editar? Usando apktool Un programa para desmontar y ensamblar un archivo apk

A veces, algunas aplicaciones en Android no se adaptan de alguna manera al usuario. Un ejemplo es la publicidad intrusiva. Y también sucede que el programa es bueno para todos, pero la traducción es torcida o está completamente ausente. O, por ejemplo, el programa es una versión de prueba, pero no hay forma de obtener la versión completa. ¿Cómo cambiar la situación?

Introducción

En este artículo hablaremos de cómo desensamblar un paquete APK con una aplicación, mirar su estructura interna, desensamblar y descompilar el bytecode, y también intentaremos realizar varios cambios en las aplicaciones que pueden traernos un beneficio u otro.

Para hacer todo esto usted mismo, necesitará al menos conocimientos básicos del lenguaje Java, en el que están escritas las aplicaciones de Android, y del lenguaje XML, que se utiliza en todas partes en Android, desde la descripción de la aplicación en sí y sus derechos de acceso hasta el almacenamiento de cadenas que se mostrará en la pantalla. También necesitará la capacidad de utilizar software de consola especializado.

Entonces, ¿qué es un paquete APK en el que se distribuye absolutamente todo el software de Android?

Descompilación de aplicaciones

En este artículo, solo trabajamos con código de aplicación desensamblado, pero si se realizan cambios más serios en aplicaciones grandes, comprender el código pequeño será mucho más difícil. Afortunadamente, podemos descompilar el código dex en código Java, que, aunque no es original ni vuelve a compilarse, es mucho más fácil de leer y comprender la lógica de la aplicación. Para ello necesitaremos dos herramientas:

  • dex2jar es un traductor del código de bytes de Dalvik al código de bytes de JVM, a partir del cual podemos obtener código en el lenguaje Java;
  • jd-gui es un descompilador que le permite obtener código Java legible a partir del código de bytes JVM. Como alternativa, puedes utilizar Jad (www.varaneckas.com/jad); Aunque es bastante antiguo, en algunos casos genera código más legible que Jd-gui.

Así es como se deben utilizar. Primero, ejecutamos dex2jar, especificando la ruta al paquete apk como argumento:

% dex2jar.sh correo.apk

Como resultado, el paquete Java mail.jar aparecerá en el directorio actual, que ya se puede abrir en jd-gui para ver el código Java.

Disposición de paquetes APK y recepción de ellos.

Un paquete de aplicación de Android es esencialmente un archivo ZIP normal que no requiere herramientas especiales para ver su contenido o extraerlo. Basta con tener un archivador: 7zip para Windows o descomprimir la consola en Linux. Pero eso es todo sobre el envoltorio. ¿Qué hay adentro? En general, tenemos la siguiente estructura en su interior:

  • META-INF/- contiene un certificado digital de la aplicación que identifica a su creador y sumas de verificación de los archivos del paquete;
  • res/ - varios recursos que la aplicación utiliza en su trabajo, como imágenes, descripción declarativa de la interfaz, así como otros datos;
  • AndroidManifest.xml- descripción de la aplicación. Esto incluye, por ejemplo, una lista de permisos requeridos, la versión de Android requerida y la resolución de pantalla requerida;
  • clases.dex- código de bytes de aplicación compilado para la máquina virtual Dalvik;
  • recursos.arsc- también recursos, pero de otro tipo - en particular, cadenas (sí, ¡este archivo se puede utilizar para la rusificación!).

Los archivos y directorios enumerados se encuentran, si no en todos, quizás en la gran mayoría de los APK. Sin embargo, hay algunos archivos/directorios no tan comunes que vale la pena mencionar:

  • activos- análogo de recursos. La principal diferencia es que para acceder a un recurso es necesario conocer su identificador, pero la lista de activos se puede obtener dinámicamente utilizando el método AssetManager.list() en el código de la aplicación;
  • biblioteca- Bibliotecas nativas de Linux escritas con NDK (Native Development Kit).

Este directorio lo utilizan los productores de juegos que colocan allí sus motores de juegos escritos en C/C++, así como los creadores de aplicaciones de alto rendimiento (por ejemplo, Google Chrome). Descubrimos el dispositivo. Pero, ¿cómo se obtiene el archivo del paquete de la aplicación que le interesa? Dado que no es posible recuperar archivos APK del dispositivo sin root (se encuentran en el directorio /data/app), y no siempre es recomendable rootear, existen al menos tres formas de obtener el archivo de la aplicación en su computadora:

  • Extensión de descarga de APK para Chrome;
  • Aplicación Leecher APK real;
  • varios alojamiento de archivos y Varezniks.

Cuál usar es cuestión de gustos; preferimos usar aplicaciones separadas, por lo que describiremos el uso de Real APK Leecher, especialmente porque está escrito en Java y, en consecuencia, funcionará en Windows o Nix.

Después de iniciar el programa, debe completar tres campos: correo electrónico, contraseña e ID del dispositivo, y seleccionar un idioma. Los dos primeros son el correo electrónico y la contraseña de tu cuenta de Google que utilizas en el dispositivo. El tercero es el identificador del dispositivo y se puede obtener escribiendo el código en el marcador. # #8255## y luego encontrar la línea de ID del dispositivo. Al completar, solo necesita ingresar la ID sin el prefijo de Android.

Después de completar y guardar, a menudo aparece el mensaje "Error al conectarse al servidor". No tiene nada que ver con Google Play, así que no dudes en ignorarlo y buscar paquetes que te interesen.

Ver y modificar

Digamos que encontraste un paquete que te interesa, lo descargaste, lo descomprimiste... y cuando intentaste ver algún archivo XML, te sorprendiste al descubrir que el archivo no era texto. ¿Cómo descompilarlo y cómo trabajar con paquetes en general? ¿Es realmente necesario instalar el SDK? No, no es necesario instalar el SDK en absoluto. De hecho, todos los pasos para extraer, modificar y empaquetar paquetes APK requieren las siguientes herramientas:

  • Archivador ZIP para desempacar y empacar;
  • pequeño- Ensamblador/desensamblador de código de bytes de la máquina virtual Dalvik (code.google.com/p/smali);
  • apto- una herramienta para empaquetar recursos (de forma predeterminada, los recursos se almacenan en formato binario para optimizar el rendimiento de la aplicación). Incluido en el SDK de Android, pero se puede obtener por separado;
  • firmante- una herramienta para firmar digitalmente un paquete modificado (bit.ly/Rmrv4M).

Puede utilizar todas estas herramientas por separado, pero esto es un inconveniente, por lo que es mejor utilizar software de nivel superior creado sobre su base. Si trabaja en Linux o Mac OS X, existe una herramienta llamada apktool. Le permite descomprimir recursos en su forma original (incluidos archivos binarios XML y arsc), reconstruir un paquete con recursos modificados, pero no sabe cómo firmar paquetes, por lo que tendrá que ejecutar la utilidad de firma manualmente. A pesar de que la utilidad está escrita en Java, su instalación no es estándar. Primero necesitas obtener el archivo jar:

$ cd /tmp $ wget http://bit.ly/WC3OCz $ tar -xjf apktool1.5.1.tar.bz2

$ wget http://bit.ly/WRjEc7 $ tar -xjf apktool-install-linux-r05-ibot.tar.bz2

$ mv apktool.jar ~/bin $ mv apktool-install-linux-r05-ibot/* ~/bin $ export PATH=~/bin:$PATH

Si trabaja en Windows, existe una herramienta excelente llamada Virtuous Ten Studio, que también acumula todas estas herramientas (incluido el propio apktool), pero en lugar de una interfaz CLI, proporciona al usuario una interfaz gráfica intuitiva con la que puede realice operaciones para desempaquetar, desensamblar y descompilar con unos pocos clics. Esta herramienta es Donation-ware, es decir, a veces aparecen ventanas pidiéndote que consigas una licencia, pero al final esto se puede tolerar. No tiene sentido describirlo, porque puedes entender la interfaz en unos minutos. Pero apktool, debido a su naturaleza de consola, debería analizarse con más detalle.


Veamos las opciones de apktool. En resumen, hay tres comandos básicos: d (decodificar), b (compilar) y if (instalar marco). Si todo está claro con los dos primeros comandos, ¿qué hace la tercera declaración condicional? Descomprime el marco de interfaz de usuario especificado, que es necesario en los casos en los que se analiza cualquier paquete del sistema.

Veamos las opciones más interesantes del primer comando:

  • -s- no desmonte archivos dex;
  • -r- no descomprimir recursos;
  • -b- no insertar información de depuración en los resultados del desmontaje del archivo dex;
  • --ruta-marco- utilice el marco de interfaz de usuario especificado en lugar del integrado en apktool. Ahora veamos un par de opciones para el comando b:
  • -F- montaje forzado sin comprobar los cambios;
  • -a- indique la ruta a aapt (una herramienta para crear un archivo APK), si por alguna razón desea utilizarlo desde otra fuente.

Usar apktool es muy sencillo para hacer esto, solo especifica uno de los comandos y la ruta al APK, por ejemplo:

$ apktool d correo.apk

Después de esto, todos los archivos extraídos y desensamblados del paquete aparecerán en el directorio de correo.

Preparación. Deshabilitar la publicidad

La teoría es, por supuesto, buena, pero ¿para qué es necesaria si no sabemos qué hacer con el paquete desempaquetado? Intentemos aplicar la teoría a nuestro favor, es decir, modificar algún software para que no nos muestre publicidad. Por ejemplo, que sea Virtual Torch, una antorcha virtual. Este software es ideal para nosotros porque está repleto de publicidad molesta y, además, es lo suficientemente sencillo como para no perderse en la jungla del código.


Entonces, utilizando uno de los métodos anteriores, descargue la aplicación del mercado. Si decide utilizar Virtuous Ten Studio, simplemente abra el archivo APK en la aplicación y descomprímalo, cree un proyecto (Archivo -> Nuevo proyecto), luego seleccione Importar archivo en el menú contextual del proyecto. Si su elección recayó en apktool, simplemente ejecute un comando:

$ apktool d com.kauf.particle.virtualtorch.apk

Después de esto, aparecerá un árbol de archivos similar al descrito en la sección anterior en el directorio com.kauf.particle.virtualtorch, pero con un directorio pequeño adicional en lugar de archivos dex y un archivo apktool.yml. El primero contiene el código desensamblado del archivo ejecutable dex de la aplicación, el segundo contiene la información de servicio necesaria para que apktool vuelva a ensamblar el paquete.

El primer lugar donde debemos buscar es, por supuesto, AndroidManifest.xml. Y aquí nos encontramos inmediatamente con la siguiente línea:

No es difícil adivinar que es el responsable de otorgar permisos a la aplicación para utilizar la conexión a Internet. De hecho, si sólo queremos deshacernos de la publicidad, lo más probable es que simplemente necesitemos bloquear la aplicación de Internet. Intentemos hacer esto. Eliminamos la línea especificada e intentamos compilar el software usando apktool:

$ apktool b com.kauf.particle.virtualtorch

El archivo APK resultante aparecerá en el directorio com.kauf.particle.virtualtorch/build/. Sin embargo, no será posible instalarlo, ya que no tiene firma digital ni sumas de verificación de archivos (simplemente no tiene un directorio META-INF/). Debemos firmar el paquete usando la utilidad apk-signer. Lanzado. La interfaz consta de dos pestañas: en la primera (generador de claves) creamos claves, en la segunda (firmante de APK) firmamos. Para crear nuestra clave privada, complete los siguientes campos:

  • Archivo de destino- archivo de salida del almacén de claves; normalmente almacena un par de claves;
  • Contraseña Y Confirmar- contraseña para el almacenamiento;
  • Alias- nombre de la clave almacenada;
  • Contraseña de alias Y Confirmar- contraseña de clave secreta;
  • Validez- período de validez (en años). El valor predeterminado es óptimo.

Los campos restantes son, en general, opcionales, pero se debe completar al menos uno.


ADVERTENCIA

Para firmar una aplicación usando apk-signer, debe instalar el SDK de Android y especificar la ruta completa en la configuración de la aplicación.

Toda la información se proporciona únicamente con fines informativos. Ni los editores ni el autor son responsables de ningún posible daño causado por los materiales de este artículo.

Ahora puedes firmar el APK con esta clave. En la pestaña Firmante de APK, seleccione el archivo recién generado, ingrese la contraseña, el alias de clave y la contraseña, luego busque el archivo APK y haga clic audazmente en el botón "Firmar". Si todo va bien, se firmará el paquete.

INFORMACIÓN

Como firmamos el paquete con nuestra propia clave, entrará en conflicto con la aplicación original, lo que significa que cuando intentemos actualizar el software a través del mercado, recibiremos un error.

Solo se requiere una firma digital para software de terceros, por lo que si está modificando aplicaciones del sistema que están instaladas copiándolas en el directorio /system/app/, no necesita firmarlas.

Después de eso, descargue el paquete a su teléfono inteligente, instálelo y ejecútelo. ¡Listo, el anuncio desapareció! Sin embargo, en su lugar apareció un mensaje de que no tenemos Internet o no tenemos los permisos adecuados. En teoría, esto podría ser suficiente, pero el mensaje parece molesto y, para ser honesto, tuvimos suerte con una aplicación estúpida. Lo más probable es que el software escrito normalmente aclare sus credenciales o compruebe la conexión a Internet y, de lo contrario, simplemente se niegue a iniciarse. ¿Cómo ser en este caso? Por supuesto, edite el código.

Normalmente, los autores de aplicaciones crean clases especiales para mostrar anuncios y llaman a los métodos de estas clases cuando se inicia la aplicación o una de sus "actividades" (en términos simples, pantallas de aplicaciones). Intentemos encontrar estas clases. Vamos al directorio pequeño, luego a com (org contiene solo la biblioteca gráfica abierta cocos2d), luego a kauf (aquí está, porque este es el nombre del desarrollador y todo su código está ahí), y aquí está, el directorio de marketing. En su interior encontramos un montón de archivos con la extensión smali. Estas son clases, y la más notable de ellas es la clase Ad.smali, por cuyo nombre es fácil adivinar que es la que muestra publicidad.

Podríamos cambiar la lógica de su funcionamiento, pero sería mucho más fácil simplemente eliminar las llamadas a cualquiera de sus métodos desde la propia aplicación. Por tanto, salimos del directorio de marketing y nos dirigimos al directorio de partículas adyacente, y luego a virtualtorch. El archivo MainActivity.smali merece especial atención aquí. Esta es una clase estándar de Android creada por el SDK de Android y instalada como punto de entrada a la aplicación (análoga a la función principal en C). Abra el archivo para editarlo.

En el interior hay un código pequeño (ensamblador local). Es bastante confuso y difícil de leer debido a su naturaleza de bajo nivel, por lo que no lo estudiaremos, simplemente encontraremos todas las referencias a la clase Ad en el código y las comentaremos. Ingresamos la línea “Anuncio” en la búsqueda y llegamos a la línea 25:

Campo de anuncio privado:Lcom/kauf/marketing/Ad;

Aquí se crea un campo de anuncio para almacenar un objeto de clase de anuncio. Comentamos colocando un cartel ### delante de la fila. Seguimos la búsqueda. Línea 423:

Nueva instancia v3, Lcom/kauf/marketing/Ad;

Aquí es donde ocurre la creación del objeto. Comentemos. Continuamos la búsqueda y encontramos en las líneas 433, 435, 466, 468, 738, 740, 800 y 802 llamadas a métodos de la clase Ad. Comentemos. Parece que eso es todo. Ahorrar. Ahora es necesario volver a armar el paquete y verificar su funcionalidad y la presencia de publicidad. Para garantizar la pureza del experimento, devolvemos la línea eliminada de AndroidManifest.xml, ensamblamos el paquete, lo firmamos y lo instalamos.

Nuestro conejillo de indias. Publicidad visible

¡Ups! La publicidad desapareció sólo mientras la aplicación se estaba ejecutando, pero permaneció en el menú principal, que vemos cuando iniciamos el software. Entonces, espere, pero el punto de entrada es la clase MainActivity y el anuncio desapareció mientras se ejecutaba la aplicación, pero permaneció en el menú principal, entonces, ¿el punto de entrada es diferente? Para identificar el verdadero punto de entrada, vuelva a abrir el archivo AndroidManifest.xml. Y sí, contiene las siguientes líneas:

Nos dicen (y, lo que es más importante, a Android) que se debe iniciar una actividad denominada Inicio en respuesta a la generación de una intención (evento) android.intent.action.MAIN de la categoría android.intent.category.LAUNCHER. Este evento se genera cuando toca el ícono de la aplicación en el iniciador, por lo que determina el punto de entrada, es decir, la clase Inicio. Lo más probable es que el programador primero haya escrito una aplicación sin un menú principal, cuyo punto de entrada era la clase estándar MainActivity, y luego agregó una nueva ventana (actividad) que contiene el menú y se describe en la clase Inicio, y la convirtió manualmente en la entrada. punto.

Abra el archivo Start.smali y busque nuevamente la línea “Ad”, encontramos en las líneas 153 y 155 una mención de la clase FirstAd. También está en el código fuente y, a juzgar por su nombre, se encarga de mostrar anuncios en la pantalla principal. Miremos más allá, está la creación de una instancia de la clase FirstAd y una intención que, según el contexto, está relacionada con esta instancia, y luego la etiqueta cond_10, cuya transición condicional se realiza exactamente antes de crear una instancia. de la clase:

If-ne p1, v0, :cond_10 .line 74 nueva instancia v0, Landroid/content/Intent; ... :cond_10

Lo más probable es que el programa calcule de alguna manera aleatoriamente si se debe mostrar publicidad en la pantalla principal y, en caso contrario, salte directamente a cond_10. Bien, simplifiquemos su tarea y reemplacemos la transición condicional por una incondicional:

#si-ne p1, v0, :cond_10 ir a:cond_10

No hay más menciones de FirstAd en el código, por lo que cerramos el archivo y volvemos a ensamblar nuestra antorcha virtual usando apktool. Cópialo en tu teléfono inteligente, instálalo y ejecútalo. Voila, toda la publicidad ha desaparecido, por lo que nos felicitamos a todos.

Resultados

Este artículo es sólo una breve introducción a los métodos para piratear y modificar aplicaciones de Android. Muchos problemas quedaron detrás de escena, como la eliminación de protección, el análisis de código ofuscado, la traducción y reemplazo de recursos de aplicaciones, así como la modificación de aplicaciones escritas con el NDK de Android. Sin embargo, teniendo conocimientos básicos, es sólo cuestión de tiempo descubrirlo todo.

En este artículo aprenderás en qué consiste la aplicación de Android, cómo abrir un archivo APK y con qué programas.

¿Qué es un archivo APK?

APK es un formato del sistema operativo Android que se utiliza para archivos de aplicaciones ejecutables archivados, y el nombre del archivo en sí puede ser cualquier cosa, pero la extensión solo debe verse así.apk. Los análogos de APK en otros sistemas operativos son .msi en Windows, .sis en Symbian, .rpm o .deb en Linux.

Veamos que hay dentro.
De hecho, .apk es un archivo ZIP, por lo que puede visualizar el dispositivo interno utilizando cualquier administrador de archivos o archivador, por ejemplo WinRAR o la aplicación móvil X-plore.




Vale la pena recordar que solo obtienes acceso visual a los recursos internos y las capacidades de edición son extremadamente limitadas.

Veamos la estructura.
Dentro del .apk vemos una serie de archivos y carpetas, averigüemos para qué sirven:

  • AndroidManifest.xml es una especie de “pasaporte” de la aplicación desde el que se pueden conocer todos los puntos principales, requisitos, versión, permisos, etc.
  • META-INF este archivo contiene metadatos, es decir, datos sobre datos, sumas de verificación, rutas a datos, rutas y sumas de verificación de recursos, certificados. Puede abrir este archivo con cualquier editor de texto, pero se recomienda utilizar Notepad++.
  • La carpeta res contiene todos los recursos gráficos del programa, como iconos, imágenes, texto y elementos de la interfaz gráfica. También puede acceder fácilmente a la carpeta.
  • classs.dex es el código del programa de aplicación directo ejecutado por la máquina virtual Dalvik VM; puedes ver lo que hay dentro de este archivo solo descompilando el .apk, hablaremos de esto en otros artículos; resources.arsc: archivo XML compilado, este archivo contiene datos sobre todos los recursos involucrados en el programa.
  • lib: una carpeta con bibliotecas nativas, a cuyos recursos solo se puede acceder mediante programas especializados. El APK también puede contener archivos y carpetas como com, org, udk, pero no siempre.

Ahora veamos la estructura interna con más detalle; para ello necesitamos un programa de descompilación, Java y un archivo APK. La herramienta principal para desmontar .apk es Apktool, pero este programa solo funciona desde la línea, lo cual no es muy conveniente. Para un análisis más rápido y conveniente, puede usar APKing, que sigue siendo la misma Apktool, pero con la capacidad de trabajar desde el menú contextual.


Y así instalamos APKing como cualquier aplicación para Windows y, habiendo seleccionado .apk, pulsamos sobre él con el botón derecho del ratón y Shift al mismo tiempo, tras lo cual veremos lo siguiente:



Y seleccione la acción requerida, por ejemplo, descompilar completamente, luego el programa completará la operación y creará una carpeta con el mismo nombre.



Al abrir la carpeta tendremos acceso a todos los recursos del archivo APK.



Ahora todos los archivos de texto se pueden editar, respetando las reglas básicas, puede utilizar el popular programa Notepad++, por ejemplo, considere AndroidManifest.xml

Mencioné la aplicación SmartAPKTool. Puede extraer, comprimir y firmar archivos apk modificados. Su ventaja es la presencia de una interfaz gráfica. Sin embargo, existe un serio inconveniente. SmartAPKTool no se ha actualizado durante mucho tiempo y el programa no descomprime ni empaqueta correctamente las aplicaciones para las últimas versiones de Android. Por eso, aquí intentaré explicarte cómo utilizar la aplicación para estos fines. herramienta apk.

Nota 1.
El programa SmartAPKTool sigue siendo cómodo de utilizar para firmar archivos apk recopilados.
Nota 2.
Los enlaces a los programas mencionados en el artículo son ↓

Programa herramienta apk no tiene una interfaz gráfica. Esto es una desventaja para quienes no están acostumbrados a trabajar con la línea de comando. Pero también hay una ventaja: a diferencia de SmartAPKTool, veremos todos los errores, lo que significa que sabremos qué corregir.

Descarguemos dos archivos: uno común para todos los sistemas y el otro para nuestro sistema (Windows en el ejemplo):

Descomprimamos ambos archivos en la misma carpeta vacía (en nuestro ejemplo, C:\apktool\). Su contenido debería verse así:

A partir de ahora podemos utilizar el programa. herramienta apk.

Nota 3.
Los usuarios de versiones de Linux de 64 bits deberán instalar el paquete ia32-libs:

sudo apt-get instalar ia32-libs

En la misma carpeta colocamos el archivo que necesitamos descomprimir. Por ejemplo, que se llame orig.apk
Mantenga presionada la tecla Shift y haga clic derecho en cualquier espacio vacío en la carpeta (¡no haga clic en archivos!). Después de eso, seleccione "Abrir ventana de comando". En la consola que aparece, escribe:

apktool decodificar orig.apk

El archivo será descomprimido:

Ahora tenemos una carpeta con la aplicación descomprimida en el directorio C:\apktool\. Se llama igual que el archivo fuente, menos la extensión: C:\apktool\orig\ . Podemos cambiar los archivos fuente como se describe en el artículo Android: cómo instalar dos aplicaciones idénticas en un teléfono. Después de haber realizado los cambios, recopilaremos una copia de la aplicación empaquetando los archivos fuente en un apk:

apktool compilar resultado original.apk

Aquí result.apk es el nombre del archivo que se nos ocurrió para la compilación de la copia. Si no hay errores, se ensamblará el archivo:

El resto está fuera del alcance del artículo:

  1. Si hay errores durante el montaje, es necesario encontrar la causa y corregirlos.
  2. Todo lo que queda es firmar el archivo result.apk resultante. Esto se puede hacer usando SmartAPKTool como se mencionó anteriormente; Todo en él es intuitivo. También existen otras formas de firmar un archivo apk.
  3. También pueden ocurrir errores al instalar una copia, durante su inicio o funcionamiento. Deben detectarse mediante la utilidad adb incluida en el SDK de Android.

Debes firmar la aplicación, de lo contrario no se instalará. Los errores no ocurren con tanta frecuencia y los problemas más comunes que los causan se describen en el artículo.

En el proceso de utilizar varios firmware para dispositivos Android, a veces es necesario cambiar las aplicaciones del sistema integradas en el sistema operativo de una forma u otra. En este material consideraremos este tema en detalle.

Naturalmente, es necesario desmontar y volver a montar el archivo APK del sistema para que funcione de forma adecuada y estable. Averigüemos paso a paso qué se debe hacer para esto.

Primero, debe realizar el proceso de deodexación de los archivos APK del sistema. Te diremos cómo hacer esto en.

Entonces, el archivo .apk fue deodexado y descompilado. Analicemos la aplicación que nos interesa, déjele el nombre, para mayor claridad del ejemplo, estructura- res. apk. Lo recordamos en nuestra cabeza como la aplicación original.

Digamos que hemos realizado todos los cambios necesarios en la aplicación. Hablaremos más sobre todos los aspectos de los archivos APK en. Ahora necesitas empacarlo nuevamente. Recordemos la aplicación empaquetada terminada en nuestra mente como la aplicación modificada 2.

Ahora explicaremos por qué fue necesario recordar mentalmente las aplicaciones como originales y modificadas 2. La aplicación compilada por el programa ApkTool (o usando una extensión de interfaz gráfica de usuario como SmartApkTool) no funcionará, pero esto no es un problema. Realizamos las siguientes acciones:

Recopilar dichos archivos en APK es bastante simple. Para hacer esto, debe ejecutar apktool con el indicador de compilación apropiado y pasarle la ruta a la carpeta que contiene la aplicación descompilada. Por ejemplo, si tenemos una carpeta de aplicaciones que se encuentra en el mismo directorio que apktool, entonces el comando se vería así:

Caparazón

aplicación java -jar apktool.jar b

java - aplicación jar apktool .jar b

Después del ensamblaje, el archivo APK terminado se ubicará en el directorio aplicación/compilación. A continuación, debes firmar el APK. Esto se hace para garantizar que la aplicación funcione en dispositivos donde la depuración está prohibida. Es decir, está prohibido iniciar aplicaciones no firmadas en dichos dispositivos. Puede leer más sobre los certificados digitales y el procedimiento de firma de archivos aquí.

Firmar un archivo es muy sencillo: existe una utilidad especial para ello llamada signapk. Debe iniciarse pasando primero los certificados como argumentos, luego la ruta a la aplicación y finalmente la ruta a la aplicación firmada (el resultado, dónde guardarlo). Se parece a esto:

Caparazón

java -jar signapk.jar testkey.x509.pem testkey.pk8 *.apk apk_signed.apk

java - jar signapk .jar testkey .x509 .pem testkey .pk8 * .apk apk_signed .apk

¿Dónde se puede obtener ese certificado? Los certificados se pueden encontrar en Internet. O generarlo usted mismo. Se pueden encontrar instrucciones detalladas sobre cómo configurar y generar todos los archivos necesarios, por ejemplo, .

Conclusión

Como ves, descompilar y ensamblar archivos APK es un proceso bastante sencillo, que, además, se puede automatizar, facilitando el trabajo del investigador. La propia máquina virtual Dalvik también es fácil de aprender y abrir, lo que, por un lado, reduce la barrera de entrada para los desarrolladores y, por otro lado, es la razón principal de un porcentaje tan grande de piratería en la plataforma Android. Esta es en parte la razón por la que los desarrolladores de juegos, por ejemplo, generalmente no están interesados ​​en lanzar juegos interesantes con una trama. Es mucho más rentable, dada la actitud actual de los usuarios, remachar granjas con donaciones sorprendentemente similares entre sí. Por tanto, compramos aplicaciones, apoyamos a los desarrolladores y, como resultado, obtenemos contenido interesante. ¡Pero no hay absolutamente ninguna necesidad de donar!

Gracias a todos, nos vemos de nuevo.