Kako deodeksirati vdelano programsko opremo z jbart. Kaj je odex in deodex v Androidu. Razpakiranje in analiza izvirne datoteke

Če niste le običajen uporabnik naprave, ki temelji na Androidu, ampak radi nameščate različno strojno programsko opremo, potem ste verjetno slišali ali prebrali na različnih forumih in straneh o “odexed” in “deodexed” firmware. Kaj je razlika? Skratka, vdelana programska oprema Deodex je bolj primerna za spreminjanje. Razvijalec deodeksirane vdelane programske opreme lahko samostojno spremeni videz ikon, konfigurira različne menije in tako naprej. Povejmo vam o vsem podrobneje.

Kaj je Deodex?

Vdelana programska oprema Android ima, tako kot vsaka druga aplikacija, poseben "izvršilni" del, ki je zasnovan za izvajanje vnaprej programiranih dejanj. Kot lahko vidite sami, so ti ukazi postavljeni v ločeno datoteko classes.DEX, ki je prisotna v vdelani programski opremi.

Pogosto v uradni vdelani programski opremi proizvajalec premakne to datoteko izven vdelane programske opreme, da pospeši delo in zmanjša količino pomnilnika, ki ga zasede vdelana programska oprema. Prehod na Android 5.0 z izvajalnim okoljem ART je bistveno spremenil proces zagona in nameščanja aplikacij, vendar se je ohranil sam koncept odex in deodex.

Prednosti in slabosti vdelane programske opreme Odex in Deodex


- Bolj zapleten postopek spreminjanja vdelane programske opreme
+ Majhno povečanje zmogljivosti vdelane programske opreme
+ Prihranite prostor pri nameščanju programov


+ Poenostavljena prilagoditev vdelane programske opreme
- Potrebujete več prostora za namestitev aplikacij

Kako pridobiti firmware Deodex?

Pred začetkom postopka deodeksiranja vdelane programske opreme morajo biti izpolnjeni številni pogoji. Prvi korak je, da ga namestite in konfigurirate v računalniku. Nato moramo pridobiti Root pravice na naši mobilni napravi, namestiti katerega koli upravitelja datotek z dostopom do sistemske particije in kopirati naslednje mape v pomnilnik naprave ali na kartico microSD.

/aplikacija
/zasebna aplikacija
/okvir


Deodex z JoelDroid Batch Deodexer

Ta pripomoček bo deloval samo z napravami, ki temeljijo na sistemu Android 5.0 in novejšem. Prav tako morate namestiti in prenesti samo aplikacijo.


  • Razpakirajte arhiv s pripomočkom ]JoelDroid Lollipop Batch Deodexer V 2.5.

  • Prej shranjene mape app, priv-app, framework

  • Zaženite pripomoček JoelDroid Lollipop Batch Deodexer, kliknite gumb "Prebrskaj" in označite imenik v računalniku, v katerega ste kopirali app, priv-app, framework

  • Kliknite na gumb "Začni postopek"

Deodex z uporabo Deodexerja za Android Runtime

Najprej prenesite arhiv in ga razpakirajte. Nadaljnji postopek se ne razlikuje od prejšnjega pripomočka:


  • Prej shranjene mape app, priv-app, framework v računalnik morate postaviti ločen imenik.

  • Zaženite pripomoček Deodexer for Android Runtime, določite imenik v računalniku, kamor ste kopirali app, priv-app, framework

  • Kliknite na gumb "Izvedi" in počakajte, da se postopek deodeksacije zaključi.

Deodex z uporabo Jbart

Za razliko od prejšnjih pripomočkov, ki lahko delujejo samo z napravami, ki temeljijo na sistemu Android 5.0 in novejših, ta pripomoček ni vezan na OS. Deodex lahko naredite za katero koli napravo od Android 2.3.x Ginerbread do Android 6.0 Marshmallow.



Vsak od vas je že večkrat slišal besedo "deodex" ali "odex". Običajno jih najdete tam, kjer je objavljena različna vdelana programska oprema za vašo napravo, na primer na XDA-Developers ali 4pda. Kaj torej pomeni DEODEX ali ODEX? Kakšne so njihove razlike? Kako narediti DEODEX? Odgovore na ta in druga vprašanja boste našli v naslednji številki povzetka »Kaj je ...«.
Odex (Optimized Dalvik Executable File) je datoteka, ki se nahaja v isti mapi s sistemskimi aplikacijami in v kateri je shranjena koda samega programa. Kot veste, vsak program potrebuje navodila, zahvaljujoč katerim bo (program) opravljal eno ali drugo funkcijo ali delo. To je točno programska koda, ki sem jo opisal prej. Če želite spremeniti katero koli sistemsko datoteko, se boste morali pri namestitvi vdelane programske opreme odex poglobiti v samo datoteko odex in .apk. Iz tega postane jasno, da ta proces ne bo zelo enostaven. Iz tega razloga je bila uvedena možnost vdelane programske opreme deodex.

Kot že veste, so v firmware odex datoteke shranjene »naključno«. Vendar pri deodexu te motnje tako rekoč ni. Vse datoteke v deodexu so shranjene kot arhiv .zip, v našem primeru pa so “zapakirane” v .apk. Zaradi tega postane razstavljanje aplikacije za nadaljnje modifikacije enostavnejše, zaradi dejstva, da je vse zapakirano na enem mestu, pa bo strojna programska oprema deodex morda zavzela manj prostora.

Vendar deodexa ne moremo neskončno hvaliti. Glavna pomanjkljivost deodexa je, da se aplikacije nalagajo malo dlje kot na odexu. Najverjetneje uporabnik tega ne bo opazil. Vendar si ne morem pomagati, da ne bi omenil, da je tako prednost odexa kot slabost deodexa ta, da vse sistemske aplikacije v odexu optimizira za določeno napravo proizvajalec sam. In to je nedvomno plus vdelane programske opreme odex.

Skoraj sem pozabil omeniti, da morate pri namestitvi različnih že pripravljenih sprememb sistema za vašo napravo imeti strojno programsko opremo deodex.

Verjetno je v tej situaciji pomen izrazov jasen. In pripravljen sem staviti, da nekateri ljudje že želijo preizkusiti deodex. Na svetovnem spletu je ogromno navodil za firmware deodex. Vendar si vas ne bom upal poslati, da jih iščete na Googlu, ampak bom preprosto tiho zapisal ves ta proces in poskušal poudariti vse malenkosti.

Navodila za različne različice Androida niso enaka. Ker je na moji napravi nameščen Android 5.0 Lollipop, bom napisal navodila za deodex posebej za to različico.

  1. Najprej moramo na svoj računalnik prenesti poseben pripomoček, JoelDroid Lollipop Batch Deodexer. Ta pripomoček za delovanje potrebuje program Java. Opažam, da aplikacija Java v pogostih primerih svojo pot zapiše nepravilno in napačno. Zaradi tega morate to pot ročno registrirati v skladu s temi navodili.
  • Po tem moramo na našo napravo, ki deluje na Android 5.0 Lollipop, namestiti kateri koli upravitelj datotek, prek katerega moramo kopirati tri glavne sistemske mape - APP, PRIV-APP, FRAEMWORK - v ločeno mapo na kartici SD. Nahajajo se v korenski mapi System.


  • Nato moramo ustvariti mapo MyROM v korenu katerega koli notranjega pogona v vašem računalniku. Nato v tej mapi ustvarimo še eno mapo, vendar z imenom System. Teoretično bi morali dobiti naslednjo pot - E:\MyROM\system. Kjer je "E" vaš notranji pomnilnik (trdi disk)
  • Tiste sistemske mape, ki smo jih kopirali v drugem koraku, moramo premakniti v mapo E:\MyROM\system.
  • Sedaj smo teoretično vse pripravili in že lahko nadaljujemo do točke DEODEKSACIJE.
  • Zaženite predhodno nameščen pripomoček JoelDroid Lollipop Batch Deodexer.
  • S klikom na gumb "Prebrskaj" v pripomočku moramo prikazati pot do E:\MyROM\system
  • Pot je nakazana, vse je pripravljeno. Vse kar moramo storiti je, da pritisnemo tipko “Start Prosecc”, po kateri se začne deoksacija. Ta postopek traja približno 10-15 minut.
  • Ko je deodeksacija končana, moramo nastale datoteke, ki se nahajajo vzdolž poti E:\MyROM\system, kopirati na bliskovni pogon MicroSD v vaši napravi.
  • Nato moramo prenesti AROMA FileManager in ga namestiti prek obnovitve po meri v vaši napravi. Toda pred namestitvijo moramo v razdelku Mount izbrati System, če ni izbran.
  • Po vsem tem moramo iti v koren datotečnega sistema in izbrisati mape APP, PRIV-APP in FRAEMWORK iz sistemske mape, samo izbrisati jih, saj bodo pri kopiranju mape ARM ostale in celoten postopek, upoštevajte , je šel v odtok.
  • Nato kopirajte mape deodex, ki ste jih predhodno prenesli v koraku 9, v mapo System v korenu celotnega datotečnega sistema.
  • Po tem moramo zagnati skript, ki nastavi dovoljenja za mape (RWXRX-RX), datoteke .apk in datoteke .xml (RW-R-R)
  • Nato moramo narediti wipe cache in wipe dalvik/art. Znova zaženite napravo in uživajte v vdelani programski opremi deodex, ki ste jo prejeli.

  • Prepričajte se, da imate nameščen DEODEX - vdelano programsko opremo lahko posodobite z naslednjimi kratkimi navodili: D


    Popolnoma verjamem, da sem govoril o najosnovnejših stvareh o izrazih ODEX in DEODEX in ta članek je lahko zaključen. Hvala vsem za pozornost, ocenite članek, lep dan in uspešno POLETJE!

    Uporabnike Androida lahko razdelimo v dve skupini. Prvi so tisti, ki jim je pomembno, da deluje stabilno in da telefon preprosto deluje. Drugi so tisti, ki komaj čakajo, da preizkusijo nove funkcije in preverijo drugo vdelano programsko opremo za svoj telefon, ki resnično radi poigravajo s svojim telefonom. Tu je glavna razlika med programsko opremo ODEX in DEODEX.

    Vdelana programska oprema ODEX (odexed).– to je uradna, blagovna znamka ali tovarniška programska oprema Android. DEODEX (deoksificiran) so vdelane programske opreme, ki jih spreminjajo uporabniki.

    Zakaj takšno razlikovanje?

    Vdelana programska oprema »Odexed« se takoj razkrije s prisotnostjo datotek s pripono .odex v mapi /system/app. Okrajšava odex pomeni »Optimizirana izvršljiva datoteka Dalvik«. Ta vrsta datoteke je zelo potrebna za jasno strukturo sistema, ki vsebuje vse informacije o aplikaciji. Android prejme podatke takoj neposredno brez razpakiranja apk datotek. Datoteke .odex se običajno naložijo v predpomnilnik Dalvik, kjer so shranjeni podatki o programih, ki jih uporabnik pogosto uporablja. Hitrost sistema se znatno poveča.

    Prednosti strojne programske opreme ODEX lahko zapišemo dejstvo, da se aplikacije odpirajo hitreje in apk datoteke zavzamejo malo prostora. Slabosti so težave pri vdoru in spreminjanju programov. Toda večina uporabnikov tega ne potrebuje, cenijo hitrost in stabilnost sistema.

    Takšna vdelana programska oprema je na primer idealna rešitev za tiste, ki želijo samo prenesti igre na tablico Android (http://vipsmart.org/all-genres/tablet/).

    DEODEX



    V »deodeksirani« vdelani programski opremi so informacije o aplikaciji vsebovane v datoteki apk. Koda, ki je običajno vstavljena v datoteko odex, je vključena v apk, imenovan classex.dex.

    Glavne prednosti takšnih vdelanih programov so, da jih je veliko lažje spreminjati (vsi podatki so na enem mestu), sistemske programe pa je lažje odstraniti.

    Ena od slabosti je, da se programi zaženejo dlje. Toda ta pomanjkljivost ni zelo pomembna. Dalvic-cache hrani vse podatke o aplikacijah, ki jih uporabnik pogosto uporablja. In programi se dolgo nalagajo šele po čiščenju predpomnilnika Dalvic. Na primer po namestitvi posodobitve vdelane programske opreme ali v drugih primerih.

    Če povzamemo, lahko z gotovostjo rečemo, da je "odexed" (tovarniška) programska oprema priporočljiva za tiste, ki cenijo hitrost in stabilnost. »Deoxed« (custom) so bolj primerni za tiste, ki jim je pomembno, da vdelano programsko opremo povsem prilagodijo svojim potrebam, preizkusijo nove funkcije in se »poglobijo« v sistem Android.

    Pozdravljeni Habr!

    Pred nekaj leti, ko sem se prvič seznanil z Androidom, sem od sodelavca slišal, da Android ponuja možnost namestitve spremenjene ali domače strojne programske opreme. Odkrito povedano, takrat sem bil daleč od tega. Pa še pol leta nazaj me take stvari komaj zanimajo. Globoko v srcu sem bil prepričan, da je to, kar počne proizvajalec, že ​​namenjeno normalni uporabi.

    Predstavljajte si moje razočaranje, ko sem kupil telefon iz Kitajske, kjer so tovarniške nastavitve prepovedovale uporabo Googla, Skypa, Facebooka in drugih aplikacij. Načeloma je bilo mogoče na nekatere stvari zamižati na eno oko, ko pa moj telefon ni zahteval uporabe Google računa, sem si obljubil, da bom zagotovo ugotovil, karkoli se mi bo zgodilo.

    Minilo je pol leta in moja programska oprema po meri se uspešno uporablja po vsem svetu.

    Ta serija člankov bo razpravljala o tem, kako narediti obratno programiranje za Android, implementirati popravke, prilagoditve in modifikacije.

    Preambula

    torej! Najprej opredelimo pojme, ki jih bomo uporabljali v danoČlanek. Vaše običajno razumevanje pa je lahko zelo drugačno.

    obliž- spreminjanje ali zamenjava obstoječe programske kode z namenom spreminjanja algoritma programa.
    Maud- praviloma dodajanje dodatne funkcionalnosti obstoječi programski kodi brez spreminjanja algoritma.
    Tweak- izboljšanje funkcionalnosti programa za lažji dostop do sistemskih parametrov.

    Prav tako želim opozoriti, da bodo vsi primeri vzeti za telefon HTC, vendar to ne pomeni, da teh informacij ni mogoče uporabiti na drugih telefonih.

    Priprava okolja

    Lahko brez podrobnih navodil o uporabi te ali one programske opreme. Če vas ta članek zanima in ste prebrali tako daleč, potem upam, da ste že izkušen uporabnik in imate izkušnje z uporabo ali vsaj eksperimentiranjem na tem področju. V javni domeni je veliko navodil, člankov in rezultatov testov, tako kot na Habréju. Prav tako ne bom opisoval nekaterih izrazov, sicer se bo članek izkazal za zelo dolgega in dolgočasnega. Napisali bomo samo bistvo. Prepričan sem, da ste že dolgo v sredo. Če ne, potem predlagam, da ga prenesete in namestite.

    1 . Android SDK. To je okolje za razvoj aplikacij za Android. Za izvedbo sprememb bomo zagotovo morali preveriti našo programsko kodo. Razvojno okolje je najboljše, kar lahko uporabimo.
    2 . Android kuhinja. Ta pripomoček vam bo omogočil delo s slikami sistemskih particij uradne ali neuradne vdelane programske opreme.
    3 . JD-GUI. Dekompilator kode Java. Takoj bi rad omenil, da je to najboljši decompiler v smislu enostavnosti uporabe.
    4 . DJ Java Decompiler. Še en decompiler ali disassembler, kot ga nekateri radi imenujejo, programske kode jezika Java. Ni primeren za uporabo, vendar razčleni kodo, ki je JD-GUI včasih ne razume.
    5 . mali. Še en disassembler, toda tokrat koda Dalvik. smali je potreben za razstavljanje, backsmali pa za sestavljanje kode.
    6 . dex2jar. Pripomoček za pretvorbo izvedljivih datotek kode Dalvik.

    Pretvorba vdelane programske opreme

    Seveda je vdelana programska oprema, ki jo imate na telefonu od proizvajalca, optimizirana za zmanjšanje porabe energije. Da bi bilo strojno programsko opremo mogoče spremeniti, jo je treba pretvoriti v obliko, ki omogoča spreminjanje kode. Za to se uporablja Android Kitchen. Seveda lahko to storite z rokami, kot sem počel prej, dokler nisem našel te "kuhinje". V internetu lahko preberete, kako odstraniti sistemsko področje iz telefona, namestiti okolje in narediti vdelano programsko opremo DEODEX. Če še ničesar ne razumete, mislim, da je vredno odložiti branje tega članka, dokler ne pridobite dovolj izkušenj.

    Ko se vdelana programska oprema spremeni iz optimizirane različice (ODEX - optimizirana izvedljiva koda dalvik, če me spomin ne vara) v DEODEX (to je NEoptimizirana), so vse izvedljive datoteke pripravljene za spreminjanje.

    Neposredne spremembe

    Ustvarjanje popravkov
    Kot sem že rekel, je bil moj telefon sprva prepovedan za uporabo Googla. No, ne glede na vse, ne morete iti v Playstore, ne morete nastaviti računa, telefonski imenik se v resnici ne sinhronizira. Zakaj potrebujete tak Android? Po dolgem kopanju v logcat same naprave sem našel vnose, ki pravijo, da je uporaba Googla prepovedana. Najbolj neprijetna stvar pri Androidu je, da vidite dnevnik, vendar ne veste, katera sistemska aplikacija ga ustvarja. Da bi ugotovil, od kod prihajajo moje noge, sem moral vse sistemske aplikacije razdeliti v razstavljeno kodo Java. Vzelo je veliko časa, vendar še vedno uporabljam delo, ki sem ga opravil pri analizi in iskanju prave kode. Koraki za pridobitev takih orodij so naslednji:
    1 . Naredite DEODEX vse firmware
    2 . Vašo novo vdelano programsko opremo DEODEX bo treba sestaviti in prenesti v telefon. Kako se to naredi, je tema drugega članka.
    3 . Iz vsake datoteke v /system/framework ekstrahirajte datoteko classes.dex in jo pretvorite v JAR z uporabo dex2jar.
    4 . Vsak nastali JAR odprite v JD-GUI in ga znova shranite v izvorno kodo
    5 . Odpakirajte izvorno kodo iz arhiva.

    Na koncu sem imel toliko map, kot je bilo datotek JAR v /system/framework, in vsaka mapa je imela strukturo izvorne kode Java.
    S preprostimi manipulacijami sem hitro našel mesto, ki je generiralo vnose v logcat.

    Ne bomo upoštevali celotne logike prepovedi, saj je vsak primer posebna zgodba. Moral sem porabiti nekaj ur, preden sem našel, kje so bila opravljena preverjanja, zgradil blokovni diagram algoritma v svoji glavi in ​​razumel, kam naj grem, da bi algoritem malo "pokvaril".

    Izkazalo se je preprosto. Obstaja podprogram, ki je na podlagi vnaprej določenih konstant ob stiku odgovoril, ali telefon pripada Kitajski ali ne.

    Koda je bila v datoteki HTCExtension.jar, in razred, ki je vseboval ta podprogram, je bil v

    Razpakiranje in analiza izvirne datoteke
    1 . Najprej moramo vzeti izvirno datoteko DEODEX JAR, ki je odgovorna za del kode, ki jo potrebujemo. V našem primeru HTCExtension.jar.
    2 . Odprite s katerim koli arhivarjem in izvlecite classes.dex od tam
    3 . Uporabite pretvornik dex2jar, da ga pretvorite v datoteko JAR. Ukaz: dex2jar.bat classes.dex
    4 . Odprite nastalo datoteko classes_dex2jar.jar v JD-GUI.
    5 . Da, najpogosteje JD-GUI dekompilira kodo ne tako, kot je videti v izvirniku, je razumljivo, vendar je precej berljivo. V izvorni kodi vidimo, da podprogram preverja parametre projekta in zastavico jezika vdelane programske opreme. V našem nesrečnem primeru je vrnjeno TRUE.
    javni statični boolean isChina() ( if ((HtcBuildFlag.Htc_PROJECT_flag == 216) || (HtcBuildFlag.Htc_PROJECT_flag == 218) || (HtcBuildFlag.Htc_PROJECT_flag == 23)); medtem ko (((HtcBuildFlag.Htc_PROJECT_flag == = 1) && (2 == HtcBuildFlag.Htc_LANGUAGE_flag)) || (HtcBuildFlag.Htc_PROJECT_flag == 27)) vrni resnično; vrni napačno; )
    6 . Za izdelavo popravka moramo razstaviti samo kodo Dalvik. Za to uporabljamo baksmali. Najprimernejši način je ustvariti ločeno mapo in vanjo spraviti tri datoteke skupaj: HTCExtension.jar, mali.jar in baksmali.jar. Podajte ukaz java -Xmx512m -jar baksmali.jar -a -d -o HTCExtension -x HTCExtension.jar

    To je API za vašo različico Androida. Za JB je 16
    - mapo, kjer se nahajajo vsa ogrodja vdelane programske opreme.

    V mojem primeru je bil ukaz
    java -Xmx512m -jar baksmali.jar -a 16 -d S:\dev\Android\Android-Kitchen\WORKING_JB_15\system\framework -o HTCExtension -x HTCExtension.jar
    7 . V naši novo ustvarjeni mapi se je pojavila mapa HTCExtension in v njej naše datoteke z Dalvik kodo.
    8 . Iskanje datoteke na poti \com\htc\util\contacts\BuildUtils$Customization.java in poglej kodo:
    .method public static isChina()Z .registers 3 .prologue const/4 v0, 0x1 .line 276 sget-short v1, Lcom/htc/htcjavaflag/HtcBuildFlag;->Htc_PROJECT_flag:S const/16 v2, 0xd8 if-eq v1 , v2, :cond_13 sget-short v1, Lcom/htc/htcjavaflag/HtcBuildFlag;->Htc_PROJECT_flag:S const/16 v2, 0xda if-eq v1, v2, :cond_13 sget-short v1, Lcom/htc/htcjavaflag/HtcBuildFlag ;->Htc_PROJECT_flag:S const/16 v2, 0x17 if-ne v1, v2, :cond_14 .line 297:cond_13:goto_13 return v0 .line 283:cond_14 sget-short v1, Lcom/htc/htcjavaflag/HtcBuildFlag;-> Htc_PROJECT_flag:S if-ne v1, v0, :cond_1d .line 285 const/4 v1, 0x2 sget-short v2, Lcom/htc/htcjavaflag/HtcBuildFlag;->Htc_LANGUAGE_flag:S if-eq v1, v2, :cond_13 .line 291:cond_1d sget-short v1, Lcom/htc/htcjavaflag/HtcBuildFlag;->Htc_PROJECT_flag:S const/16 v2, 0x1b if-eq v1, v2, :cond_13 .line 297 const/4 v0, 0x0 goto:goto_13 .end metoda
    9 . Strašljivo, kajne? Nič ni jasno. Vendar je to težava popravljiva. Ko ustvarite nekaj lastnih popravkov in si tako pridobite izkušnje, lahko preprosto spremenite kodo brez orodij tretjih oseb. V našem primeru v tej kodi
    .prologue const/4 v0, 0x1 spremenljivki v0 dodeli vrednost 1, to je TRUE. Potem so tu še vse vrste preverjanj in če telefon ni kitajski, se spremeni vrednost spremenljivke:
    .vrstica 297 const/4 v0, 0x0 goto:goto_13
    10 . Najlažji način, da rešite očeta ruske demokracije, je, da spremenite kodo v naslednjo:
    .prologue const/4 v0, 0x0 , to je sprememba vrednosti spremenljivke iz 1 v 0. Se pravi, ne glede na vse bi bila vedno vrnjena vrednost FALSE in v JD-GUI bi bila koda videti kot public static boolean isChina() ( if (( HtcBuildFlag.Htc_PROJECT_flag == 216) || (HtcBuildFlag.Htc_PROJECT_flag == 218) || (HtcBuildFlag.Htc_PROJECT_flag == 23)); medtem ko (((HtcBuildFlag.Htc_PROJECT_flag == 1) ) && ( 2 == HtcBuildFlag.Htc _LANGUAGE_flag)) || (HtcBuildFlag.Htc_PROJECT_flag == 27)) return false; return false; )
    11 . Da, metoda bo delovala. A ne iščemo lahkih poti – tokrat. Drugič, ni ravno lepo. Želel bi kodo nekaj takega
    javna statična logična vrednost isChina() ( vrni napačno; )
    12 . Kako lahko dobimo kodo Dalvik za to izvorno kodo? Za začetnike bomo naredili majhen trik.

    Ustvarjanje kode Dalvik
    1 . Odprite Android SDK.
    2 . Ustvarimo nov projekt in v našem edinem testnem razredu napišemo naslednjo kodo
    paket ru.habrahabr.test; preizkus javnega razreda ( javna statična logična vrednost isChina() ( return false; ) )
    3 . Sestavimo naš projekt in nato vzamemo sestavljeno aplikacijo iz delovnega prostora.
    4 . Sestavljeno aplikacijo damo v mapo, kjer smo odstranili JAR datoteko.
    5 . Podajte ukaz java -Xmx512m -jar baksmali.jar -a -d -o test -x test .apk
    6 . Novozgrajeno aplikacijo smo razstavili v kodo Dalvik.
    7 . Odprite našo datoteko test.smali in si oglejte kodo tam
    .method public static isChina()Z .registers 1 .prologue .line 7 const/4 v0, 0x0 return v0 .end method
    8 . To je to, koda popravkov je pripravljena.
    Valjanje obliža
    1 . Koda Dalvik je posejana z oznakami, ki označujejo vrstico kode v izvirni izvorni datoteki. To je potrebno pri prikazovanju napak, če obstajajo, v vašem programu. Koda dobro deluje tudi brez podajanja vrstic.
    2 . Izbrišemo vrstice z oštevilčenjem vrstic, kopiramo in zamenjamo metodo (podprogram) v našem \com\htc\util\contacts\BuildUtils$Customization.java mapa.
    .method javna statična isChina()Z .registri 1 .prologue const/4 v0, 0x0 return v0 .end metoda
    3 . Shranite datoteko. Da, pozabil sem povedati, potrebujete navaden urejevalnik, na primer Notepad++ ali EditPlus. Kdo je kateri všeč?
    Prevajanje in izdelava popravljene datoteke JAR
    1 . Z uporabo backsmalija smo iztrebili našo datoteko JAR in zdaj jo moramo sestaviti nazaj.
    2 . Podajte ukaz java -Xmx512m -jar smali.jar -a 16 HTCExtension -o classes.dex
    3 . Datoteka classes.dex se prikaže v naši mapi
    4 . Ponovno odprtje HTCExtension.jar datoteko z arhivarjem in v njej zamenjajte obstoječo razredi.dex našemu pravkar ustvarjenemu.
    5 . To je to, naše HTCExtension.jar vsebuje spremenjeno programsko kodo.
    Zamenjava izvirne datoteke s popravljeno
    Običajno so za običajne uporabnike ustvarjeni posebni skripti, ki se zamenjajo z obnovitvijo. Ampak nas to ne zanima. Prvič, to je dolgo in dolgočasno, in drugič, smo izkušeni uporabniki in si lahko privoščimo nekaj tankosti.

    1 . Trenutno delovno datoteko lahko zamenjate z naslednjimi ukazi, če že imate vdelano programsko opremo DEODEX in imate root dostop:

    Adb push HTCExtension.jar /sdcard/HTCExtension.jar adb shell su mount -o remount -rw /system dd if=/system/framework/HTCExtension.jar of=/system/framework/HTCExtension.jar.back dd if=/sdcard /HTCExtension.jar of=/system/framework/HTCExtension.jar chmod 644 /system/framework/HTCExtension.jar rm /data/dalvik-cache/system@ [e-pošta zaščitena] ponovni zagon @classes.dex

    Prvi ukaz naloži popravljeno datoteko na bliskovni pogon
    2. ukaz odpre lupino
    3. ukaz omogoča korenski dostop
    Četrti ukaz priklopi sistem v načinu branja/pisanja
    5. ukaz naredi varnostno kopijo datoteke
    Šesti ukaz prepiše obstoječo datoteko z novo popravljeno.
    7. ukaz konfigurira dovoljenja
    8. ukaz izbriše predpomnilnik
    9. ukaz znova zažene napravo.

    2 . Hvala, ker ste prebrali do te točke, ostalo je še malo.
    3 . Po ponovnem zagonu bo vaša nova popravljena koda začela veljati.
    4 . Če koda ne deluje ali pride do napake, lahko s preprostimi kombinacijami vrnete varnostno kopijo.
    adb shell su mount -o remount -rw /system dd if=/system/framework/HTCExtension.jar.back of=/system/framework/HTCExtension.jar rm /data/dalvik-cache/system@ [e-pošta zaščitena] ponovni zagon @classes.dex

    Epilog

    Da, nekaterim se je ta članek zdel preveč natančen, nekaterim težko razumljiv, nekaterim pa neuporaben. Namenoma sem se izognila poglobljenim detajlom in ilustracijam, kako vse skupaj izgleda v živo in v praksi. Prvič, to delo bo nehvaležno in bo sprožalo samo še več vprašanj. Drugič, ne želim videti vojske uporabnikov na forumih, ki se pritožujejo, da so uničili svoj telefon.

    Za naslednji članek vam bom povedal, kako narediti Tweeks. Prikazan bo primer uporabe samodejnega snemanja telefonskih klicev z domačimi telefonskimi orodji. Hvala za vašo pozornost.

    P.S. Če kaj ni jasno ali nejasno, postavite vprašanja - vedno bom z veseljem odgovoril in pojasnil.

    Med uporabo različnih vdelanih programov za Android ste verjetno naleteli na pojma, kot sta »odeksirano« in »deodeksirano«. In pogosto, ko izvajate kakršne koli manipulacije z vdelano programsko opremo, morate vedeti, ali je "odexed" ali "deodexed", da ne naredite ničesar neumnega. Kaj je torej za tema izrazoma?

    Odexed ROM

    Če je vdelana programska oprema označena kot odexed, boste v mapi sistemskih aplikacij /system/app našli datoteke s pripono .odex. Ta razširitev pomeni ""Optimizirana izvršljiva datoteka Dalvik"". Poleg običajne datoteke APK boste našli njeno kopijo .odex. Na primer Browser.apk in browser.odex.

    Kaj je datoteka .odex?

    Ta datoteka služi predvsem za organiziranje strukture katere koli aplikacije, vsebuje navodila za uporabo in omogoča Androidu hiter dostop do njih brez nepotrebnega iskanja in ekstrahiranja iz datoteke .apk. Datoteke Odex se neposredno naložijo v predpomnilnik navideznega stroja Java »dalvik«, kar sistemu omogoča veliko hitrejše delovanje.

    Prednosti strojne programske opreme Odexed

    Aplikacije se zaženejo veliko hitreje, ker je njihova koda vnaprej naložena v predpomnilnik Dalvik. Velikost datotek .apk je majhna, zato zavzamejo manj prostora.

    Slabosti vdelane programske opreme Odexed

    Aplikacija za spreminjanje/teme/hekanje postane veliko bolj zapletena, saj je koda zdaj na dveh različnih mestih. Če izbrišete katero koli aplikacijo, je treba izbrisati tudi datoteko .odex. Če ga ne odstranite, lahko pride do napak.

    Deodeksiran ROM

    Pri tej vrsti vdelane programske opreme se vsa navodila in koda za aplikacije nahajajo v datotekah .apk. Koda, ki je bila shranjena v datoteki .odex, je zdaj vdelana v klicani .apk razredi.dex.

    Prednosti deodeksirane vdelane programske opreme

    Deodeksirano je veliko lažje za spreminjanje/teme/hekanje, saj je vsa koda zdaj v eni datoteki .apk. Sistemske aplikacije je lažje odstraniti, ker morate odstraniti samo eno datoteko APK.

    Slabosti deodeksirane vdelane programske opreme

    Aplikacije se zaganjajo počasneje. A ne samo aplikacije, tudi sam sistem se nalaga dlje, saj se vsebina aplikacije nalaga iz sistema in ne neposredno.

    Firmware za Android, ki prihaja neposredno od proizvajalcev različnih naprav, je večinoma odexed. Vdelana programska oprema po meri je v 9 primerih od 10 deodeksirana. Kar dobimo, je, da ima odexed firmware boljšo hitrost delovanja, Deodexed je bolj primeren za vdore, spreminjanje in druge manipulacije. To je to, na kratko o glavnem.