Proceso de descompilación y reempaquetado de Apk.

1. Descompila el código

1. Para descompilar el código Java, primero debe descargar la herramienta dex2jar . La dirección de descarga es: https://sourceforge.net/projects/dex2jar/files/
. La última versión es 2.0. Después de descargarla, descomprímala.
2. Cambie el nombre del archivo apk que se va a descompilar al formato zip y descomprímalo. Preste atención al archivo clases.dex , que almacena todo el código Java. Copie el archivo clases.dex al directorio raíz después de descomprimir dex2jar.
3. Abra cmd, ingrese el directorio raíz donde se descomprime dex2jar y ejecute el comando:

d2j-dex2jar classes.dex

Como se muestra abajo:

Una vez ejecutado el comando, se generará el archivo clases-dex2jar.jar en el directorio correspondiente.

4. Para ver el código Java, también necesita descargar la herramienta jd-gui . La dirección de descarga es: http://jd.benow.ca/ . La última versión es 1.4.0. Después de descargarla, descomprímala y úsela. jd-gui.exe Abra el archivo jar descompilado arriba:

En este punto, el código Java se ha descompilado con éxito
. En cuanto a los archivos de recursos, mire nuevamente el archivo descomprimido correspondiente al archivo apk. Todos los archivos xml están confusos, como AndroidManifest.xml :

Por supuesto, todavía hay formas de restaurar los archivos de recursos originales, continúa leyendo.

2. Descompilar recursos

1. Para descompilar los archivos de recursos en el apk, necesita la herramienta apktool . Dirección de descarga: http://ibotpeaches.github.io/Apktool/install/ . Ingrese a la página de descarga:

Siga las instrucciones 1 y 2 en la figura para descargar los dos archivos apktool.bat y apktool.jar . El último apktool es 2.1.1 y colóquelos en la misma carpeta:

,
2. Coloque el archivo apk que se va a descompilar en la carpeta apktool, abra cmd, ingrese al directorio de la carpeta apktool y ejecute el comando:

apktool d test.apk

Como se muestra abajo:

Después de una ejecución exitosa, se generará una carpeta de prueba en el directorio actual:

Entre ellos, la carpeta res almacena todos los recursos descompilados, la carpeta pequeña almacena todos los códigos descompilados y AndroidManifest.xml es el archivo de manifiesto que ha sido descompilado y restaurado. El archivo pequeño en la carpeta pequeña utiliza el lenguaje de registro utilizado por la máquina virtual de Android. Si puede comprender el archivo pequeño, puede modificar la lógica del código fuente. Es terrible... Por supuesto, este no es nuestro enfoque. .
En este momento, verifique el archivo AndroidManifest.xml y descubra que se ha descompilado correctamente:

3. Reempaquetar

1. Ahora que el archivo de recursos se ha descompilado exitosamente, podemos modificar algo apropiadamente, como cambiar el ícono, cambiar el archivo de diseño, etc. Aquí cambiamos el valor del canal en AndroidManifest.xml a 10001. Luego comenzamos a reempaquetar y también cambiamos. al directorio de la carpeta apktool en cmd y ejecute el comando:

apktool b test -o new_test.apk

Como se muestra abajo:

Después de una ejecución exitosa, se generará un nuevo archivo new_test.apk en el directorio actual:

2. Sin embargo, este archivo apk no se puede instalar actualmente porque es necesario volver a firmarlo. Si no hay un archivo de firma, puede generar uno fácilmente a través de Android Studio, coloque el archivo de firma preparado en el directorio raíz de la carpeta apktool y continúe ejecutando el comando en cmd:

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore <签名文件名> -storepass <签名密码> <待签名Apk文件名> <签名别名>

Como se muestra abajo:

Tenga en cuenta que el archivo de comando jarsigner se almacena en el directorio bin de jdk, que debe configurarse en las variables de entorno del sistema antes de que este comando pueda ejecutarse en cualquier lugar.
3. Una vez completada la firma, se recomienda realizar una operación de alineación en el archivo APK, lo que puede hacer que el programa se ejecute más rápido en el sistema Android. La operación de alineación utiliza la herramienta zipalign, que se encuentra en **/build- directorio tools/**. , este directorio debe configurarse en la variable de entorno del sistema antes de que este comando pueda ejecutarse en cualquier lugar. Continúe ejecutando el comando en cmd:

zipalign 4 new_test.apk nuevo_test_aligned.apk

Después de una ejecución exitosa, se generará un archivo new_test_aligned.apk alineado:

4. Finalmente, puede usar el siguiente comando para verificar si la firma del apk fue exitosa:

jarsigner -verify -verbose -certs new_test_aligned.apk

Como se muestra abajo:

Hasta ahora, se ha introducido el proceso de descompilación y reempaquetado de apk.

por fin

Si desea convertirse en arquitecto o superar el rango salarial de 20 a 30 mil, no se limite a la codificación y los negocios, debe poder seleccionar, expandir y mejorar su pensamiento de programación. Además, una buena planificación profesional también es muy importante y el aprendizaje de hábitos es importante, pero lo más importante es poder perseverar, cualquier plan que no se pueda implementar de manera consistente es una charla vacía.

Si no tiene orientación, aquí tiene un conjunto de "Notas avanzadas sobre los ocho módulos de Android" escritas por un arquitecto senior de Alibaba para ayudarlo a organizar sistemáticamente el conocimiento desordenado, disperso y fragmentado, para que pueda dominar de manera sistemática y eficiente varios Puntos de conocimiento del desarrollo de Android.
imagen
En comparación con el contenido fragmentado que leemos habitualmente, los puntos de conocimiento de esta nota son más sistemáticos, más fáciles de entender y recordar y están estrictamente organizados de acuerdo con el sistema de conocimiento.

Bienvenidos a todos al soporte con un clic y tres enlaces. Si necesita la información del artículo, simplemente escanee la tarjeta WeChat de certificación oficial de CSDN al final del artículo para obtenerla gratis ↓↓↓ (También hay una pequeña bonificación de Robot ChatGPT al final del artículo, no te lo pierdas)

PD: También hay un robot ChatGPT en el grupo, que puede responder las preguntas técnicas o laborales de todos.
imagen

Supongo que te gusta

Origin blog.csdn.net/weixin_43440181/article/details/132859384
Recomendado
Clasificación