Internet Windows Android

Deodexarea și deodexarea firmware-ului Android. Ce este odex și deodex în Android Ce este firmware-ul deodexat

Mai devreme sau mai târziu veți întâlni concepte precum Odex și Deodex. Este deosebit de important să știți despre ele în momentul în care utilizatorul decide să schimbe firmware-ul. Nu toată lumea poate explica corect Odex și Deodex - ce este? Uneori, acest lucru face dificilă selectarea și instalarea software-ului potrivit pe dispozitivul dvs. mobil. Ca urmare, funcționarea unui smartphone sau a unei tablete nu corespunde așteptărilor utilizatorului. Faptul este că toți utilizatorii pot fi împărțiți în două categorii. Primele valori funcționează stabil, rapid și fiabil. Astfel de utilizatori folosesc rareori firmware personalizat pe dispozitivele lor. A doua categorie, dimpotrivă, preferă să personalizeze complet gadgetul în funcție de nevoile individuale. Astfel de utilizatori folosesc adesea firmware personalizat, câștigă drepturi de root și nu se tem să modifice parametri importanți pe propriul risc care afectează funcționarea sistemului de operare al tabletei sau smartphone-ului. În orice caz, informațiile despre care este diferența dintre Deodex și Odex vor fi utile pentru toate categoriile de utilizatori, indiferent de nevoile acestora de utilizare a gadgeturilor mobile și de atitudinea lor față de schimbarea setărilor importante.

Diferența dintre firmware-ul Odex și Deodex, precum și avantajele și dezavantajele acestora

Ce sunt Odex și Deodex?

Odex este un concept general care implică firmware-ul din fabrică al unui gadget mobil care rulează pe sistemul de operare Android. Uneori se numesc dexed. Deodex este o versiune personalizată a firmware-ului sau, după cum spun unii, deodexată.

Fiecare program are o secțiune executivă. Într-un sistem de operare personalizat, Android se află în fișierul classes.DEX, în timp ce versiunea originală conține o secțiune executivă în mașina virtuală Dalvik Virtual Machine a sistemului de operare. Odex înseamnă „Optimized Dalvik Executable File”. Principiul de funcționare al fișierului Odex este că permite sistemului de operare să primească date direct, fără a căuta și dezarhiva informații din fișierele cu extensia apk.

Ce este firmware-ul Deodex? Aceasta este o variantă de software în care secțiunea executabilă a aplicației este reambalată într-un fișier classes.dex și apoi mutată înapoi în fișierul apk. Acest lucru vă permite să stocați toate elementele programului într-o singură secțiune, reducând în același timp riscul de a cauza funcționarea defectuoasă a aplicației în timp ce modificați setările utilizatorului.

A afla dacă firmware-ul Odex sau Deodex este instalat pe dispozitivul tău mobil este foarte simplu. Pentru a face acest lucru, utilizatorul trebuie să folosească un manager de fișiere. Utilizatorul trebuie să acceseze folderul /system/app. În funcție de extensia fișierelor conținute în folder, puteți determina tipul de sistem. Extensia odex se referă la versiunea odexed. Dacă nu găsiți fișierul în folderul de sistem, aceasta înseamnă că firmware-ul deodexat este instalat pe dispozitivul mobil.

Avantaje și dezavantaje

Este imposibil să spunem clar care este mai bine - Odex sau Deodex? Ambele opțiuni au avantajele și dezavantajele lor. Avantajele versiunii codificate sunt că aplicațiile se lansează mult mai repede. Acest lucru devine posibil datorită preîncărcării informațiilor de către sistem. În același timp, fișierele cu extensia apk necesită mai puțină memorie a dispozitivului.

Avantajele sistemelor deodexate sunt că este mult mai ușor să dezinstalezi o aplicație inutilă. Pentru a face acest lucru, trebuie pur și simplu să ștergeți fișierul apk, care este responsabil pentru funcționarea programului. De asemenea, este important să rețineți că modificarea sistemului de operare este mult mai ușoară, deoarece datele sunt plasate într-un singur .

Un shell dexed este mult mai dificil de piratat, deoarece preia date de la două partiții diferite. Există anumite detalii legate de dezinstalarea programelor, așa că vă recomandăm să urmați acest proces cu atenție. Fișierele cu extensia odex ar trebui, de asemenea, șterse. Dezavantajele shell-urilor deodexate includ funcționarea mai lentă, care are loc datorită ștergerii automate a cache-ului, care stochează date din cele mai populare programe.

Cum se face o versiune Deodex?

Există o modalitate simplă prin care puteți face firmware Deodex din unul deodexat. Pentru a face acest lucru, trebuie să descărcați și să instalați utilitarul xUltimate. Apoi, trebuie să urmați câțiva pași simpli.

Ce sunt Odex și Deodex?

Dosarul sistem/aplicație conține fișiere APK și Odex. Deodex - înseamnă că toate fișierele Odex sunt incluse în APK și nu sunt în folderul sistem/aplicație. Sistemul Deodex este convenabil pentru editare, dar este considerat a fi mai instabil și mai lent, dar în practică, personal sunt bine cu el. Fișierele Odex sunt module de cod dex ambalate care se găsesc de obicei în interiorul unui apk. A folosit Dalvic VM pentru a accelera lansarea aplicației.

Pentru a accelera încărcarea Dalvik VM, codul executabil (classes.dex) poate fi mutat din programe (fișiere .apk) în fișiere separate cu extensia .odex. De regulă, firmware-ul (oficial) din fabrică este instalat în această formă. Dezavantajul acestei soluții este imposibilitatea personalizării interfeței.

conversia codului executabil din fișierele .odex înapoi în fișiere de program (.apk).
Pentru a instala firmware-ul Deodex, de obicei aveți nevoie de Root și CWM Recovery sau de o altă recuperare modificată (TWPR, Philz Touch etc.).

Puteți afla firmware-ul Odex sau Deodex după cum urmează.
Dacă folderul sistem/aplicație conține doar fișiere cu extensia APK, înseamnă firmware deodex, dacă există fișiere cu extensia odex, înseamnă firmware odex. Toate firmware-urile oficiale Odex. Aproape toate firmware-urile modificate sunt deodex, dar printre cele modificate se numără și firmware-ul odex.

Ce înseamnă să instalezi Deodex?
Să presupunem că ați creat sau ați găsit deja aceleași fișiere deodex pentru firmware-ul dvs. Acum trebuie să le încărcați în folderul sistem/aplicație, dar nu le puteți înlocui pur și simplu prin Explorer, deoarece sistemul le poate folosi în prezent. Există fișiere gata făcute pentru asta. Ele (fișierele) sunt plasate într-o arhivă ZIP specială cu un script pentru recuperarea modului (puteți scrie singur acest script) și tot ce trebuie să faceți este să instalați această arhivă folosind orice recuperare modificatăinstrucțiuni pentru instalarea fișierelor zip

Această arhivă ZIP este o arhivă cu fișiere deodexate și cu instrucțiuni de instalare prin mod. recuperare. Dacă ai instalat un Russifier, atunci după instalarea deodexată, cel rusesc va dispărea, nu e mare lucru, va trebui doar instalat din nou cel rusesc. Acest lucru se întâmplă deoarece în Android limba interfeței este descrisă de un fișier XML conținut în apk. Rusificarea are loc prin adăugarea xml-ului rusesc la apk, iar când instalați Russifier-ul pe sistemul dvs., vechiul apk este pur și simplu înlocuit cu altele noi rusificate. Instalarea fisurii se realizează folosind același ZIP pentru mod. recuperare ca deodexată. Fișierele rusificate au fost deja deodexate, deoarece nu putem edita fișierele Odex. Arhivele deodexate pe care le avem sunt luate de pe site-uri străine, deci nu există rusă în ele, așa că după ce le instalați trebuie să reinstalați localizatorul.

După instalarea deodexed, toate aplicațiile de sistem sunt restaurate și înlocuite, toate din același motiv descris mai sus. Prin urmare, ștergerea fișierelor de sistem trebuie făcută după instalarea deodexed.

Fiecare dintre voi a auzit de mai multe ori cuvintele „deodex” sau „odex”. De obicei, acestea se găsesc acolo unde sunt postate diverse firmware-uri pentru dispozitivul dvs., de exemplu, pe XDA-Developers sau 4pda. Deci, ce înseamnă, DEODEX sau ODEX? Care sunt diferențele lor? Cum se face DEODEX? Veți găsi răspunsuri la aceste și alte întrebări în următorul număr al rezumatului „Ce este...”.
Odex (Optimized Dalvik Executable File) este un fișier aflat în același folder cu aplicațiile de sistem, care stochează codul programului în sine. După cum știți, fiecare program are nevoie de instrucțiuni, datorită cărora el (programul) va îndeplini una sau alta funcție sau funcționare. Acesta este exact codul programului pe care l-am descris mai devreme. Dacă doriți să modificați orice fișier de sistem, va trebui să căutați atât fișierul odex în sine, cât și .apk atunci când instalați firmware-ul odex. De aici devine clar că acest proces nu va fi foarte ușor. Din acest motiv a fost implementată posibilitatea de firmware deodex.

După cum știți deja, în firmware-ul odex fișierele sunt stocate „aleatoriu”. Cu toate acestea, cu deodex nu există o astfel de tulburare, ca să spunem așa. Toate fișierele din deodex sunt stocate ca o arhivă .zip, dar în cazul nostru sunt „ambalate” în .apk. Din acest motiv, dezasamblarea aplicației pentru modificări ulterioare devine mai ușoară și, datorită faptului că totul este împachetat într-un singur loc, firmware-ul deodex va ocupa probabil mai puțin spațiu.

Cu toate acestea, deodexul nu poate fi lăudat la nesfârșit. Principalul dezavantaj al deodex este că aplicațiile durează puțin mai mult să se încarce decât pe odex. Cel mai probabil, utilizatorul nu va observa acest lucru. Dar nu pot să nu remarc că atât avantajul odex, cât și dezavantajul deodex este că toate aplicațiile de sistem din odex sunt optimizate pentru un anumit dispozitiv de către producător însuși. Și acesta este, fără îndoială, un plus al firmware-ului odex.

Aproape că am uitat să menționez că atunci când instalați diverse modificări gata făcute la sistem pentru dispozitivul dvs., trebuie să aveți firmware deodex.

Probabil, în această situație, sensul termenilor este clar. Și sunt dispus să pariez că unii oameni deja doresc să încerce deodex. Există un număr mare de instrucțiuni pentru firmware-ul deodex pe World Wide Web. Cu toate acestea, nu voi îndrăzni să vă trimit să le căutați pe Google, ci pur și simplu voi scrie în tăcere tot acest proces, încercând să evidențiez toate lucrurile mărunte.

Instrucțiunile pentru diferite versiuni de Android nu sunt aceleași. Datorită faptului că Android 5.0 Lollipop este instalat pe dispozitivul meu, voi scrie instrucțiuni pentru deodex special pentru această versiune.

  1. În primul rând, trebuie să descarcăm un utilitar special, JoelDroid Lollipop Batch Deodexer, pe computerul nostru. Acest utilitar necesită un program Java pentru a funcționa. Observ că, în cazuri frecvente, o aplicație Java își scrie calea incorect și incorect. Din acest motiv, trebuie să înregistrați manual această cale conform acestor instrucțiuni.
  • După aceasta, trebuie să instalăm pe dispozitivul nostru care rulează pe Android 5.0 Lollipop orice manager de fișiere prin care trebuie să copiem cele trei foldere principale de sistem - APP, PRIV-APP, FRAEMWORK - într-un folder separat de pe cardul SD. Acestea se află în folderul rădăcină System.


  • Apoi, trebuie să creăm folderul MyROM în rădăcina oricărei unități interne de pe computer. Apoi creăm un alt folder în acest folder, dar cu numele System. În teorie, ar trebui să obțineți următoarea cale - E:\MyROM\system. Unde „E” este stocarea internă (hard disk)
  • Acele foldere de sistem pe care le-am copiat în al doilea pas trebuie mutate în folderul E:\MyROM\system.
  • Acum, teoretic, am pregătit totul și deja putem trece la punctul DEODEXARE.
  • Lansați utilitarul JoelDroid Lollipop Batch Deodexer instalat anterior.
  • Făcând clic pe butonul „Răsfoiește” din utilitar, trebuie să arătăm calea către E:\MyROM\system
  • Calea este indicată, totul este gata. Tot ce trebuie să facem este să apăsăm tasta „Start Prosecc”, după care va începe deodexarea. Această procedură durează aproximativ 10-15 minute.
  • După ce deodexarea este completă, trebuie să copiem fișierele rezultate, care se află de-a lungul căii E:\MyROM\system, pe o unitate flash MicroSD de pe dispozitiv.
  • Apoi, trebuie să descarcăm AROMA FileManager și să-l instalăm prin recuperare personalizată pe dispozitiv. Dar înainte de instalare, trebuie să selectăm System în secțiunea Mount dacă nu este selectat.
  • După toate acestea, trebuie să mergem la rădăcina sistemului de fișiere și să ștergem folderele APP, PRIV-APP și FRAEMWORK din folderul System, doar ștergeți-le, deoarece atunci când copiați folderele ARM vor rămâne, iar întregul proces, luați în considerare. , s-a dus la scurgere.
  • Apoi, copiați folderele deodex transferate anterior la pasul 9 în folderul System din rădăcina întregului sistem de fișiere.
  • După aceasta, trebuie să flashăm un script care stabilește permisiunile pentru foldere (RWXRX-RX), fișiere .apk și fișiere .xml (RW-R-R)
  • În continuare trebuie să facem ștergerea cache-ului și ștergerea dalvik/art. Reporniți dispozitivul și bucurați-vă de firmware-ul deodex pe care l-ați primit.

  • Asigurați-vă că aveți DEODEX instalat - puteți actualiza firmware-ul folosind următoarele instrucțiuni scurte: D


    Cred cu tărie că am vorbit despre cele mai elementare lucruri despre termenii ODEX și DEODEX, iar acest articol poate fi completat. Vă mulțumim tuturor pentru atenție, vă rugăm să evaluați articolul, o zi bună și o VARĂ reușită!

    Salut Habr!

    În urmă cu câțiva ani, când am fost introdus pentru prima dată în Android, am auzit de la un coleg de muncă că Android oferă posibilitatea de a instala firmware modificat sau făcut în casă. Sincer, atunci eram departe de asta. Și chiar și acum jumătate de an abia mă interesau astfel de lucruri. În adâncul inimii mele, eram sigur că ceea ce făcea producătorul era deja destinat utilizării normale.

    Imaginează-ți dezamăgirea mea când am achiziționat un telefon din China, unde setările din fabrică interziceau utilizarea Google, Skype, Facebook și a altor aplicații. În principiu, era posibil să închid ochii la unele lucruri, dar când telefonul meu nu necesita utilizarea unui cont Google, am promis că îmi voi da seama cu siguranță, indiferent de ce mi s-ar întâmpla.

    A trecut o jumătate de an și firmware-ul meu personalizat este folosit cu succes în toată lumea.

    Această serie de articole va discuta despre cum să faci programare inversă pentru Android, să implementezi patch-uri, modificări și modificări.

    Preambul

    Asa de! Să definim mai întâi conceptele care vor fi folosite în dat articol. Înțelegerea ta obișnuită, totuși, poate fi foarte diferită.

    Plasture- schimbarea sau înlocuirea codului programului existent pentru a modifica algoritmul programului.
    Maud- de regulă, adăugarea de funcționalități suplimentare la codul programului existent fără a schimba algoritmul.
    Ajustare fina- îmbunătățirea funcționalității programului pentru a facilita accesul la parametrii sistemului.

    De asemenea, vreau să remarc că toate exemplele vor fi luate pentru un telefon HTC, dar asta nu înseamnă că această informație nu poate fi folosită pe alte telefoane.

    Pregătirea mediului

    Mă pot descurca fără instrucțiuni detaliate despre cum să utilizez acest sau acel software. Dacă sunteți interesat de acest articol și ați citit până aici, atunci sper că sunteți deja un utilizator experimentat și aveți experiență în utilizarea sau cel puțin experimentarea în acest domeniu. Există o mulțime de instrucțiuni, articole și rezultate ale testelor în domeniul public, la fel ca pe Habré. Mă voi descurca și fără să descriu niște termeni, altfel articolul se va dovedi a fi foarte lung și plictisitor. Vom scrie doar la obiect. Sunt sigur că ești miercuri de multă vreme. Dacă nu, atunci vă sugerez să îl descărcați și să îl instalați.

    1 . Android SDK. Acesta este un mediu de dezvoltare a aplicațiilor pentru Android. Pentru a face modificări, cu siguranță va trebui să ne verificăm codul programului. Mediul de dezvoltare este cel mai bun pe care îl putem folosi.
    2 . Android Bucătărie. Acest utilitar vă va permite să lucrați cu imagini ale partițiilor de sistem ale firmware-ului oficial sau neoficial.
    3 . JD-GUI. Decompilator de cod Java. Aș dori să notez imediat că acesta este cel mai bun decompilator în ceea ce privește ușurința în utilizare.
    4 . DJ Java Decompiler. Un alt decompilator, sau dezasamblator, cum le place unii să-l numească, al codului de program în limbajul Java. Nu este convenabil de utilizat, dar parsează cod pe care uneori JD-GUI nu îl înțelege.
    5 . smali. Un alt dezasamblator, dar de data aceasta cod dalvik. smali este necesar pentru dezasamblare, iar backsmali este necesar pentru asamblarea codului.
    6 . dex2jar. Un utilitar pentru conversia fișierelor executabile de cod Dalvik.

    Conversie de firmware

    Desigur, firmware-ul pe care îl aveți pe telefon de la producător este optimizat pentru a reduce consumul de energie. Pentru ca firmware-ul să fie modificat, acesta trebuie convertit într-un format care să permită modificarea codului. Android Kitchen este folosit pentru aceasta. Desigur, o poți face cu mâinile tale, așa cum am făcut înainte, până când am găsit această „bucătărie”. Puteți citi pe Internet cum să eliminați zona de sistem din telefon, să instalați mediul și să creați firmware-ul DEODEX. Dacă nu înțelegi deja nimic, cred că merită să amâni să citești acest articol până când vei dobândi suficientă experiență.

    După ce firmware-ul s-a schimbat de la o versiune optimizată (ODEX - cod executabil dalvik optimizat, dacă memoria îmi servește corect) la DEODEX (adică NU optimizat), toate fișierele executabile sunt gata pentru modificare.

    Modificări directe

    Crearea de patch-uri
    După cum am spus deja, telefonul meu a fost inițial interzis să folosească Google. Ei bine, indiferent de ce, nu poți merge la Playstore, nu poți configura un cont, agenda telefonică nu se sincronizează cu adevărat. De ce ai nevoie de un astfel de Android? După ce am săpat mult timp în logcat-ul dispozitivului în sine, am găsit intrări care spuneau că utilizarea Google este interzisă. Cel mai incomod lucru la Android este că vezi jurnalul, dar nu știi ce aplicație de sistem îl produce. Pentru a afla de unde îmi veneau picioarele, a trebuit să elimin toate aplicațiile de sistem într-un cod Java dezasamblat. A durat mult, dar încă folosesc munca pe care am făcut-o când am analizat și am găsit codul potrivit. Pașii pentru obținerea unor astfel de instrumente sunt următorii:
    1 . Faceți DEODEX din toate firmware-urile
    2 . Noul dumneavoastră firmware DEODEX va trebui să fie asamblat și afișat pe telefon. Cum se face acest lucru este subiectul unui alt articol.
    3 . Din fiecare fișier aflat în /system/framework, extrageți fișierul classes.dex și convertiți-l în JAR folosind dex2jar.
    4 . Deschideți fiecare JAR rezultat în JD-GUI și salvați-l din nou în codul sursă
    5 . Despachetați codul sursă din arhivă.

    În cele din urmă, am ajuns să am atâtea foldere câte fișiere JAR erau în /system/framework și fiecare folder avea o structură de cod sursă Java.
    Prin simple manipulări am găsit rapid locul care a generat intrări în logcat.

    Nu vom lua în considerare întreaga logică a interdicției, deoarece fiecare caz este o poveste separată. A trebuit să petrec câteva ore înainte de a găsi unde s-au făcut verificările, am construit o diagramă bloc a algoritmului în cap și am înțeles unde să merg pentru a „strica” puțin algoritmul.

    S-a dovedit a fi simplu. Există o subrutină care, pe baza unor constante prestabilite, atunci când a fost contactată, răspundea dacă telefonul aparține sau nu Chinei.

    Codul era în dosar HTCExtension.jar, iar clasa care conținea această subrutină era în

    Dezambalarea și analiza fișierului original
    1 . În primul rând, trebuie să luăm fișierul DEODEX JAR original, care este responsabil pentru partea de cod de care avem nevoie. În cazul nostru HTCExtension.jar.
    2 . Deschideți cu orice arhivator și scoateți classes.dex de acolo
    3 . Utilizați convertorul dex2jar pentru a-l converti într-un fișier JAR. Comanda: dex2jar.bat classes.dex
    4 . Deschideți fișierul classes_dex2jar.jar rezultat în JD-GUI.
    5 . Da, cel mai adesea JD-GUI decompilează codul nu așa cum arată în original, este de înțeles, dar este destul de lizibil. În codul sursă vedem că subrutina verifică parametrii proiectului și flag-ul limbii firmware-ului. În cazul nostru nefericit, TRUE este returnat.
    public static boolean isChina() ( if ((HtcBuildFlag.Htc_PROJECT_flag == 216) || (HtcBuildFlag.Htc_PROJECT_flag == 218) || (HtcBuildFlag.Htc_PROJECT_flag == 23)); while (F_lag ==Htc_PROJECT_flag) ; && (2 == HtcBuildFlag.Htc_LANGUAGE_flag)) || (HtcBuildFlag.Htc_PROJECT_flag == 27)) returnează adevărat; returnează fals; )
    6 . Pentru a face un patch, trebuie să dezasamblam codul Dalvik în sine. Pentru aceasta folosim baksmali. Cel mai convenabil mod este să creați un folder separat și să puneți acolo trei fișiere împreună: HTCExtension.jar, smali.jarȘi baksmali.jar. Dați comanda java -Xmx512m -jar baksmali.jar -a -d -o HTCExtension -x HTCExtension.jar

    Acesta este API-ul pentru versiunea dvs. de Android. Pentru JB este 16
    - folderul în care se află toate cadrele de firmware.

    În cazul meu a fost comanda
    java -Xmx512m -jar baksmali.jar -a 16 -d S:\dev\Android\Android-Kitchen\WORKING_JB_15\system\framework -o HTCExtension -x HTCExtension.jar
    7 . În folderul nostru nou creat, a apărut folderul HTCExtension, iar în el fișierele noastre cu cod Dalvik.
    8 . Găsirea fișierului de-a lungul căii \com\htc\util\contacts\BuildUtils$Customization.java si uita-te la codul:
    .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 v16 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/htcjavaflag/HtcBuildFlag, 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/htcjaflag/Htcjag/Htcvaflag 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 v-eqline v2, v-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 297, 0/4 v. metodă
    9 . Înfricoșător, nu-i așa? Nimic nu este clar. Dar aceasta este o problemă care se poate rezolva. După ce ați creat câteva dintre propriile patch-uri și, astfel, ați câștigat experiență, puteți modifica cu ușurință codul fără instrumente terțe. În cazul nostru, în acest cod
    .prologue const/4 v0, 0x1 atribuie variabilei v0 valoarea 1, adică TRUE. Apoi există tot felul de verificări, iar dacă telefonul nu este chinezesc, atunci valoarea variabilei se schimbă:
    .line 297 const/4 v0, 0x0 goto:goto_13
    10 . Cel mai simplu mod de a-l salva pe tatăl democrației ruse este să schimbi codul în următorul:
    .prologue const/4 v0, 0x0 , adică modificați valoarea variabilei de la 1 la 0. Adică, indiferent de ce, valoarea FALSE ar fi întotdeauna returnată și în JD-GUI codul ar arăta ca public static boolean isChina() ( dacă (( HtcBuildFlag.Htc_PROJECT_flag == 216) || (HtcBuildFlag.Htc_PROJECT_flag == 218) || (HtcBuildFlag.Htc_PROJECT_flag == 23)); în timp ce ((Flag.Htc_PROJECT_flag == 23)); în timp ce ((&_PROJ.Htc_1) Build == 218) || 2 == HtcBuildFlag.Htc _LANGUAGE_flag)) || (HtcBuildFlag.Htc_PROJECT_flag == 27)) returnează fals; returnează fals; )
    11 . Da, metoda va funcționa. Dar nu căutăm căi ușoare – de data aceasta. În al doilea rând, nu este tocmai frumos. As dori un cod de genul
    public static boolean isChina() ( returnează fals; )
    12 . Cum putem obține codul Dalvik pentru acest cod sursă? Pentru începători vom face un mic truc.

    Crearea codului Dalvik
    1 . Deschideți Android SDK.
    2 . Creăm un nou proiect și scriem următorul cod în singura noastră clasă de testare
    pachet ru.habrahabr.test; test de clasă publică ( public static boolean isChina() ( return false; ) )
    3 . Compilăm proiectul nostru și apoi luăm aplicația asamblată din spațiul de lucru.
    4 . Am pus aplicația asamblată în folderul în care am eliminat fișierul JAR.
    5 . Dați comanda java -Xmx512m -jar baksmali.jar -a -d -o test -x test .apk
    6 . Am dezasamblat aplicația nou construită în codul Dalvik.
    7 . Deschideți fișierul nostru test.smali și vedeți codul acolo
    .method public static isChina()Z .registers 1 .prolog .line 7 const/4 v0, 0x0 return v0 .end method
    8 . Gata, codul de corecție este gata.
    Rulând un plasture
    1 . Codul Dalvik este presărat cu marcaje care indică o linie de cod în fișierul sursă original. Acest lucru este necesar la afișarea erorilor, dacă există, în programul dvs. De asemenea, codul funcționează bine fără a specifica linii.
    2 . Stergem liniile cu numerotarea liniilor, copiem si inlocuim metoda (subrutina) din nostru \com\htc\util\contacts\BuildUtils$Customization.java fişier.
    .method public static isChina()Z .registers 1 .prologue const/4 v0, 0x0 return v0 .end method
    3 . Salvați fișierul. Da, am uitat să spun, aveți nevoie de un editor normal, de exemplu Notepad++ sau EditPlus. Cui îi place pe care?
    Compilarea și construirea unui fișier JAR corectat
    1 . Folosind backsmali, ne-am eliminat fișierul JAR și acum trebuie să-l punem la loc.
    2 . Dați comanda java -Xmx512m -jar smali.jar -a 16 HTCExtension -o classes.dex
    3 . Fișierul classes.dex apare în folderul nostru
    4 . Deschiderea din nou HTCExtension.jar fișier cu un arhivator și înlocuiți-l pe cel existent în acesta clase.dex la cel recent creat.
    5 . Asta e, al nostru HTCExtension.jar conține codul de program modificat.
    Înlocuirea fișierului original cu unul corectat
    De obicei, sunt create scripturi speciale pentru utilizatorii obișnuiți, care sunt înlocuite prin recuperare. Dar nu ne interesează acest lucru. În primul rând, este lung și plictisitor, iar în al doilea rând, suntem utilizatori experimentați și ne putem permite unele subtilități.

    1 . Puteți înlocui fișierul de lucru curent cu următoarele comenzi dacă aveți deja firmware DEODEX și aveți acces root:

    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@ [email protected]@classes.dex reporniți

    Prima comandă încarcă fișierul corelat pe unitatea flash
    A doua comandă deschide shell
    A treia comandă oferă acces root
    A 4-a comandă montează sistemul în modul citire/scriere
    A 5-a comandă face o copie de rezervă a fișierului
    A șasea comandă suprascrie fișierul existent cu cel nou corectat.
    A 7-a comandă configurează permisiunile
    A 8-a comandă șterge memoria cache
    A 9-a comandă repornește dispozitivul.

    2 . Vă mulțumim că ați citit până în acest punct, a mai rămas puțin.
    3 . După o repornire, noul cod corelat va intra în vigoare.
    4 . Dacă codul nu funcționează sau apare o eroare, atunci folosind combinații simple puteți returna copia de rezervă.
    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@ [email protected]@classes.dex reporniți

    Epilog

    Da, unii au considerat că acest articol este prea specific, altora le-a fost greu de înțeles, iar alții l-au găsit inutil. Am evitat în mod deliberat detaliile în profunzime și ilustrațiile despre cum arată totul în direct și în practică. În primul rând, această lucrare va fi ingrată și va da naștere la și mai multe întrebări. În al doilea rând, nu vreau să văd o armată de utilizatori pe forumuri care se plâng că și-au ucis telefonul.

    Pentru următorul articol vă voi spune cum să faceți Tweeks. Va exista un exemplu de utilizare a înregistrării automate a apelurilor telefonice folosind instrumente de telefon native. Vă mulțumim pentru atenție.

    P.S. Dacă ceva nu este clar sau confuz, pune întrebări - voi fi întotdeauna bucuros să răspund și să explic.

    În această scurtă notă, vom spune cititorilor noștri despre firmware-ul de deodexare pentru Android folosind jBart, precum și diferența dintre firmware-ul ODEX și DEODEX. Mai întâi, să ne dăm seama ce se înțelege prin termenii odex / deodex folosind următoarele link-uri:

    La momentul scrierii acestei note, versiunea actuală era jBart v1.8.9 -„Programul este conceput pentru a automatiza procesul de traducere a firmware-ului bazat pe sistemul de operare Android. Versiunile Android sunt acceptate de la 2.x.x la 4.x.x (inclusiv Android 4.4 KitKat). Miezul programului este un apktool modificat. În plus față de traducerea firmware-ului, există posibilitatea de deodexare a firmware-ului și, de asemenea, să funcționeze cu un singur fișier apk și jar din firmware."

    Fără să tragem povestea prea mult timp, să trecem la un exemplu practic. Ne vom „antrena” pe firmware-ul de la MTS, despre care am scris nu cu mult timp în urmă. Primul pas este să descărcați folderele /system/app și /system/framework, precum și fișierul build.prop, de pe tabletă într-un fel sau altul. care poate fi găsit în folderul de sistem. Pentru a copia unele părți ale firmware-ului este posibil să aveți nevoie de drepturi de root (pe Oysters T7V 3G le puteți obține cu ușurință folosind aplicația motochopper, pe care îl puteți găsi cu ușurință în motoarele de căutare). După ce am descărcat fișierele și folderele necesare, le plasăm în directorul de sistem și le împachetăm într-o arhivă - system.zip, astfel încât rădăcina arhivei să conțină folderul de sistem, iar în interiorul acestuia există subfolders app, framework și folderul bulid.prop:

    Selectăm versiunea corectă a ROM API (adică versiunea Android), în cazul nostru este 4.2.x, apăsăm butonul Deodex și așteptăm. La finalizarea operațiunii, arhiva cu firmware-ul deodexat va fi localizată în jBART-master\output\deodexed_system.zip. După cum puteți vedea, fișierele de firmware nu mai conțin fișiere .odex, ci doar .apk. Acum puteți trece la modificarea, traducerea, editarea acestora etc. schimbări. Dar acesta este un subiect pentru o notă complet diferită. Pentru a rezuma, observăm că, cu ajutorul jBart și mai multe operații simple, am învățat cum să obținem firmware deodexat de la firmware deodexat, adică. "personalizat". Fișiere în care fiecare se poate modifica în funcție de dorințele și nevoile sale.