Smali - Decompiling/[Modifying]/Compiling
Last updated
Last updated
Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Verdiep jou kundigheid in Mobile Security met 8kSec Akademie. Meester iOS en Android sekuriteit deur ons self-gebaseerde kursusse en kry gesertifiseer:
Soms is dit interessant om die toepassingskode te wysig om toegang te verkry tot verborge inligting vir jou (miskien goed obfuskeerde wagwoorde of vlae). Dan kan dit interessant wees om die apk te decompile, die kode te wysig en dit weer te compile.
Opcodes verwysing: http://pallergabor.uw.hu/androidblog/dalvik_opcodes.html
Met Visual Studio Code en die APKLab uitbreiding, kan jy outomaties decompile, wysig, hercompile, teken & installeer die toepassing sonder om enige opdrag uit te voer.
Nog 'n script wat hierdie taak baie vergemaklik, is https://github.com/ax/apk.sh
Met APKTool kan jy toegang verkry tot die smali kode en hulpbronne:
If apktool gee vir jou enige fout, probeer om die nuutste weergawe te installeer.
Sommige interessante lêers wat jy moet kyk is:
res/values/strings.xml (en alle xmls binne res/values/*)
AndroidManifest.xml
Enige lêer met die uitbreiding .sqlite of .db
As apktool
probleme het om die aansoek te dekodeer, kyk na https://ibotpeaches.github.io/Apktool/documentation/#framework-files of probeer om die argument -r
te gebruik (Moet nie hulpbronne dekodeer nie). Dan, as die probleem in 'n hulpbron was en nie in die bronnekode nie, sal jy nie die probleem hê nie (jy sal ook nie die hulpbronne dekompileer nie).
Jy kan verander instruksies, die waarde van sommige veranderlikes verander of nuwe instruksies byvoeg. Ek verander die Smali kode met behulp van VS Code, jy installeer dan die smalise uitbreiding en die redigeerder sal jou vertel of enige instruksie verkeerd is. Sommige voorbeelde kan hier gevind word:
Of jy kan onder sommige Smali veranderinge verduidelik kyk.
Na die aanpassing van die kode kan jy die kode hernoem met:
Dit sal kompiler die nuwe APK binne die dist gids.
As apktool 'n fout gooi, probeer om die nuutste weergawe te installeer
Dan moet jy 'n sleutel genereer (jy sal gevra word vir 'n wagwoord en vir 'n paar inligting wat jy lukraak kan invul):
Uiteindelik, teken die nuwe APK:
zipalign is 'n argiefuitlijningsinstrument wat belangrike optimalisering aan Android-toepassing (APK) lêers bied. Meer inligting hier.
As jy voorkeur gee aan apksigner in plaas van jarsigner, moet jy die apk teken nadat jy die optimalisering met zipalign toegepas het. MAAR LET OP DAT JY SLEGS DIE AANSOEK EEN KEER MOET TEKEN MET jarsigner (voor zipalign) OF MET aspsigner (na zipalign).
Vir die volgende Hello World Java kode:
Die Smali-kode sou wees:
Die Smali instruksieset is beskikbaar hier.
Sommige veranderlikes word aan die begin van die funksie gedefinieer met die opcode const, jy kan sy waardes verander, of jy kan nuwe eenhede definieer:
Recommendations:
As jy verklaarde veranderlikes binne die funksie gaan gebruik (verklaarde v0,v1,v2...) plaas hierdie lyne tussen die .local <number> en die verklarings van die veranderlikes (const v0, 0x1)
As jy die logging kode in die middel van die kode van 'n funksie wil plaas:
Voeg 2 by die aantal verklaarde veranderlikes: Byvoorbeeld: van .locals 10 na .locals 12
Die nuwe veranderlikes moet die volgende nommers van die reeds verklaarde veranderlikes wees (in hierdie voorbeeld moet dit v10 en v11 wees, onthou dat dit begin by v0).
Verander die kode van die logging funksie en gebruik v10 en v11 in plaas van v5 en v1.
Onthou om 3 by die aantal .locals aan die begin van die funksie te voeg.
Hierdie kode is voorberei om in die middel van 'n funksie ingevoeg te word (verander die nommer van die veranderlikes soos nodig). Dit sal die waarde van this.o neem, transformeer dit na String en dan 'n toast met sy waarde maak.
Verdiep jou kundigheid in Mobiele Sekuriteit met 8kSec Akademie. Meester iOS en Android sekuriteit deur ons self-gebaseerde kursusse en kry gesertifiseer:
Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)