Jak deodexovat firmware pomocí jbart. Co je odex a deodex v Androidu. Rozbalení a analýza původního souboru

Pokud nejste jen obyčejným uživatelem zařízení se systémem Android, ale rádi instalujete různé firmwary, pak jste pravděpodobně slyšeli nebo četli na různých fórech a webech o „odexovaném“ a „deodexovaném“ firmwaru. Jaký je v tom rozdíl? Firmware Deodex je zkrátka pro úpravu vhodnější. Vývojář deodexovaného firmwaru může nezávisle měnit vzhled ikon, konfigurovat různé nabídky a tak dále. Pojďme si o všem říct podrobněji.

Co je Deodex?

Firmware Android, stejně jako jakákoli jiná aplikace, má speciální „výkonnou“ část, která je navržena tak, aby prováděla předem naprogramované akce. Jak můžete sami vidět, tyto příkazy jsou umístěny v samostatném souboru class.DEX, který je přítomen ve firmwaru.

V oficiálním firmwaru výrobce často přesouvá tento soubor mimo firmware, aby urychlil práci a snížil množství paměti zabrané firmwarem. Přechod na Android 5.0 s runtime prostředím ART výrazně změnil proces spouštění a instalace aplikací, samotný koncept odex a deodex však zůstal zachován.

Výhody a nevýhody firmwaru Odex a Deodex


- Složitější proces úpravy firmwaru
+ Malé zvýšení výkonu firmwaru
+ Ušetřete místo při instalaci programů


+ Zjednodušené přizpůsobení firmwaru
- Potřebujete více místa pro instalaci aplikací

Jak získat firmware Deodex?

Před zahájením procesu deodexování firmwaru musí být splněna řada podmínek. Prvním krokem je instalace a konfigurace na vašem počítači. Dále musíme získat práva root na našem mobilním zařízení, nainstalovat jakýkoli správce souborů s přístupem k systémovému oddílu a zkopírovat následující složky do paměti zařízení nebo na kartu microSD.

/aplikace
/priv-app
/rámec


Deodex pomocí JoelDroid Batch Deodexer

Tento nástroj bude fungovat pouze se zařízeními se systémem Android 5.0 a novějším. Je také potřeba nainstalovat a stáhnout samotnou aplikaci.


  • Rozbalte archiv pomocí nástroje ]JoelDroid Lollipop Batch Deodexer V 2.5.

  • Dříve uložené složky aplikace, priv-app, framework

  • Spusťte nástroj JoelDroid Lollipop Batch Deodexer, klikněte na tlačítko „Procházet“ a označte adresář v počítači, kam jste zkopírovali aplikace, priv-app, framework

  • Klikněte na tlačítko "Spustit proces"

Deodex pomocí Deodexer pro Android Runtime

Nejprve si stáhněte archiv a rozbalte jej. Další proces se neliší od předchozího nástroje:


  • Dříve uložené složky aplikace, priv-app, framework musíte do počítače umístit samostatný adresář.

  • Spusťte obslužný program Deodexer for Android Runtime, zadejte adresář v počítači, kam jste zkopírovali aplikace, priv-app, framework

  • Klikněte na tlačítko "Vykonat" a počkejte na dokončení procesu deodexace.

Deodex pomocí Jbart

Na rozdíl od předchozích utilit, které mohou pracovat pouze se zařízeními založenými na Androidu 5.0 a vyšším, není tato utilita vázána na OS. Deodex můžete vytvořit pro jakékoli zařízení od Androidu 2.3.x Ginerbread po Android 6.0 Marshmallow.



Každý z vás slyšel slova „deodex“ nebo „odex“ více než jednou. Obvykle se nacházejí tam, kde jsou umístěny různé firmwary pro vaše zařízení, například na XDA-Developers nebo 4pda. Co to tedy znamená, DEODEX nebo ODEX? Jaké jsou jejich rozdíly? Jak vyrobit DEODEX? Odpovědi na tyto a další otázky najdete v příštím vydání přehledu „Co je...“.
Odex (Optimized Dalvik Executable File) je soubor umístěný ve stejné složce se systémovými aplikacemi, ve které je uložen kód samotného programu. Jak víte, každý program potřebuje instrukce, díky kterým bude (program) vykonávat tu či onu funkci nebo práci. To je přesně ten programový kód, který jsem popsal dříve. Pokud chcete upravit jakýkoli systémový soubor, budete se muset při instalaci firmwaru odex ponořit jak do samotného souboru odex, tak do souboru .apk. Z toho je zřejmé, že tento proces nebude příliš snadný. Z tohoto důvodu byla implementována možnost deodexového firmwaru.

Jak již víte, ve firmwaru odex jsou soubory uloženy „náhodně“. U deodexu však taková porucha takříkajíc není. Všechny soubory v deodexu jsou uloženy jako .zip archiv, ale v našem případě jsou „zabaleny“ do .apk. Z tohoto důvodu je demontáž aplikace pro další úpravy snazší a vzhledem k tomu, že je vše zabaleno na jednom místě, zabere firmware deodexu snad méně místa.

Deodex však nelze donekonečna vychvalovat. Hlavní nevýhodou deodexu je, že se aplikace načítají o něco déle než na odexu. S největší pravděpodobností si toho uživatel nevšimne. Nemohu si ale pomoct a nevšimnout si, že jak výhodou odexu, tak nevýhodou deodexu je, že všechny systémové aplikace v odexu jsou optimalizovány pro konkrétní zařízení samotným výrobcem. A to je nepochybně plus firmwaru odex.

Málem bych zapomněl zmínit, že při instalaci různých hotových úprav systému pro vaše zařízení je potřeba mít firmware deodex.

Pravděpodobně je v této situaci význam pojmů jasný. A jsem ochoten se vsadit, že někteří lidé už chtějí deodex vyzkoušet. Na World Wide Web je obrovské množství návodů na firmware deodexu. Neodvážím se vás však poslat, abyste je hledali na Googlu, ale celý tento proces prostě tiše zapíšu a pokusím se upozornit na všechny maličkosti.

Pokyny pro různé verze Androidu nejsou stejné. Vzhledem k tomu, že na mém zařízení je nainstalován Android 5.0 Lollipop, napíšu návod na deodex speciálně pro tuto verzi.

  1. Nejprve si musíme do počítače stáhnout speciální nástroj JoelDroid Lollipop Batch Deodexer. Tento nástroj vyžaduje ke své činnosti program Java. Podotýkám, že v častých případech Java aplikace zapíše svou cestu nesprávně a nesprávně. Z tohoto důvodu musíte tuto cestu ručně zaregistrovat podle těchto pokynů.
  • Poté musíme na naše zařízení se systémem Android 5.0 Lollipop nainstalovat libovolného správce souborů, pomocí kterého musíme zkopírovat tři hlavní systémové složky - APP, PRIV-APP, FRAEMWORK - do samostatné složky na SD kartě. Jsou umístěny v kořenové složce System.


  • Dále musíme vytvořit složku MyROM v kořenovém adresáři libovolné interní jednotky na vašem PC. Poté v této složce vytvoříme další složku, ale s názvem Systém. Teoreticky byste měli získat následující cestu - E:\MyROM\system. Kde „E“ je vaše interní úložiště (pevný disk)
  • Systémové složky, které jsme zkopírovali v druhém kroku, je třeba přesunout do složky E:\MyROM\system.
  • Nyní máme teoreticky vše připraveno a již můžeme přistoupit k bodu DEODEXACE.
  • Spusťte dříve nainstalovaný nástroj JoelDroid Lollipop Batch Deodexer.
  • Kliknutím na tlačítko „Procházet“ v nástroji musíme zobrazit cestu k E:\MyROM\system
  • Cesta je naznačena, vše je připraveno. Jediné, co musíme udělat, je stisknout klávesu „Start Prosecc“, po které začne deodexace. Tento postup trvá asi 10-15 minut.
  • Po dokončení deodexace musíme zkopírovat výsledné soubory, které se nacházejí podél cesty E:\MyROM\system, na MicroSD flash disk ve vašem zařízení.
  • Dále si musíme stáhnout AROMA FileManager a nainstalovat jej pomocí vlastního obnovení do vašeho zařízení. Před instalací však musíme vybrat System v sekci Mount, pokud není vybrán.
  • Po tom všem musíme jít do kořenového adresáře souborového systému a smazat složky APP, PRIV-APP a FRAEMWORK ze složky System, stačí je smazat, protože při kopírování zůstanou složky ARM a celý proces zvažte , šel do odpadu.
  • Dále zkopírujte složky deodex dříve přenesené v kroku 9 do systémové složky v kořenovém adresáři celého systému souborů.
  • Poté musíme spustit skript, který nastaví oprávnění pro složky (RWXRX-RX), soubory .apk a soubory .xml (RW-R-R)
  • Dále musíme vytvořit vyrovnávací mezipaměť a vymazat dalvik/art. Restartujte zařízení a užívejte si firmware deodex, který jste obdrželi.

  • Ujistěte se, že máte nainstalovaný DEODEX - firmware můžete aktualizovat pomocí následujících krátkých pokynů: D


    Plně věřím, že jsem o pojmech ODEX a DEODEX mluvil o nejzákladnějších věcech a tento článek lze dokončit. Děkuji všem za pozornost, ohodnoťte článek, přeji hezký den a úspěšné LÉTO!

    Uživatele Androidu lze rozdělit do dvou skupin. První jsou ti, pro které je důležité mít stabilní práci a telefon prostě fungovat. Druhým jsou ti, kteří se nemohou dočkat, až vyzkouší nové funkce a zkontrolují další firmware pro svůj telefon, kteří opravdu milují práci s telefonem. Zde je hlavní rozdíl mezi firmwarem ODEX a DEODEX.

    Firmware ODEX (odexed).– jedná se o oficiální, značkový nebo tovární firmware Android. DEODEX (deoxified) jsou firmware upravené uživateli.

    Proč takové rozlišení?

    Firmware „Odexed“ se okamžitě projeví přítomností souborů s příponou .odex ve složce /system/app. Zkratka odex znamená „Optimalizovaný soubor Dalvik Executable File“. Tento druh souboru je velmi potřebný pro přehlednou strukturu systému, která obsahuje všechny informace o aplikaci. Android přijímá data okamžitě přímo bez rozbalování souborů APK. Soubory .odex se obvykle načítají do mezipaměti Dalvik, která uchovává informace o programech, které uživatel často používá. Rychlost systému se výrazně zvyšuje.

    Výhody firmwaru ODEX lze sepsat skutečnost, že se aplikace otevírají rychleji a soubory apk zabírají málo místa. Nevýhodou je obtížnost hackování a změny programů. Většina uživatelů to ale nepotřebuje; oceňují rychlost a stabilitu systému.

    Například takový firmware je ideálním řešením pro ty, kteří si chtějí pouze stahovat hry do tabletu s Androidem (http://vipsmart.org/all-genres/tablet/).

    DEODEX



    V „deodexovaném“ firmwaru jsou informace o aplikaci obsaženy v souboru apk. Kód obvykle vložený do souboru odex je součástí souboru apk s názvem classex.dex.

    Hlavní výhody takového firmwaru spočívají v tom, že se mnohem snadněji upravují (všechna data jsou na jednom místě) a snáze se odstraňují systémové programy.

    Jednou z nevýhod je, že spuštění programů trvá déle. Tato nevýhoda ale není příliš významná. Dalvic-cache ukládá všechna data o aplikacích, které uživatel často používá. A programy se načítají dlouho až po vymazání mezipaměti Dalvic. Například po instalaci aktualizace firmwaru nebo v jiných případech.

    Abychom to shrnuli, můžeme s jistotou říci, že „odexovaný“ (tovární) firmware je doporučen pro ty, kteří oceňují rychlost a stabilitu. „Deoxed“ (custom) jsou vhodnější pro ty, pro které je důležité upravit si firmware zcela podle svých potřeb, vyzkoušet nové funkce a „hlouběji“ se ponořit do systému Android.

    Ahoj Habr!

    Před několika lety, když jsem se poprvé seznámil s Androidem, jsem od kolegy z práce slyšel, že Android poskytuje možnost instalovat upravený nebo podomácku vyrobený firmware. Upřímně řečeno, tehdy jsem k tomu měl daleko. A ještě před půl rokem mě takové věci sotva zajímaly. Hluboko v srdci jsem si byl jistý, že to, co výrobce dělá, je již určeno pro běžné použití.

    Představte si mé zklamání, když jsem si koupil telefon z Číny, kde tovární nastavení zakazovalo používat Google, Skype, Facebook a další aplikace. V zásadě bylo možné před některými věcmi přimhouřit oči, ale když můj telefon nevyžadoval použití účtu Google, slíbil jsem, že na to určitě přijdu bez ohledu na to, co se mi stalo.

    Uplynulo půl roku a můj vlastní firmware se úspěšně používá po celém světě.

    Tato série článků bude diskutovat o tom, jak provádět zpětné programování pro Android, implementovat opravy, vylepšení a mody.

    Preambule

    Tak! Pojďme si nejprve definovat pojmy, které budou použity v danýčlánek. Vaše obvyklé chápání se však může velmi lišit.

    Náplast- změna nebo nahrazení stávajícího programového kódu za účelem úpravy programového algoritmu.
    Přehoz- zpravidla přidání dalších funkcí ke stávajícímu programovému kódu bez změny algoritmu.
    Tweak- vylepšení funkčnosti programu za účelem usnadnění přístupu k parametrům systému.

    Chci také poznamenat, že všechny příklady budou brány pro telefon HTC, ale to neznamená, že tyto informace nelze použít na jiných telefonech.

    Příprava prostředí

    Obejdu se bez podrobného návodu, jak používat ten či onen software. Pokud vás tento článek zaujal a dočetli jste až sem, pak doufám, že jste již zkušený uživatel a máte zkušenosti s používáním nebo alespoň experimentováním v této oblasti. Ve veřejné doméně je spousta návodů, článků a výsledků testů, stejně jako na Habré. Také se obejdu bez popisu některých pojmů, jinak se článek ukáže jako velmi dlouhý a zdlouhavý. Budeme psát jen k věci. Jsem si jistý, že jsi ve středu dlouho. Pokud ne, doporučuji si jej stáhnout a nainstalovat.

    1 . Android SDK. Toto je prostředí pro vývoj aplikací pro Android. Abychom mohli provést úpravy, určitě budeme muset zkontrolovat náš programový kód. Vývojové prostředí je to nejlepší, co můžeme použít.
    2 . Kuchyně pro Android. Tento nástroj vám umožní pracovat s obrazy systémových oddílů oficiálního nebo neoficiálního firmwaru.
    3 . JD-GUI. Dekompilátor kódu Java. Okamžitě bych rád poznamenal, že toto je nejlepší dekompilátor z hlediska snadného použití.
    4 . DJ Java Decompiler. Další dekompilátor nebo disassembler, jak tomu někteří rádi říkají, programového kódu jazyka Java. Není pohodlné používat, ale analyzuje kód, kterému JD-GUI někdy nerozumí.
    5 . malý. Další disassembler, ale tentokrát dalvik kód. smali je potřeba pro rozebrání a backsmali je potřeba pro sestavení kódu.
    6 . dex2jar. Nástroj pro převod spustitelných souborů kódu Dalvik.

    Konverze firmwaru

    Firmware, který máte v telefonu od výrobce, je samozřejmě optimalizován pro snížení spotřeby. Aby mohl být firmware upraven, musí být převeden do formátu, který umožňuje úpravu kódu. K tomu slouží Android Kitchen. Samozřejmě, můžete to udělat rukama, jako jsem to dělal předtím, dokud jsem nenašel tuto „kuchyň“. Na internetu se dočtete, jak odebrat systémovou oblast z telefonu, nainstalovat prostředí a udělat firmware DEODEX. Pokud už něčemu nerozumíte, myslím, že stojí za to odložit čtení tohoto článku, dokud nezískáte dostatek zkušeností.

    Po změně firmwaru z optimalizované verze (ODEX - optimalizovaný spustitelný kód dalvik, pokud mě paměť neklame) na DEODEX (tedy NEoptimalizovaný), jsou všechny spustitelné soubory připraveny k úpravě.

    Přímé úpravy

    Vytváření záplat
    Jak jsem již řekl, můj telefon měl původně zakázáno používat Google. No, bez ohledu na to, nemůžete jít do Playstore, nemůžete si nastavit účet, telefonní seznam se opravdu nesynchronizuje. Proč potřebujete takový Android? Po dlouhém hrabání v logcatu samotného zařízení jsem našel záznamy, které říkaly, že používání Google je zakázáno. Nejnevhodnější věcí na Androidu je, že vidíte protokol, ale nevíte, která systémová aplikace jej vytváří. Abych zjistil, odkud jdou moje nohy, musel jsem vykuchat všechny systémové aplikace, abych rozebral Java kód. Trvalo to spoustu času, ale stále používám práci, kterou jsem odvedl při analýze a hledání správného kódu. Kroky k získání takových nástrojů jsou následující:
    1 . Udělejte DEODEX ze všech firmwarů
    2 . Váš nový firmware DEODEX bude nutné sestavit a nahrát do telefonu. Jak se to dělá, je téma jiného článku.
    3 . Z každého souboru umístěného v /system/framework extrahujte soubor class.dex a převeďte jej na JAR pomocí dex2jar.
    4 . Otevřete každý výsledný JAR v JD-GUI a znovu jej uložte do zdrojového kódu
    5 . Rozbalte zdrojový kód z archivu.

    Nakonec jsem skončil s tolika složkami, kolik bylo souborů JAR v /system/framework, a každá složka měla strukturu zdrojového kódu Java.
    Pomocí jednoduchých manipulací jsem rychle našel místo, které generovalo záznamy v logcatu.

    Nebudeme zvažovat celou logiku zákazu, protože každý případ je samostatný příběh. Musel jsem strávit několik hodin, než jsem zjistil, kde byly kontroly provedeny, vytvořil jsem si v hlavě blokové schéma algoritmu a pochopil, kam jít, abych algoritmus trochu „zkazil“.

    Ukázalo se, že je to jednoduché. Existuje podprogram, který na základě předem stanovených konstant při kontaktu odpověděl, zda telefon patří do Číny nebo ne.

    Kód byl v souboru HTCExtension.jar a třída, která obsahovala tento podprogram, byla in

    Rozbalení a analýza původního souboru
    1 . Nejprve musíme vzít původní soubor DEODEX JAR, který je zodpovědný za část kódu, kterou potřebujeme. V našem případě HTCExtension.jar.
    2 . Otevřete pomocí libovolného archivátoru a vytáhněte odtud class.dex
    3 . K převodu na soubor JAR použijte konvertor dex2jar. Příkaz: dex2jar.bat class.dex
    4 . Otevřete výsledný soubor class_dex2jar.jar v JD-GUI.
    5 . Ano, nejčastěji JD-GUI dekompiluje kód ne tak, jak vypadá v originále, je to pochopitelné, ale je to docela čitelné. Ve zdrojovém kódu vidíme, že podprogram kontroluje parametry projektu a příznak jazyka firmwaru. V našem nešťastném případě se vrací TRUE.
    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 . Abychom vytvořili opravu, musíme rozebrat samotný kód Dalvik. K tomu používáme baksmali. Nejpohodlnějším způsobem je vytvořit samostatnou složku a dát tam tři soubory dohromady: HTCExtension.jar, malá.jar A baksmali.jar. Zadejte příkaz java -Xmx512m -jar baksmali.jar -a -d -o HTCExtension -x HTCExtension.jar

    Toto je API pro vaši verzi Androidu. Pro JB je to 16
    - složka, kde jsou umístěny všechny rámce firmwaru.

    V mém případě to byl pří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ší nově vytvořené složce se objevila složka HTCExtension a v ní naše soubory s kódem Dalvik.
    8 . Hledání souboru podél cesty \com\htc\util\contacts\BuildUtils$Customization.java a podívejte se 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 metoda
    9 . Děsivé, že? Nic není jasné. Ale to je řešitelný problém. Po vytvoření několika vlastních záplat a získání zkušeností můžete snadno upravovat kód bez nástrojů třetích stran. V našem případě v tomto kódu
    .prologue const/4 v0, 0x1 přiřadí proměnné v0 hodnotu 1, tedy TRUE. Pak jsou tu všemožné kontroly a pokud telefon není čínský, změní se hodnota proměnné:
    .řádek 297 const/4 v0, 0x0 goto:goto_13
    10 . Nejjednodušší způsob, jak zachránit otce ruské demokracie, je změnit kód na následující:
    .prologue const/4 v0, 0x0 , tedy změnit hodnotu proměnné z 1 na 0. To znamená, ať se děje cokoliv, vždy by se vrátila hodnota FALSE a v JD-GUI by kód vypadal jako veřejný statický boolean isChina() ( if (( HtcBuildFlag.Htc_PROJECT_flag == 216) || (HtcBuildFlag.Htc_PROJECT_flag == 218) || (HtcBuildFlag.Htc_PROJECT_flag =(Htc_PROJECT_flag == 23)); while (Htc_PROJECT_flag == 23)); while && ( 2 == HtcBuildFlag.Htc _LANGUAGE_flag)) || (HtcBuildFlag.Htc_PROJECT_flag == 27)) return false; return false; )
    11 . Ano, metoda bude fungovat. Nehledáme ale jednoduché cesty – tentokrát. Za druhé, není to úplně krásné. Chtěl bych kód něco takového
    public static boolean isChina() ( return false; )
    12 . Jak můžeme získat kód Dalvik pro tento zdrojový kód? Pro začátečníky uděláme malý trik.

    Vytváření kódu Dalvik
    1 . Otevřete Android SDK.
    2 . Vytvoříme nový projekt a napíšeme následující kód v naší jediné testovací třídě
    balíček ru.habrahabr.test; test veřejné třídy ( public static boolean isChina() ( return false; ) )
    3 . Zkompilujeme náš projekt a poté vezmeme sestavenou aplikaci z pracovního prostoru.
    4 . Sestavenou aplikaci jsme vložili do složky, kde jsme vykuchali soubor JAR.
    5 . Zadejte příkaz java -Xmx512m -jar baksmali.jar -a -d -o test -x test .apk
    6 . Rozebrali jsme nově postavenou aplikaci do kódu Dalvik.
    7 . Otevřete náš soubor test.smali a podívejte se na kód
    .method public static isChina()Z .registers 1 .prologue .line 7 const/4 v0, 0x0 return v0 .end method
    8 . To je vše, opravný kód je připraven.
    Rolování záplaty
    1 . Dalvik kód je posetý značkami označujícími řádek kódu v původním zdrojovém souboru. To je nezbytné při zobrazování případných chyb ve vašem programu. Kód také funguje dobře bez určení řádků.
    2 . Smažeme řádky s číslováním řádků, zkopírujeme a nahradíme metodu (podprogram) v našem \com\htc\util\contacts\BuildUtils$Customization.java soubor.
    .method public static isChina()Z .registers 1 .prologue const/4 v0, 0x0 return v0 .end metoda
    3 . Uložte soubor. Ano, zapomněl jsem říct, že potřebujete normální editor, například Notepad++ nebo EditPlus. Kdo má rád který?
    Kompilace a sestavení opraveného souboru JAR
    1 . Pomocí backsmali jsme vykuchali náš soubor JAR a teď ho musíme dát zpátky dohromady.
    2 . Zadejte příkaz java -Xmx512m -jar smali.jar -a 16 HTCExtension -o class.dex
    3 . Soubor class.dex se objeví v naší složce
    4 . Opět otevírání HTCExtension.jar soubor s archivátorem a nahradit v něm stávající třídy.dex k našemu právě vytvořenému.
    5 . To je ono, naše HTCExtension.jar obsahuje upravený kód programu.
    Nahrazení původního souboru opraveným souborem
    Obvykle se pro běžné uživatele vytvářejí speciální skripty, které jsou nahrazeny obnovou. Ale tohle nás nezajímá. Za prvé je to dlouhé a zdlouhavé a za druhé jsme zkušení uživatelé a můžeme si dovolit nějaké jemnosti.

    1 . Pokud již máte firmware DEODEX a máte přístup root, můžete aktuální pracovní soubor nahradit následujícími příkazy:

    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-mail chráněný]@classes.dex restartujte

    První příkaz nahraje opravený soubor na flash disk
    2. příkaz otevře shell
    3. příkaz poskytuje root přístup
    4. příkaz připojí systém do režimu čtení/zápisu
    5. příkaz vytvoří záložní kopii souboru
    6. příkaz přepíše existující soubor novým opraveným souborem.
    7. příkaz konfiguruje oprávnění
    8. příkaz vymaže mezipaměť
    9. příkaz restartuje zařízení.

    2 . Děkuji, že jste dočetli až sem, zbývá málo.
    3 . Po restartu se váš nový opravený kód projeví.
    4 . Pokud kód nefunguje nebo dojde k chybě, můžete pomocí jednoduchých kombinací vrátit záložní kopii.
    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-mail chráněný]@classes.dex restartujte

    Epilog

    Ano, některým se zdál tento článek příliš konkrétní, některým byl těžko srozumitelný a některým připadal zbytečný. Záměrně jsem se vyhnul hloubkovým detailům a ilustracím, jak to celé vypadá naživo a v praxi. Za prvé, tato práce bude nevděčná a vyvolá jen další otázky. Za druhé, nechci vidět armádu uživatelů na fórech, kteří si stěžují, že zabili svůj telefon.

    V příštím článku vám řeknu, jak dělat Tweeky. Bude zde ukázka využití automatického nahrávání telefonních hovorů pomocí nativních telefonních nástrojů. Děkuji za pozornost.

    P.S. Pokud něco není jasné nebo matoucí, ptejte se - vždy rád odpovím a vysvětlím.

    Při používání různých firmwarů Android jste pravděpodobně narazili na pojmy jako „odexed“ a „deodexed“. A často, když provádíte jakékoli manipulace s firmwarem, musíte vědět, zda je „odexed“ nebo „deodexed“, abyste neudělali nic hloupého. Co se tedy skrývá za těmito dvěma pojmy?

    Odexed ROM

    Pokud je firmware označen jako odexed, pak ve složce systémových aplikací /system/app najdete soubory s příponou .odex. Toto rozšíření znamená ""Optimalizovaný soubor Dalvik Executable File"". Kromě normálního souboru APK najdete jeho kopii .odex. Například Browser.apk a browser.odex.

    Co je soubor .odex?

    Tento soubor slouží především k uspořádání struktury libovolné aplikace, obsahuje aplikační instrukce a umožňuje Androidu k nim rychlý přístup bez zbytečného hledání a extrahování ze souboru .apk. Soubory Odex se načítají přímo do mezipaměti virtuálního stroje Java „dalvik“, což umožňuje systému pracovat mnohem rychleji.

    Výhody firmwaru Odexed

    Aplikace se spouštějí mnohem rychleji, protože jejich kód je předem nahrán do mezipaměti dalvik. Velikost souborů .apk je malá, takže zabírají méně místa.

    Nevýhody firmwaru Odexed

    Modifikace/témata/hackingová aplikace se stává mnohem složitější, protože kód je nyní na dvou různých místech. Pokud odstraníte jakoukoli aplikaci, musí být odstraněn také soubor .odex. Pokud jej neodstraníte, může dojít k chybám.

    Deodexovaná ROM

    Pokud jde o tento typ firmwaru, všechny pokyny a kódy aplikací jsou umístěny v souborech .apk. Kód, který byl uložen v souboru .odex, je nyní vložen do volaného souboru .apk třídy.dex.

    Výhody deodexovaného firmwaru

    Deodexed je mnohem jednodušší pro úpravy/témata/hackování, protože veškerý kód je nyní v jednom souboru .apk. Systémové aplikace se snáze odebírají, protože stačí odstranit pouze jeden soubor APK.

    Nevýhody deodexovaného firmwaru

    Aplikace se spouštějí pomaleji. Ale nejen aplikacím, ale i samotnému systému trvá načítání déle, protože obsah aplikace se načítá ze systému, a ne přímo.

    Firmware pro Android, který pochází přímo od výrobců různých zařízení, je většinou odexovaný. Vlastní firmware je v 9 případech z 10 deodexován. Dostáváme, že odexovaný firmware má lepší provozní rychlost, Deodexed je vhodnější pro hacky, modding a další manipulace. To je vše, stručně o tom hlavním.