Smali - Decompiling/[Modifying]/Compiling
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Wakati mwingine ni ya kuvutia kubadilisha msimbo wa programu ili kupata habari zilizofichwa kwako (labda nywila au bendera zilizofichwa vizuri). Kisha, inaweza kuwa ya kuvutia decompile apk, kubadilisha msimbo na kuirekebisha.
Opcodes reference: http://pallergabor.uw.hu/androidblog/dalvik_opcodes.html
Kwa kutumia Visual Studio Code na kiendelezi cha APKLab, unaweza decompile kiotomatiki, kubadilisha, kuirekebisha, kusaini na kufunga programu bila kutekeleza amri yoyote.
Script nyingine inayorahisisha kazi hii sana ni https://github.com/ax/apk.sh
Kwa kutumia APKTool unaweza kufikia smali code and resources:
Ikiwa apktool inakupa kosa lolote, jaribu kusanikisha toleo jipya zaidi
Baadhi ya faili za kuvutia unapaswa kuangalia ni:
res/values/strings.xml (na xml zote ndani ya res/values/*)
AndroidManifest.xml
Faili yoyote yenye kiendelezi .sqlite au .db
Ikiwa apktool
ina shida katika kufungua programu angalia https://ibotpeaches.github.io/Apktool/documentation/#framework-files au jaribu kutumia hoja -r
(Usifungue rasilimali). Kisha, ikiwa shida ilikuwa katika rasilimali na si katika msimbo wa chanzo, hutakuwa na shida hiyo (hutaweza pia kufungua rasilimali).
Unaweza kubadilisha maagizo, kubadilisha thamani ya baadhi ya mabadiliko au kuongeza maagizo mapya. Ninabadilisha msimbo wa Smali kwa kutumia VS Code, kisha unafunga smalise extension na mhariri atakuambia ikiwa kuna agizo lolote lililo sahihi. Baadhi ya mfano yanaweza kupatikana hapa:
Au unaweza kuangalia hapa chini baadhi ya mabadiliko ya Smali yaliyoelezewa.
Baada ya kubadilisha msimbo unaweza kurekebisha msimbo kwa kutumia:
It will compile the new APK inside the dist folder.
If apktool throws an error, try installing the latest version
Then, you need to generate a key (you will be asked for a password and for some information that you can fill randomly):
Hatimaye, sign APK mpya:
zipalign ni chombo cha kuoanisha archive ambacho kinatoa uboreshaji muhimu kwa faili za programu za Android (APK). More information here.
Ikiwa unataka kutumia apksigner badala ya jarsigner, unapaswa kusaini apk baada ya kutumia ukandamizaji na zipalign. LAKINI KUMBUKA KWAMBA UNAPASWA KUSAINI PROGRAMU KIMOJA TU KWA jarsigner (kabla ya zipalign) AU KWA aspsigner (baada ya zipalign).
Kwa msimbo wa Hello World Java ufuatao:
Msimbo wa Smali utakuwa:
The Smali instruction set is available here.
Baadhi ya vigezo vinafafanuliwa mwanzoni mwa kazi kwa kutumia opcode const, unaweza kubadilisha thamani zake, au unaweza kufafanua mpya:
Recommendations:
Ikiwa unatumia mabadiliko yaliyotangazwa ndani ya kazi (iliyotangazwa v0,v1,v2...) weka mistari hii kati ya .local <number> na matangazo ya mabadiliko (const v0, 0x1)
Ikiwa unataka kuweka msimbo wa logging katikati ya msimbo wa kazi:
Ongeza 2 kwa idadi ya mabadiliko yaliyotangazwa: Mfano: kutoka .locals 10 hadi .locals 12
Mabadiliko mapya yanapaswa kuwa nambari zinazofuata za mabadiliko yaliyotangazwa tayari (katika mfano huu yanapaswa kuwa v10 na v11, kumbuka kwamba inaanza katika v0).
Badilisha msimbo wa kazi ya logging na utumie v10 na v11 badala ya v5 na v1.
Kumbuka kuongeza 3 kwa idadi ya .locals mwanzoni mwa kazi.
Msimbo huu umeandaliwa kuingizwa katika katikati ya kazi (badilisha nambari ya mabadiliko kama inavyohitajika). Itachukua thamani ya this.o, kubadilisha kuwa String na kisha kutengeneza toast na thamani yake.
Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)