Ako deodexovať firmvér pomocou jbart. Čo je odex a deodex v systéme Android. Rozbalenie a analýza pôvodného súboru

Ak nie ste len obyčajný používateľ zariadenia na založené na systéme Android a radi si inštalujete rôzny firmvér, potom ste už pravdepodobne počuli alebo čítali na rôznych fórach a stránkach o firmvéri „odexed“ a „deodexed“. Aký je rozdiel? Firmvér Deodex je skrátka vhodnejší na úpravu. Vývojár deodexovaného firmvéru sa môže nezávisle zmeniť vzhľad ikony, prispôsobenie rôznych ponúk atď. Povedzme si o všetkom podrobnejšie.

Čo je Deodex?

Firmvér systému Android, rovnako ako každá iná aplikácia, má špeciálnu „výkonnú“ časť, ktorá je určená na vykonávanie vopred naprogramovaných akcií. Ako môžete sami vidieť, tieto príkazy sú umiestnené v samostatný súbor class.DEX, ktorý je prítomný vo firmvéri.

Často výrobca oficiálny firmvér presunie tento súbor mimo firmvéru, aby urýchlil prácu a znížil množstvo pamäte obsadenej firmvérom. Prechod na Android 5.0 s runtime prostredím ART výrazne zmenil proces spúšťania a inštalácie aplikácií, no samotný koncept odex a deodex zostal zachovaný.

Výhody a nevýhody firmvéru Odex a Deodex


- Zložitejší proces úpravy firmvéru
+ Malé zvýšenie výkonu firmvéru
+ Ušetrite miesto pri inštalácii programov


+ Zjednodušené prispôsobenie firmvéru
- Potrebujete viac miesta na inštaláciu aplikácií

Ako získať firmvér Deodex?

Pred spustením procesu deodexovania firmvéru je potrebné splniť niekoľko podmienok. Prvým krokom je inštalácia a konfigurácia na vašom počítači. Ďalej musíme získať práva root na naše mobilné zariadenie, nainštalujte ľubovoľný Správca súborov s prístupom do systémového oddielu a skopírujte nasledujúce priečinky do pamäte zariadenia alebo na kartu microSD.

/aplik
/priv-app
/rámec


Deodex pomocou JoelDroid Batch Deodexer

Tento nástroj bude fungovať iba so zariadeniami so systémom Android 5.0 a novším. Musíte si tiež nainštalovať a stiahnuť samotnú aplikáciu.


  • Rozbaľte archív pomocou pomôcky ]JoelDroid Lollipop Batch Deodexer V 2.5.

  • Predtým uložené priečinky app, priv-app, framework

  • Spustite pomôcku JoelDroid Lollipop Batch Deodexer, kliknite na tlačidlo „Prehľadávať“ a označte adresár v počítači, do ktorého ste skopírovali app, priv-app, framework

  • Kliknite na tlačidlo "Spustiť proces"

Deodex pomocou Deodexer pre Android Runtime

Najprv si stiahnite archív a rozbaľte ho. Ďalší proces sa nelíši od predchádzajúceho nástroja:


  • Predtým uložené priečinky app, priv-app, framework musíte do počítača umiestniť samostatný adresár.

  • Spustite pomôcku Deodexer for Android Runtime, zadajte adresár v počítači, do ktorého ste skopírovali app, priv-app, framework

  • Kliknite na tlačidlo "vykonať" a počkajte na dokončenie procesu deodexácie.

Deodex pomocou Jbart

Na rozdiel od predchádzajúcich pomôcok, ktoré môžu pracovať iba so zariadeniami založenými na systéme Android 5.0 a vyššom, táto pomôcka nie je viazaná na OS. Deodex môžete vytvoriť pre akékoľvek zariadenie od Androidu 2.3.x Ginerbread po Android 6.0 Marshmallow.



Každý z vás už viackrát počul slová „deodex“ alebo „odex“. Zvyčajne sa nachádzajú tam, kde sú zverejnené rôzne firmvéry pre vaše zariadenie, napríklad na XDA-Developers alebo 4pda. Čo to teda znamená, DEODEX alebo ODEX? Aké sú ich rozdiely? Ako vyrobiť DEODEX? Odpovede na tieto a ďalšie otázky nájdete v nasledujúcom vydaní súhrnu „Čo je...“.
Odex (Optimized Dalvik Executable File) je súbor umiestnený v rovnakom priečinku so systémovými aplikáciami, v ktorom je uložený kód samotného programu. Ako viete, každý program potrebuje inštrukcie, vďaka ktorým bude (program) vykonávať jednu alebo druhú funkciu alebo prácu. Toto je presne ten programový kód, ktorý som opísal vyššie. Ak chcete nejaké upraviť systémový súbor Pri inštalácii firmvéru odex sa budete musieť pohrabať v samotnom súbore odex aj v .apk. Z toho je zrejmé, že tento proces nebude veľmi jednoduchý. Z tohto dôvodu bola implementovaná možnosť firmvéru deodex.

Ako už viete, vo firmvéri odex sú súbory uložené „náhodne“. Pri deodexe však takáto porucha takpovediac neexistuje. Všetky súbory v deodexe sú uložené ako .zip archív, ale v našom prípade sú „zabalené“ do .apk. Z tohto dôvodu je demontáž aplikácie pre ďalšie úpravy jednoduchšia a vzhľadom na to, že je všetko zbalené na jednom mieste, firmvér deodexu snáď zaberie menej miesta.

Deodex sa však nedá donekonečna chváliť. Hlavnou nevýhodou deodexu je, že aplikácie sa načítavajú o niečo dlhšie ako na odexe. S najväčšou pravdepodobnosťou si to používateľ nevšimne. Nedá mi však nepoznamenať, že zároveň výhodou odexu a nevýhodou deodexu je, že všetky systémové aplikácie v odexe sú optimalizované pre konkrétne zariadenie samotným výrobcom. A to je nepochybne plus firmvéru odex.

Skoro som zabudol spomenúť, že pri inštalácii rôznych hotových úprav systému pre vaše zariadenie je potrebné mať firmvér deodex.

Pravdepodobne je v tejto situácii význam pojmov jasný. A som ochotný sa staviť, že niektorí ľudia už chcú deodex vyskúšať. Na World Wide Web je obrovské množstvo pokynov pre firmvér deodex. Neodvážim sa vás však poslať, aby ste ich hľadali na Googli, ale celý tento proces jednoducho potichu zapíšem a pokúsim sa zdôrazniť všetky maličkosti.

Pokyny nižšie rôzne verzie Androidy nie sú rovnaké. Vzhľadom na to, že na mojom zariadení je nainštalovaný Android 5.0 Lollipop, napíšem návod na deodex špeciálne pre túto verziu.

  1. Najprv si ho musíme stiahnuť do počítača špeciálna pomôcka Dávkový deodexer JoelDroid Lollipop. Tento nástroj vyžaduje na fungovanie program Java. Podotýkam, že v častých prípadoch Java aplikácia zapíše svoju cestu nesprávne a nesprávne. Z tohto dôvodu musíte túto cestu manuálne zaregistrovať podľa týchto pokynov.
  • Potom musíme do nášho zariadenia so systémom Android 5.0 Lollipop nainštalovať ľubovoľného správcu súborov, cez ktorý ho musíme skopírovať do samostatného priečinka na SD karte, tri hlavné systémové priečinky- APP, PRIV-APP, FREMWORK. Sú umiestnené v koreňovom priečinku System.


  • Ďalej musíme vytvoriť priečinok MyROM v koreňovom adresári akéhokoľvek interného disku v počítači. Potom v tomto priečinku vytvoríme ďalší priečinok, ale s názvom Systém. Teoreticky by ste mali dostať nasledujúcu cestu - E:\MyROM\system. Kde „E“ je vaše interné úložisko ( HDD)
  • Systémové priečinky, ktoré sme skopírovali v druhom kroku, je potrebné presunúť do priečinka E:\MyROM\system.
  • Teraz máme teoreticky všetko pripravené a už môžeme pristúpiť k bodu DEODEXÁCIE.
  • Spustite predtým nainštalovaný nástroj JoelDroid Lollipop Batch Deodexer.
  • Kliknutím na tlačidlo „Prehľadávať“ v nástroji musíme zobraziť cestu k E:\MyROM\system
  • Cesta je naznačená, všetko je pripravené. Všetko, čo musíme urobiť, je stlačiť tlačidlo „Spustiť Prosecc“, po ktorom sa spustí deodexácia. Tento postup trvá asi 10-15 minút.
  • Po dokončení deodexácie musíme skopírovať výsledné súbory, ktoré sa nachádzajú pozdĺž cesty E:\MyROM\system, na MicroSD flash disk vo vašom zariadení.
  • Ďalej si musíme stiahnuť AROMA FileManager a nainštalovať ho pomocou vlastného obnovenia na vašom zariadení. Pred inštaláciou však musíme vybrať Systém v časti Pripojiť, ak nie je vybratý.
  • Po tomto všetkom musíme ísť ku koreňu systém súborov a z priečinka System vymažte priečinky APP, PRIV-APP a FRAEMWORK, jednoducho ich vymažte, pretože pri kopírovaní zostanú priečinky ARM a celý proces, zvážte, šiel dole vodou.
  • Potom skopírujte priečinky deodex, ktoré ste predtým preniesli v kroku 9, do priečinka System v koreňovom adresári celého systému súborov.
  • Potom musíme spustiť skript, ktorý nastaví povolenia pre priečinky (RWXRX-RX), súbory .apk a súbory .xml (RW-R-R)
  • Ďalej musíme vytvoriť vymazanie vyrovnávacej pamäte a vymazať dalvik/art. Reštartujte zariadenie a vychutnajte si firmvér deodex, ktorý ste dostali.

  • Uistite sa, že máte nainštalovaný DEODEX - firmvér môžete aktualizovať pomocou nasledujúcich krátkych pokynov: D


    Plne verím, že som o pojmoch ODEX a DEODEX porozprával to najzákladnejšie a tento článok môže byť dokončený. Ďakujem všetkým za pozornosť, ohodnoťte článok, prajem pekný deň a úspešné LETO!

    Používateľov Androidu možno rozdeliť do dvoch skupín. Prvým sú tí, pre ktorých je dôležité, aby mali stabilnú prácu a aby telefón jednoducho fungoval. Druhým sú tí, ktorí sa nevedia dočkať, až vyskúšajú nové funkcie a skontrolujú ďalší firmvér pre svoj telefón, ktorí sa naozaj radi pletú s telefónom. Tu je hlavný rozdiel medzi firmvérom ODEX a DEODEX.

    Firmvér ODEX (odexed).– ide o oficiálny, značkový alebo továrenský firmvér Android. DEODEX (deoxified) sú firmvéry upravené používateľmi.

    Prečo také rozlíšenie?

    Firmvér „Odexed“ sa okamžite prejaví prítomnosťou súborov s príponou .odex v priečinku /system/app. Skratka odex znamená „Optimalizovaný spustiteľný súbor Dalvik“. Tento druh súboru je veľmi potrebný pre prehľadnú štruktúru systému, ktorá obsahuje všetky informácie o aplikácii. Android prijíma údaje okamžite priamo bez rozbaľovania súborov APK. Súbory .odex sa zvyčajne načítavajú do vyrovnávacej pamäte Dalvik, v ktorej sú uložené informácie o programoch, ktoré používateľ často používa. Rýchlosť systému sa výrazne zvyšuje.

    Výhody firmvéru ODEX možno spísať skutočnosť, že aplikácie sa otvárajú rýchlejšie a súbory apk zaberajú málo miesta. Nevýhodou je náročnosť hackovania a zmeny programov. Väčšina používateľov to však nepotrebuje; oceňujú rýchlosť a stabilitu systému.

    Napríklad takýto firmvér je ideálnym riešením pre tých, ktorí si chcú len sťahovať hry do tabletu s Androidom (http://vipsmart.org/all-genres/tablet/).

    DEODEX



    V „deodexovanom“ firmvéri sú informácie o aplikácii obsiahnuté v súbore apk. Kód zvyčajne vložený do súboru odex je súčasťou súboru apk s názvom classex.dex.

    Hlavnými výhodami takéhoto firmvéru sú oveľa jednoduchšie úpravy (všetky údaje sú na jednom mieste) a jednoduchšie odstránenie systémových programov.

    Jednou z nevýhod je, že spúšťanie programov trvá dlhšie. Táto nevýhoda však nie je veľmi významná. Dalvic-cache ukladá všetky údaje o aplikáciách, ktoré používateľ často používa. A programy sa načítavajú dlho až po vymazaní vyrovnávacej pamäte Dalvic. Napríklad po inštalácii aktualizácie firmvéru alebo v iných prípadoch.

    Aby sme to zhrnuli, môžeme s istotou povedať, že „odexovaný“ (továrenský) firmvér sa odporúča pre tých, ktorí oceňujú rýchlosť a stabilitu. „Deoxed“ (custom) sú vhodnejšie pre tých, pre ktorých je dôležité prispôsobiť si firmvér úplne podľa svojich potrieb, vyskúšať nové funkcie a „prehrabať sa“ v systéme Android.

    Ahoj Habr!

    Pred niekoľkými rokmi, keď som bol prvýkrát predstavený Androidu, som od kolegu z práce počul, že Android poskytuje možnosť inštalovať upravený alebo domáci firmvér. Úprimne povedané, vtedy som od toho mala ďaleko. A ešte pred pol rokom ma takéto veci sotva zaujímali. Hlboko v srdci som si bol istý, že to, čo robí výrobca, je už určené na bežné používanie.

    Predstavte si moje sklamanie, keď som si kúpil telefón z Číny, kde výrobné nastavenia zakazovali používanie aplikácií Google, Skype, Facebook a ďalších. V zásade som mohol privrieť oči pred niektorými vecami, ale keď môj telefón neznamenal použitie účtu príspevky Google- Sľúbil som, že na to určite prídem bez ohľadu na to, čo sa mi stane.

    Prešlo pol roka a môj vlastný firmvér sa úspešne používa po celom svete.

    Táto séria článkov bude diskutovať o tom, ako robiť reverzné programovanie pre Android, implementovať opravy, vylepšenia a modifikácie.

    Preambula

    Takže! Najprv si definujme pojmy, ktoré budú použité v danýčlánok. Vaše obvyklé chápanie sa však môže veľmi líšiť.

    Náplasť- zmena alebo nahradenie existujúceho programového kódu za účelom modifikácie programového algoritmu.
    Maud- spravidla pridávanie dodatočných funkcií k existujúcemu programovému kódu bez zmeny algoritmu.
    Tweak- zlepšenie funkčnosti programu s cieľom uľahčiť prístup k parametrom systému.

    Chcem tiež poznamenať, že všetky príklady budú brané ako pre telefón HTC, ale to neznamená táto informácia nemožno použiť na iných telefónoch.

    Príprava prostredia

    Zaobídem sa bez podrobné pokyny ako použiť to či ono softvér. Ak vás tento článok zaujal a dočítali ste sa až sem, tak dúfam, že ste už skúsený používateľ a máte skúsenosti s používaním alebo aspoň experimentovaním v tejto oblasti. Vo verejnej doméne je množstvo návodov, článkov a výsledkov testov, rovnako ako na Habré. Tiež sa zaobídem bez opisu niektorých pojmov, inak sa článok ukáže ako veľmi dlhý a únavný. Budeme písať len k veci. Som si istý, že ste už dlho v strede. Ak nie, odporúčam si ho stiahnuť a nainštalovať.

    1 . Android SDK. Toto je prostredie na vývoj aplikácií pre Android. Aby sme mohli vykonať úpravy, určite budeme musieť skontrolovať náš programový kód. Vývojové prostredie je to najlepšie, čo môžeme použiť.
    2 . Android kuchyňa. Tento nástroj vám umožní pracovať s obrázkami systémových oddielov oficiálneho alebo neoficiálneho firmvéru.
    3 . JD-GUI. Dekompilátor kódu Java. Hneď by som chcel poznamenať, že ide o najlepší dekompilátor z hľadiska jednoduchosti použitia.
    4 . DJ Java Decompiler. Ďalší dekompilátor alebo disassembler, ako to niektorí radi nazývajú, programového kódu jazyka Java. Nie je pohodlné používať, ale analyzuje kód, ktorému JD-GUI niekedy nerozumie.
    5 . malý. Ďalší disassembler, ale tentoraz dalvik kód. smali je potrebné na demontáž a backsmali je potrebné na zostavenie kódu.
    6 . dex2jar. Pomôcka na konverziu spustiteľných súborov kódu Dalvik.

    Konverzia firmvéru

    Firmvér, ktorý máte v telefóne od výrobcu, je samozrejme optimalizovaný na zníženie spotreby energie. Aby bolo možné upraviť firmvér, musí byť prevedený do formátu, ktorý umožňuje úpravu kódu. Na to slúži Android Kitchen. Samozrejme, môžete to urobiť rukami, ako som to urobil predtým, kým som nenašiel túto „kuchynku“. Na internete si môžete prečítať, ako odstrániť systémovú oblasť z telefónu, nainštalovať prostredie a urobiť firmvér DEODEX. Ak už ničomu nerozumiete, myslím si, že stojí za to odložiť čítanie tohto článku, kým nezískate dostatok skúseností.

    Po prechode firmvéru z optimalizovanej formy (ODEX - optimalizovaný spustiteľný kód dalvik, ak ma pamäť neklame) na DEODEX (teda NIE optimalizovaný), všetko spustiteľné súbory pripravený na úpravu.

    Priame úpravy

    Vytváranie záplat
    Ako som už povedal, môj telefón mal pôvodne zakázané používať Google. No, aj keď sa prelomíte, nemôžete ísť do Obchodu Play, účtu nie je nakonfigurovaný telefónny zoznam Naozaj sa to nesynchronizuje. Prečo potrebujete taký Android? Po dlhom hrabaní v logcatu samotného zariadenia som našiel záznamy, ktoré hovorili, že používanie Google je zakázané. Najnepohodlnejšia vec na Androide je, že vidíte protokol, ale neviete, ktorá systémová aplikácia ho vytvára. Aby som zistil, odkiaľ mi nohy idú, musel som rozobrať všetky systémové aplikácie Java kód. Trvalo to veľa času, ale stále používam prácu, ktorú som vykonal pri analýze a hľadaní správneho kódu. Kroky na získanie takýchto nástrojov sú nasledovné:
    1 . Vytvorte DEODEX zo všetkého firmvéru
    2 . Váš nový firmvér DEODEX bude potrebné zostaviť a nahrať do telefónu. Ako sa to robí, je témou iného článku.
    3 . Z každého súboru umiestneného v /system/framework extrahujte súbor class.dex a skonvertujte ho na JAR pomocou dex2jar.
    4 . Otvorte každý výsledný JAR v JD-GUI a znova ho uložte do zdrojového kódu
    5 . Rozbaľte zdrojový kód z archívu.

    Nakoniec som skončil s toľkými priečinkami, koľko bolo súborov JAR v /system/framework a každý priečinok mal štruktúru zdrojového kódu Java.
    Pomocou jednoduchých manipulácií som rýchlo našiel miesto, ktoré generovalo záznamy v logcat.

    Nebudeme brať do úvahy celú logiku zákazu, pretože každý prípad je samostatný príbeh. Musel som stráviť pár hodín, kým som zistil, kde sa kontroly vykonali, zostavil som si v hlave blokovú schému algoritmu a pochopil som, kam ísť, aby som algoritmus trochu „pokazil“.

    Ukázalo sa, že je to jednoduché. Existuje podprogram, ktorý na základe vopred stanovených konštánt pri kontaktovaní odpovedal, či telefón patrí Číne alebo nie.

    Kód bol v súbore HTCExtension.jar a trieda, ktorá obsahovala tento podprogram, bola in

    Rozbalenie a analýza pôvodný súbor
    1 . Najprv musíme vziať pôvodný súbor DEODEX JAR, ktorý je zodpovedný za časť kódu, ktorú potrebujeme. V našom prípade HTCExtension.jar.
    2 . Otvorte pomocou ľubovoľného archivátora a vytiahnite odtiaľ class.dex
    3 . Pomocou konvertora dex2jar ho skonvertujte na súbor JAR. Príkaz: dex2jar.bat class.dex
    4 . Otvorte výsledný súbor class_dex2jar.jar v JD-GUI.
    5 . Áno, najčastejšie JD-GUI dekompiluje kód nie tak, ako vyzerá v origináli, je to pochopiteľné, ale je to celkom čitateľné. V zdrojovom kóde vidíme, že podprogram kontroluje parametre projektu a príznak jazyka firmvéru. V našom nešťastnom prípade sa vráti PRAVDA.
    public static boolean isChina() ( if ((HtcBuildFlag.Htc_PROJECT_flag == 216) || (HtcBuildFlag.Htc_PROJECT_flag == 218) || (HtcBuildFlag.Htc_PROJECT_flag. ==HtcBuild_PROJECT_flag. 1) && (2 == HtcBuildFlag.Htc_LANGUAGE_flag)) || (HtcBuildFlag.Htc_PROJECT_flag == 27)) return true; return false; )
    6 . Aby sme vytvorili opravu, musíme rozobrať samotný kód Dalvik. Na to používame baksmali. Najpohodlnejším spôsobom je vytvoriť samostatný priečinok a dať tam tri súbory: HTCExtension.jar, malý.jar A baksmali.jar. Zadajte príkaz java -Xmx512m -jar baksmali.jar -a -d -o HTCExtension -x HTCExtension.jar

    Toto je vaše API Verzie Androidu. Pre JB je to 16
    - priečinok, v ktorom sa nachádzajú všetky rámce firmvéru.

    V mojom prípade to bol príkaz
    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šom novovytvorenom priečinku sa objavil priečinok HTCExtension a v ňom naše súbory s kódom Dalvik.
    8 . Nájdenie súboru pozdĺž cesty \com\htc\util\contacts\BuildUtils$Customization.java a pozrite sa na kód:
    .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 v18 v2 , 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-com/HlagtcBuildv1, L ;->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/htlagafild/h 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, v.conlined_eq v. 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 293, const.goend_4 metóda
    9 . Strašidelné, však? Nič nie je jasné. Ale toto je riešiteľný problém. Po vytvorení niekoľkých vlastných záplat a získaní skúseností môžete ľahko upravovať kód bez nástrojov tretích strán. V našom prípade v tomto kóde
    .prologue const/4 v0, 0x1 priradí premennej v0 hodnotu 1, teda TRUE. Potom sú tu všetky druhy kontrol a ak telefón nie je čínsky, hodnota premennej sa zmení:
    .riadok 297 const/4 v0, 0x0 goto:goto_13
    10 . Najjednoduchší spôsob, ako zachrániť otca ruskej demokracie, je zmeniť kód na nasledujúci:
    .prologue const/4 v0, 0x0 , čiže zmeniť hodnotu premennej z 1 na 0. To znamená, nech je to čokoľvek, vždy by sa vrátila hodnota FALSE a v JD-GUI by kód vyzeral ako verejný statický booleovský isChina() ( if ((HtcBuildFlag.Htc_PROJECT_flag == 216) || (HtcBuildFlag.Htc_PROJECT_flag == 218) || (HtcBuildFlag == 218)_PROJECT2Flag.Htg3); while (((HtcBuildFlag.Htc_PROJECT_flag == 1) && (2 == HtcBuildFlag.Htc_LANGUAGE_flag)) || (HtcBuildFlag.Htc_PROJECT_flag == 27)) return false; return false; )
    11 . Áno, metóda bude fungovať. Nehľadáme však jednoduché spôsoby – tentoraz. Po druhé, nie je to úplne krásne. Chcel by som kód niečo ako
    public static boolean isChina() ( return false; )
    12 . Ako môžeme získať kód Dalvik pre tento zdrojový kód? Pre začiatočníkov urobíme malý trik.

    Vytvára sa kód Dalvik
    1 . Otvorte súpravu Android SDK.
    2 . Tvoríme nový projekt a v našej jedinej testovacej triede napíšeme nasledujúci kód
    balík ru.habrahabr.test; test verejnej triedy ( public static boolean isChina() ( return false; ) )
    3 . Kompilujeme náš projekt a potom vezmeme zostavenú aplikáciu z pracovného priestoru.
    4 . Zostavenú aplikáciu sme vložili do priečinka, kde sme vykuchali súbor JAR.
    5 . Zadajte príkaz java -Xmx512m -jar baksmali.jar -a -d -o test -x test .apk
    6 . Rozložili sme novovybudovanú aplikáciu do kódu Dalvik.
    7 . Otvorte náš súbor test.smali a zobrazte tam kód
    .method public static isChina()Z .registers 1 .prologue .line 7 const/4 v0, 0x0 return v0 .end method
    8 . To je všetko, opravný kód je pripravený.
    Rolovanie záplaty
    1 . Dalvik kód je posiaty značkami označujúcimi riadok kódu v pôvodnom zdrojovom súbore. Je to potrebné pri zobrazovaní chýb, ak nejaké sú vo vašom programe. Kód funguje dobre aj bez špecifikovania riadkov.
    2 . Vymažeme riadky s číslovaním riadkov, skopírujeme a nahradíme metódu (podprogram) v našom \com\htc\util\contacts\BuildUtils$Customization.java súbor.
    .method public static isChina()Z .registers 1 .prologue const/4 v0, 0x0 return v0 .end method
    3 . Uložte súbor. Áno, zabudol som povedať, že potrebujete normálny editor, napríklad Notepad++ alebo EditPlus. Kto má rád ktorý?
    Kompilácia a zostavenie opraveného súboru JAR
    1 . Pomocou backsmali sme vykuchali náš súbor JAR a teraz ho musíme dať späť dohromady.
    2 . Zadajte príkaz java -Xmx512m -jar smali.jar -a 16 HTCExtension -o class.dex
    3 . Súbor class.dex sa zobrazí v našom priečinku
    4 . Otváranie znova HTCExtension.jar súbor s archivátorom a nahradiť v ňom existujúci triedy.dex do nášho práve vytvoreného.
    5 . To je všetko, náš HTCExtension.jar obsahuje upravený kód programu.
    Nahradenie pôvodného súboru opraveným súborom
    Zvyčajne sa pre bežných používateľov vytvárajú špeciálne skripty, ktoré sú nahradené obnovou. Ale toto nás nezaujíma. Po prvé, je to dlhé a únavné a po druhé, sme skúsení používatelia a môžeme si dovoliť nejaké jemnosti.

    1 . Ak už máte firmvér DEODEX a máte prístup root, môžete aktuálny pracovný súbor nahradiť nasledujúcimi príkazmi:

    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@ [chránený e-mailom] Reštartujte @classes.dex

    Prvý príkaz nahrá opravený súbor na flash disk
    2. príkaz otvorí shell
    3. príkaz poskytuje root prístup
    4. príkaz pripojí systém do režimu čítania/zápisu
    5. tím áno záložná kópia súbor
    Šiesty príkaz prepíše existujúci súbor novým opraveným súborom.
    7. príkaz konfiguruje povolenia
    8. príkaz vymaže vyrovnávaciu pamäť
    9. príkaz reštartuje zariadenie.

    2 . Ďakujem, že ste sa dočítali až sem, zostáva toho málo.
    3 . Po reštarte sa váš nový opravený kód prejaví.
    4 . Ak kód nefunguje alebo sa vyskytne chyba, pomocou jednoduchých kombinácií môžete vrátiť záložnú kópiu.
    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@ [chránený e-mailom] Reštartujte @classes.dex

    Epilóg

    Áno, niektorým sa zdal tento článok príliš konkrétny, niektorým bol ťažko pochopiteľný a niektorým zbytočný. Zámerne som sa vyhol hĺbkovým detailom a ilustráciám, ako to celé vyzerá naživo a v praxi. Po prvé, táto práca bude nevďačná a prinesie len ďalšie otázky. Po druhé, nechcem vidieť armádu používateľov na fórach, ktorí sa sťažujú, že zabili svoj telefón.

    V ďalšom článku vám poviem, ako urobiť Tweeks. Bude tam príklad využitia automatického nahrávania telefonátov pomocou natívnych telefónnych nástrojov. Ďakujem za tvoju pozornosť.

    P.S. Ak niečo nie je jasné alebo mätúce, pýtajte sa - vždy rád odpoviem a vysvetlím.

    Použitie rôzne Firmvér systému Android, Pravdepodobne ste sa už stretli s takými pojmami ako ""odexovaný"" a ""deodexovaný"". A často, keď vykonávate akékoľvek manipulácie s firmvérom, musíte vedieť, či je „odexovaný“ alebo „deodexovaný“, aby ste neurobili nič hlúpe. Čo sa teda skrýva za týmito dvoma pojmami?

    Odexed ROM

    Ak je firmvér označený ako odexed, potom v priečinku systémových aplikácií /system/app nájdete súbory s príponou .odex. Toto rozšírenie znamená ""Optimalizovaný spustiteľný súbor Dalvik"". Okrem normálneho APK súbor nájdete to.odex kópiu. Napríklad Browser.apk a browser.odex.

    Čo je súbor .odex?

    Tento súbor primárne slúži na organizáciu štruktúry ľubovoľnej aplikácie, obsahuje aplikačné inštrukcie a umožňuje Androidu rýchly prístup k nim bez zbytočného hľadania a extrahovania z .apk súboru. Súbory Odex sa načítavajú priamo do vyrovnávacej pamäte virtuálneho stroja Java „dalvik“, čo umožňuje systému pracovať oveľa rýchlejšie.

    Výhody firmvéru Odexed

    Aplikácie sa spúšťajú oveľa rýchlejšie, pretože ich kód je vopred nahraný do vyrovnávacej pamäte dalvik. Veľkosť súborov .apk je malá, takže zaberajú menej miesta.

    Nevýhody firmvéru Odexed

    Aplikácia modding/témy/hacking sa stáva oveľa zložitejšou, pretože kód je teraz na dvoch rôznych miestach. Ak vymažete akúkoľvek aplikáciu, musíte vymazať aj súbor .odex. Ak ho neodstránite, môžu sa vyskytnúť chyby.

    Deodexovaná ROM

    Pokiaľ ide o tento typ firmvéru, všetky pokyny a kódy aplikácií sa nachádzajú v súboroch .apk. Kód, ktorý bol uložený v súbore .odex, je teraz vložený do volaného súboru .apk triedy.dex.

    Výhody firmvéru Deodexed

    Deodexed je oveľa jednoduchší na modovanie/témy/hackovanie, pretože všetok kód je teraz v jednom súbore .apk. Systémové aplikácie jednoduchšie odstrániť, pretože stačí odstrániť jeden súbor APK.

    Nevýhody firmvéru Deodexed

    Aplikácie sa spúšťajú pomalšie. Ale nielen aplikácie, ale aj samotný systém sa načítava dlhšie, keďže obsah aplikácie sa načítava zo systému a nie priamo.

    Firmvér pre Android, ktorý pochádza priamo od výrobcov rôzne zariadenia väčšinou odexované. Vlastný firmvér je v 9 prípadoch z 10 deodexovaný. A to, čo dostaneme, je, že odexovaný firmvér má lepšia rýchlosť funguje, Deodexed sú vhodnejšie na hacky, modding a iné manipulácie. To je všetko, stručne o hlavnej veci.