Hva er SMALI-filformatet?
.smali-filer inneholder menneskelig lesbar Dalvik eller ART bytecode - assembly-språk-representasjonen av Android-applikasjonskode. Navnene smali og baksmali er islandske ord for «montør» (assembler) og «demonter» (disassembler); verktøyene ble laget av Ben Gruver (JesusFreke) i 2010 og vedlikeholdes nå av Google.
Når en Android .apk pakkes ut med apktool eller baksmali, blir hver kompilert klasse inne i .dex-filen trukket ut som en separat .smali-fil. Syntaksen deklarerer klasse-metadata med .class, .super og .implements-direktiver; felt med .field; og metoder inne i .method....end method-blokker. Individuelle Dalvik-opkoder (invoke-virtual, move-result, return-void med flere) opererer på navngitte registre (v0, v1, p0, osv.).
.smali-filer brukes primært i Android reverse-engineering, sikkerhetsforskning og CTF (Capture The Flag)-utfordringer. En typisk arbeidsflyt er: pakk ut en APK med apktool d, rediger .smali-kildene for å endre oppførsel, og pakk deretter på nytt med apktool b og signer på nytt. De er et mellomliggende deassemblerings-artefakt - vanlige Android-brukere ser aldri rå .smali-filer.
Hver .smali-fil tilsvarer nøyaktig én klasse, inkludert anonyme indre klasser (som vises som separate filer). Tilgjengelige opkoder varierer med Android API-nivå, noe som gjenspeiles i .dex-formatversjonen (f.eks. 035 for Android 5, 039 for Android 12+).
Sikkerhet og trygghet
RISIKO: MEDIUM.smali-filer i seg selv er ren tekst og kan ikke skade systemet ditt når de vises i et redigeringsprogram. Risikoen er kontekstuell: 1. Hvis du deassemblerte en mistenkelig APK, vil .smali-filene avsløre dens oppførsel - se etter obfuskert tekst, dynamisk kodelasting (DexClassLoader) og nettverkskall til mistenkelige verter. 2. Patching av APK-er og resignering for distribusjon kan bryte med appens brukervilkår og i noen jurisdiksjoner opphavsrettsloven. Personlig bruk er generelt akseptert; videresending er ikke det. 3. Nedlasting av .smali-«patcher» fra ukjente kilder - behandle disse som kjørbar kode; gå gjennom dem før de tas i bruk.
Formatdetaljer
i et nøtteskallProgrammer som åpner SMALI-filer
Tekniske detaljer
dyp spesifikasjon| Utvikler | Ben Gruver (JesusFreke), opprinnelig forfatter; vedlikeholdes nå av Google (baksmali/smali v3+) |
| Filtype | Ren tekst, menneskelig lesbar Dalvik/ART bytecode assembly |
| Koding | UTF-8 |
| Navne-etymologi | smali og baksmali er islandsk for montør og demonter |
| Én fil per klasse | Hver `.smali`-fil tilsvarer nøyaktig én Java- eller Kotlin-klasse, inkludert anonyme indre klasser |
| Kompilert ekvivalent | `.dex` (Dalvik Executable) - `.smali` er den deassemblerte menneskelig lesbare representasjonen |
| Typisk størrelse | 1 KB - 200 KB per fil; komplekse Android-apper produserer tusenvis av `.smali`-filer |
| Registersyntaks | Lokale registre: `v0`, `v1`, ...; parameterregistre: `p0`, `p1`, ... (`p0` er `this` i instansmetoder) |
| Opkode-versjonering | Knyttet til `.dex`-formatversjon: 035 (Android 5-6), 037 (Android 7), 038 (Android 8-11), 039 (Android 12+) |
| Standard arbeidsflyt | APK → `baksmali` deassemblering → rediger `.smali` → `smali` assemblering → ompakket APK (krever ny signering) |
| Verktøyintegrasjon | `apktool` bruker `smali`/`baksmali` internt for deassemblering og assemblering av APK-er |
| Primære bruksområder | Android reverse-engineering, app-patching, sikkerhetsforskning, CTF-utfordringer |
| Utgitt | 2010 (baksmali 1.0 by Ben Gruver/JesusFreke) |
| Siste versjon | smali/baksmali 3.x (Google-maintained as of 2024) |
| Spesifikasjon | github.com |
SMALI-konverteringer
Spørsmål og svar fra fellesskapet
spurt av brukereIngen spørsmål ennå - vær den første til å spørre om SMALI-filer.