¿Qué es el formato de archivo SMALI?
Los archivos .smali contienen bytecode de Dalvik o ART legible por humanos: la representación en lenguaje ensamblador del código de la aplicación Android. Los nombres smali y baksmali son palabras islandesas para ensamblador y desensamblador; las herramientas fueron creadas por Ben Gruver (JesusFreke) en 2010 y ahora son mantenidas por Google.
Cuando un .apk de Android se desempaqueta usando apktool o baksmali, cada clase compilada dentro del archivo .dex se extrae como un archivo .smali independiente. La sintaxis declara los metadatos de la clase con las directivas .class, .super e .implements; los campos con .field; y los métodos dentro de bloques .method....end method. Los opcodes individuales de Dalvik (invoke-virtual, move-result, return-void, entre otros) operan sobre registros con nombre (v0, v1, p0, etc.).
Los archivos .smali se utilizan principalmente en ingeniería inversa de Android, investigación de seguridad y desafíos CTF (Capture The Flag). Un flujo de trabajo típico es: desempaquetar un APK con apktool d, editar las fuentes .smali para parchear el comportamiento, luego reempaquetar con apktool b y volver a firmar. Son un artefacto de desensamblado intermedio; los usuarios habituales de Android nunca encuentran archivos .smali sin procesar.
Cada archivo .smali corresponde exactamente a una clase, incluidas las clases internas anónimas (que aparecen como archivos separados). Los opcodes disponibles varían según el nivel de API de Android, lo que se refleja en la versión del formato .dex (por ejemplo, 035 para Android 5, 039 para Android 12+).
Seguridad y protección
RIESGO: MEDIUMLos archivos .smali en sí mismos son texto plano y no pueden dañar su sistema cuando se ven en un editor. El riesgo es contextual: 1. Si desensambló un APK sospechoso, los archivos .smali revelan su comportamiento; busque cadenas ofuscadas, carga dinámica de código (DexClassLoader) y llamadas de red a hosts sospechosos. 2. Parchear APKs y volver a firmarlos para su distribución puede violar los términos de servicio de la aplicación y, en algunas jurisdicciones, las leyes de derechos de autor. El uso personal generalmente se acepta; la redistribución no. 3. Al descargar «parches» .smali de fuentes desconocidas, trátelos como código ejecutable; revíselos antes de aplicarlos.
Detalles del formato
en pocas palabrasProgramas que abren archivos SMALI
Detalles técnicos
especificación profunda| Desarrollador | Ben Gruver (JesusFreke), autor original; ahora mantenido por Google (baksmali/smali v3+) |
| Tipo de archivo | Ensamblador de bytecode Dalvik/ART legible por humanos en texto plano |
| Codificación | UTF-8 |
| Etimología del nombre | smali y baksmali significan ensamblador y desensamblador en islandés |
| Un archivo por clase | Cada archivo `.smali` se asigna exactamente a una clase Java o Kotlin, incluidas las clases internas anónimas |
| Equivalente compilado | `.dex` (Dalvik Executable) - `.smali` es la representación legible por humanos desensamblada |
| Tamaño típico | 1 KB - 200 KB por archivo; las aplicaciones complejas de Android producen miles de archivos `.smali` |
| Sintaxis de registros | Registros locales: `v0`, `v1`, ...; registros de parámetros: `p0`, `p1`, ... (`p0` es `this` en métodos de instancia) |
| Versiones de Opcode | Vinculado a la versión del formato `.dex`: 035 (Android 5-6), 037 (Android 7), 038 (Android 8-11), 039 (Android 12+) |
| Flujo de trabajo estándar | APK → desensamblado con `baksmali` → editar `.smali` → ensamblado con `smali` → APK reempaquetado (requiere volver a firmar) |
| Integración de herramientas | `apktool` utiliza `smali`/`baksmali` internamente para el desensamblado y reensamblado de APK |
| Casos de uso principales | Ingeniería inversa de Android, parcheo de aplicaciones, investigación de vulnerabilidades de seguridad, desafíos CTF |
| Lanzado | 2010 (baksmali 1.0 by Ben Gruver/JesusFreke) |
| Última versión | smali/baksmali 3.x (Google-maintained as of 2024) |
| Especificación | github.com |
Conversiones de SMALI
Preguntas y respuestas de la comunidad
preguntado por usuariosAún no hay preguntas; sea el primero en preguntar sobre los archivos SMALI.