Smali - Decompiling/[Modifying]/Compiling
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 decompileer, die kode te wysig en dit weer te compileer.
Opcodes verwysing: http://pallergabor.uw.hu/androidblog/dalvik_opcodes.html
Vinige Weg
Met Visual Studio Code en die APKLab uitbreiding, kan jy outomaties decompileer, wysig, hercompileer, 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
Decompileer die APK
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 toepassing 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).
Verander smali kode
Jy kan verander instruksies, die waarde van sommige veranderlikes verander of voeg nuwe instruksies by. 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 onderaan kyk na sommige Smali veranderinge verduidelik.
Hernoem die APK
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
Teken die nuwe APK
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:
Optimaliseer nuwe aansoek
zipalign is 'n argiefuitlijningsinstrument wat belangrike optimalisering aan Android-toepassing (APK) lêers bied. Meer inligting hier.
Teken die nuwe APK (weer?)
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).
Modifying Smali
Vir die volgende Hello World Java kode:
Die Smali-kode sou wees:
Die Smali instruksieset is beskikbaar hier.
Ligte Veranderinge
Verander aanvanklike waardes van 'n veranderlike binne 'n funksie
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:
Basiese Operasies
Groter Veranderinge
Teken
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.
Toasting
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 maak met sy waarde.
Last updated