Qu'est-ce que le format de fichier SMALI ?
Les fichiers .smali contiennent du bytecode Dalvik ou ART lisible par l'homme - la représentation en langage d'assemblage du code d'application Android. Les noms smali et baksmali sont des mots islandais pour assembleur et désassembleur ; les outils ont été créés par Ben Gruver (JesusFreke) en 2010 et sont désormais maintenus par Google.
Lorsqu'un .apk Android est dépaqueté à l'aide de apktool ou baksmali, chaque classe compilée à l'intérieur du fichier .dex est extraite sous forme de fichier .smali distinct. La syntaxe déclare les métadonnées de classe avec les directives .class, .super et .implements ; les champs avec .field ; et les méthodes à l'intérieur des blocs .method....end method. Les opcodes Dalvik individuels (invoke-virtual, move-result, return-void, et autres) opèrent sur des registres nommés (v0, v1, p0, etc.).
Les fichiers .smali sont principalement utilisés dans l'ingénierie inverse Android, la recherche en sécurité et les défis CTF (Capture The Flag). Un flux de travail typique est : dépaqueter un APK avec apktool d, éditer les sources .smali pour corriger le comportement, puis repaqueter avec apktool b et signer à nouveau. Ce sont des artefacts de désassemblage intermédiaires - les utilisateurs Android ordinaires ne rencontrent jamais de fichiers .smali bruts.
Chaque fichier .smali correspond à exactement une classe, y compris les classes internes anonymes (qui apparaissent comme des fichiers séparés). Les opcodes disponibles varient selon le niveau d'API Android, reflété dans la version du format .dex (par exemple, 035 pour Android 5, 039 pour Android 12+).
Sécurité et sûreté
RISQUE : MEDIUMLes fichiers .smali eux-mêmes sont du texte brut et ne peuvent pas nuire à votre système lorsqu'ils sont consultés dans un éditeur. Le risque est contextuel : 1. Si vous avez désassemblé un APK suspect, les fichiers .smali révèlent son comportement - recherchez les chaînes obfusquées, le chargement de code dynamique (DexClassLoader) et les appels réseau vers des hôtes suspects. 2. Corriger des APK et les signer à nouveau pour la distribution peut violer les conditions d'utilisation de l'application et, dans certaines juridictions, la loi sur le droit d'auteur. L'usage personnel est généralement accepté ; la redistribution ne l'est pas. 3. Téléchargement de « correctifs » .smali de sources inconnues - traitez-les comme du code exécutable ; examinez-les avant de les appliquer.
Détails du format
en brefProgrammes qui ouvrent les fichiers SMALI
Détails techniques
spécifications approfondies| Développeur | Ben Gruver (JesusFreke), auteur original ; désormais maintenu par Google (baksmali/smali v3+) |
| Type de fichier | Assemblage de bytecode Dalvik/ART lisible par l'homme en texte brut |
| Encodage | UTF-8 |
| Étymologie du nom | smali et baksmali signifient assembleur et désassembleur en islandais |
| Un fichier par classe | Chaque fichier `.smali` correspond à exactement une classe Java ou Kotlin, y compris les classes internes anonymes |
| Équivalent compilé | `.dex` (Dalvik Executable) - `.smali` est la représentation désassemblée lisible par l'homme |
| Taille typique | 1 Ko - 200 Ko par fichier ; les applications Android complexes produisent des milliers de fichiers `.smali` |
| Syntaxe des registres | Registres locaux : `v0`, `v1`, ... ; registres de paramètres : `p0`, `p1`, ... (`p0` est `this` dans les méthodes d'instance) |
| Versionnage des opcodes | Lié à la version du format `.dex` : 035 (Android 5-6), 037 (Android 7), 038 (Android 8-11), 039 (Android 12+) |
| Flux de travail standard | APK → désassemblage `baksmali` → édition `.smali` → assemblage `smali` → APK repaqueter (nouvelle signature requise) |
| Intégration d'outils | `apktool` utilise `smali`/`baksmali` en interne pour le désassemblage et le réassemblage d'APK |
| Principaux cas d'utilisation | Ingénierie inverse Android, correction d'applications, recherche de vulnérabilités de sécurité, défis CTF |
| Publié | 2010 (baksmali 1.0 by Ben Gruver/JesusFreke) |
| Dernière version | smali/baksmali 3.x (Google-maintained as of 2024) |
| Spécification | github.com |
Conversions SMALI
Q&R de la communauté
posées par les utilisateursPas encore de questions - soyez le premier à poser une question sur les fichiers SMALI.