Red de conocimiento informático - Conocimiento informático - Cómo obtener el archivo .smali de un programa de Android

Cómo obtener el archivo .smali de un programa de Android

Smali es un formato de archivo generado al descompilar aplicaciones de Android (*.apk). Es un lenguaje informático de bajo nivel similar al lenguaje ensamblador. Leer y escribir sintaxis pequeña requiere mucha paciencia y coraje. Este artículo presentará cómo descompilar y ejecutar código de programa de terceros (pequeña).

¿Qué es un archivo pequeño?

El archivo de programa de Android, es decir, el archivo apk, es en realidad un paquete comprimido. La estructura del archivo es la siguiente:

Entre ellos. Classes.dex es el programa. El archivo principal es el código del programa de código de bytes binario compilado en lenguaje Java. Este programa de código de bytes está compilado específicamente para lectura automática y es similar al código de máquina en lenguaje ensamblador. Sin embargo, si desea leer esta parte del programa directamente, lo mejor que puede hacer es convertir este archivo en un archivo pequeño.

apktool

El famoso descompilador apktool puede hacer esto. Puede descompilar archivos class.dex en un montón de archivos pequeños, que se almacenan en sus propias carpetas de acuerdo con la estructura del paquete del código fuente. De esta manera, puede chinoizar el apk o eliminar los anuncios incrustados en el apk.

La sintaxis pequeña es similar a la sintaxis del lenguaje ensamblador, implica operaciones directas en registros, que se pueden leer directamente, pero es más oscura, especialmente después de la ofuscación del código.

dex2jar

Algunas personas han creado una herramienta especial dex2jar, que puede convertir clases.dex en un archivo jar que jd-gui puede leer.

Pero dex2jar no es potente y la mayoría de los archivos java descompilados tienen errores de compilación. Puede leer y analizar estos archivos fácilmente, pero para obtener contenido más detallado debe confiar en smali. El editor recomendado para archivos pequeños es sublime + sublime-smali; consulte el artículo "Instalación del complemento de resaltado de sintaxis de código pequeño para Sublime Text".