Smali - Decompiling/[Modifying]/Compiling
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
Fast Way
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
Decompile the APK
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).
Badilisha msimbo wa smali
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.
Recompile APK
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
Sign the new APK
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:
Optimize new application
zipalign ni chombo cha kuoanisha archive ambacho kinatoa uboreshaji muhimu kwa faili za programu za Android (APK). More information here.
Saini APK mpya (tena?)
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).
Kubadilisha Smali
Kwa msimbo wa Hello World Java ufuatao:
Msimbo wa Smali utakuwa:
The Smali instruction set is available here.
Mabadiliko ya Mwanga
Badilisha thamani za awali za kigezo ndani ya kazi
Baadhi ya vigezo vinafafanuliwa mwanzoni mwa kazi kwa kutumia opcode const, unaweza kubadilisha thamani zake, au unaweza kufafanua mpya:
Operesheni za Msingi
Mabadiliko Makubwa
Kurekodi
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.
Toasting
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.
Last updated