Cum și ce să editați aplicațiile Android. Deschiderea, modificarea și împachetarea aplicațiilor Android

Sunt din nou eu și instrucțiunile mele pentru ceainice și oale de cafea cu poze.

De data aceasta, voi vorbi în detaliu despre înlocuirea componentelor de sistem ale sistemului de operare Android utilizând exemplul instalării unei modificări a barei de stare.

Android este un Linux mic. În acesta, trebuie respectate o serie de reguli la înlocuirea fișierelor, astfel încât telefonul să nu se transforme într-o cărămidă, care poate fi reînviată doar printr-o intermitentă completă cu pierderea tuturor datelor din memorie interna dispozitive. Partițiile interne sunt formatate într-un alt sistem de fișiere decât FAT32 pe unitățile flash. Proprietățile fișierului, printre altele, stochează permisiuni pentru diferite grupuri de utilizatori (proprietar de fișier, grup de proprietari de fișiere, alți utilizatori). Când operați cu fișiere de sistem acestea trebuie să fie salvate, deoarece la momentul pornirii, sistemul poate pur și simplu să nu le poată accesa și să nu pornească normal.
Să începem cu caseta de instrumente.

Avem nevoie:

  • Un manager de fișiere care știe să lucreze cu drepturi de root și permisiuni de fișiere. Root Explorer este cel mai bun (l-ați cumpărat, nu?)
  • Fișierul modificat în sine, pe care dorim să îl punem în locul celui de sistem (link la sfârșitul articolului).

Acum folosim una dintre funcțiile convenabile ale Root Explorer. Să facem o atingere lungă fișierul dorit pentru a afișa meniul contextual

Și faceți clic pe elementul " Comprimă acest fișier„pentru a salva fișierul într-o arhivă zip de pe cardul SD. După arhivare, primim acest mesaj:

Apasa butonul " Stau„să rămână în dosar și să facă altceva.

Acum sunteți gata să înlocuiți fișierul.
Am vorbit deja despre permisiunile pentru fiecare fișier. Pentru a le recrea într-un fișier nou, trebuie mai întâi să le priviți din cel vechi. Ele sunt reprezentate printr-o serie de simboluri „rwxrwxrwx”. Prima triadă - drepturi de proprietar, a doua - grupuri de proprietari, a treia - toți ceilalți utilizatori. Fișierul nostru are permisiuni "rw-r - r--".

Acum mergem la cardul SD, găsim fișierul modificat acolo și selectăm elementul " Copie", dar nu ne grăbim să selectăm folderul" / system / app "imediat, deoarece vom deteriora imediat sistemul. În schimb, copiem fișierul într-un folder special pentru fișiere temporare" / data / local / tmp "pentru a aduce fișierul într - o formă care va lua sistemul.
Pentru început, deschideți meniul contextual al fișierului și selectați elementul " Redenumiți"și introduceți numele fișierului" SystemUI.apk ". Așa este, deoarece în Linux contează literele din nume, adică" systemui.apk "și" SystemUI.apk "sunt fișiere diferite.
Apoi, trebuie să modificați permisiunile pentru fișier, deoarece acum sunt aproape sigur că sunt setate incorect. Pentru a face acest lucru, apelați din nou meniul contextual al fișierului cu o atingere lungă și selectați elementul " Permisiuni". Pentru valoarea noastră" rw-r - r-- ", steagurile ar trebui să fie setate astfel:

Faceți clic pe „ Bine„și apelați din nou meniul contextual. Acum trebuie să schimbăm proprietarul și grupul pentru această aplicație. Pentru aceasta, selectați„ Schimbați proprietarul". Va apărea o fereastră cu informații despre proprietarul actual al fișierului.
Aici trebuie să facem o mică divagare.
În folderul „/ system / app” toate fișierele sunt deținute de utilizator „root” (uid = 0) și grupul „root” (gid = 0), iar în folderul „/ system / framework„ utilizatorul este „ system "(gid = 1000) și grupul" system "(gid = 1000).
Pe baza celor de mai sus, expunem valorile doriteși apăsați „ Bine".
Și pentru a treia oară apelăm meniul contextual pentru fișier și selectăm elementul " Copie"și în dialogul de copiere accesați folderul" / system / app ". Acum apăsați cu îndrăzneală" Pastă"și citiți cu atenție.
Aproape imediat, sistemul va raporta că procesul barei de stare s-a încheiat brusc și va oferi să îl porniți. Toate încercările vor eșua. Între apariția ferestrelor, trebuie să aveți timp să efectuați o serie de acțiuni. Înainte de a apăsa butonul, trebuie să apelați meniul pentru oprirea dispozitivului, acesta va fi sub avertisment. Acum trebuie să plasați degetul aproximativ în partea stângă a butonului. Acum trebuie să faceți clic rapid degetul de trei ori pentru a avea timp să închideți avertismentul, să selectați elementul de oprire și să vă confirmați intențiile.
Acum așteptăm ca telefonul să se oprească, să-l repornească și să se bucure de rezultat sau să nu se bucure de el și să căutăm erori.

Editarea aplicații de sistem Android este cel mai adesea realizat atunci când utilizatorul unui smartphone, tabletă sau alt dispozitiv controlat de acesta sistem de operare, încetează să satisfacă curentul aspect programe instalate în dispozitiv de către producător sau vânzător. Un alt motiv poate fi necesitatea de a face nu numai modificări referitoare la design grafic Aplicații Android, dar afectează și locația diferitelor elemente și performanța funcțiilor de bază.

Pentru a aduce modificări codului, abilitățile de bază de programare sunt necesare în aproape orice limbaj (de preferință Java și C ++). Pentru a înlocui grafica, mâinile drepte și capacitatea de a lucra într-un editor grafic vor face bine.

În primul rând, trebuie să decideți dacă trebuie doar să înlocuiți grafica în aplicațiile Android sau trebuie să modificați dispunerea elementelor din sistem și să faceți modificări mai profunde în cod. Următorii pași depind de acest lucru, presupunând că lucrează cu aplicația ca arhivă sau demontare completăși editare.

Schimbarea graficelor în aplicațiile de sistem Android

Pentru a înlocui sau modifica pur și simplu grafica originală (modificați culorile butoanelor, redesenați imaginile etc.), este suficient să aveți un standard Arhivatorul WinRAR... În același timp, utilizatorul trebuie să aibă drepturi de root pe dispozitiv (analog cont administrator pe Windows) și este, de asemenea, de dorit să aveți o recuperare alternativă (CWM) și root explorer (pentru a accesa sistemul de fișiere Android direct din dispozitiv).

În primul rând, trebuie să activați depanarea USB în dispozitiv, apoi să îl conectați la computer utilizând un cablu USB și să instalați driverele necesare. De obicei sunt localizate la disc virtual care apare atunci când este conectat la un computer.

Apoi, trebuie să descărcați și pluginul ADB pentru managerul de fișiere de pe Internet. Acest plugin vă permite să vedeți întregul sistem Android ca o unitate conectată cu foldere. Toate aplicațiile de sistem sunt localizate la / system / app, precum și la / system / framework. După ce am găsit aplicația necesară, o copiem pur și simplu pe computer. Dacă pluginul nu este instalat, puteți folosi root explorer pentru a copia aplicația cu extensia apk pe un card SD detașabil, apoi de pe acesta pe computer.

După copiere aplicația dorită puteți începe editarea graficelor. Apropo, toate imaginile din aplicațiile Android sunt salvate în format png, care poate fi deschis cu ușurință cu orice editor grafic. Deschiderea fișierului aplicației cu WinRAR dezvăluie un număr de foldere. Ne va interesa doar folderul res, în interiorul căruia, la rândul său, vor fi multe diferite foldere... Dintre acestea, sunt necesare doar cele care au cuvântul „desenabil” în numele lor.

Acum să ne amintim tipul nostru de dispozitiv și rezoluția ecranului. Dacă acesta este un smartphone și rezoluția este de 240x320, atunci vom fi interesați în principal de folderele desenabile și desenabile-ldpi. Dacă rezoluția este de 320x480, folderele desenabile și desenabile mdpi, respectiv, și pentru rezoluția 480x800, folderele desenabile și desenabile-hdpi. În plus față de acestea, există, de obicei, și foldere cu cuvântul „land” în nume - acestea sunt elemente grafice pentru modul portret, adică când dispozitivul este înclinat.

Dacă dețineți o tabletă, atunci vom fi interesați doar de folderele desenabile și desenabile-mdpi la orice rezoluție a ecranului.

După ce ați copiat folderele selectate pe computer, puteți înlocui sau recolora imaginile originale cu cele dorite și plăcute pentru ochi. Ar trebui să acordați o atenție deosebită imaginilor cu rezoluția 9.png. Faptul este că de-a lungul perimetrului unei astfel de imagini există un cadru special cu un lățime de un pixel cu semne speciale, a cărui încălcare a integrității va duce la o defecțiune a aplicației. Prin urmare, trebuie să aveți mare grijă atunci când editați astfel de fișiere.

După ce ați terminat de editat folderul, trebuie să îl încărcați înapoi în arhivă, care este aplicația în sine cu extensia apk. În acest caz, este imperativ să selectați opțiunea „fără compresie” în WinRAR.

Aplicația corectată este încărcată înapoi pe dispozitiv fie utilizând un root explorer (mai întâi fișierul este copiat pe cardul SD și de pe acesta pe dispozitiv), fie după ce ați ieșit din recuperare - imediat de pe computer în / sistem / aplicație sau / sistem / dosar cadru ... Apoi, trebuie să setați permisiunile de fișier folosind opțiunile corespunzătoare din root explorer sau pluginul ADB. Acestea trebuie să fie în format 644. După repornirea dispozitivului, puteți vedea rezultatul aplicației actualizate.

Editarea codului sursă al aplicațiilor de sistem

Este necesar un pic mai mult efort pentru a edita codul sursă al aplicațiilor de sistem. Pentru a dezasambla și asambla aplicația după ce ați făcut modificări, va trebui să parcurgeți următorii pași.

1) Instalați pe computer pachetul software necesar în fișierul lor ultimele versiuni: Java SE Runtime Environment și Android Windows SDK(programe pentru lucrul cu aplicațiile și componentele acestora), APKtool sau APKManager sau Firmware_tool (unul dintre cele trei programe pentru demontarea și decompilarea aplicațiilor de sistem), editor NotePad ++ (pentru modificarea codului sursă al aplicațiilor de sistem Android).

2) Activați USB Debugging în dispozitiv, conectați-l la computer utilizând un cablu USB, instalați driverele necesare pentru a lucra cu dispozitivul.

3) Folosind unul dintre programele de mai sus pentru a lucra cu codul aplicației, trebuie să extrageți folderul / system / framework (complet) din telefon în folderul programului corespunzător și aplicațiile de sistem din folderul / system / app. De exemplu, pentru programul Firmware_tool, fișierele de pe telefon trebuie copiate în folderul C: Firmwaretoolfw_project1_source2_system.img_unpacked din subfolderele corespunzătoare (aplicații - în dosarul aplicației, fișiere din cadru - în folderul cadru). Când utilizați atât acest program, cât și alte programe, asigurați-vă că citiți instrucțiunile pentru acestea.

4) Instalați „cadrul de bază”, adică un set de reguli conform cărora se vor efectua decompilarea (adică dezasamblarea codului) și compilarea (adică asamblarea codului) a aplicațiilor.

Aceasta completează pregătirea pentru lucrul cu aplicații de sistem.

Descărcarea aplicațiilor de pe dispozitiv și încărcarea lor înapoi se efectuează în același mod descris în secțiunea „Schimbarea graficelor în aplicațiile de sistem Android”.

Editarea codului aplicațiilor Android se face de obicei folosind editorul NotePad ++ - unul dintre cei mai convenabili editori de text care au opțiunea de a evidenția sintaxa limbajului de programare selectat. De regulă, atunci când editați, puteți schimba și grafica pe parcurs folosind editorul grafic selectat.

La finalizarea editării, aplicația modificată este încărcată din nou în dispozitiv, iar dispozitivul în sine trebuie repornit. Editorii mai avansați folosesc diverse emulatoare pentru depanarea aplicațiilor înainte de a le încărca pe dispozitiv, de exemplu, Eclipse de la Google.

Programele pentru platforma Android sunt un singur fișier cu extensia apk, ceea ce este foarte convenabil. De fapt, instalarea oricărui program pe un smartphone sau tabletă este redusă la cea a acestuia copiere simplă la gadgetul dvs. Ce este un fișier apk și cum puteți vedea ce este în interior?

Ce este un fișier APK?

Abrevierea APK este dezvăluită ca Android Package Kit - un pachet executabil de fișiere pentru aplicații Android. Este o arhivă care conține coduri compilate și gata de rulare și alte resurse. fișierele apk sunt stocate pe site-uri de internet cum ar fi Google Play de unde le puteți descărca și instala pe gadget. Nu sunt criptate.

Structura sa este pregătită de dezvoltator pentru a rula în mediu mașină virtuală Dalvik sau ART. Aceste mașini sunt încorporate în sistemul de operare Android și rulează toate aplicațiile de pe dispozitiv.

Fișierul apk în sine este o arhivă obișnuită, pe care o puteți deschide cu orice arhivator Mediul Windows... De exemplu, WinRAR sau manager de fișiere care deschide arhive ZIP. Să vedem ce este acolo înăuntru.

  • Un fișier executabil cu extensia dex (numele poate fi oricare), care este exact codul programului.
  • Alături se află resources.arsc, care este un registru de resurse pe care programul ar trebui să le folosească. Este o structură XML.
  • AndroidManifest.xml este un fișier obligatoriu al oricărui program, un manifest care conține principalele informații despre acesta. Aici, de exemplu, pot fi înregistrate versiunea programului, versiunea necesară de Android, informații despre dezvoltator, rezoluțiile de ecran necesare și așa mai departe.
  • Directorul res conține resurse interne de care programul trebuie să funcționeze. Toate imaginile, pictogramele, pictogramele, hărțile și așa mai departe pot fi aici.
  • Director bibliotecar - biblioteci native pentru ca programul să funcționeze, de exemplu, cod C ++. Este posibil ca acest director să nu fie prezent dacă bibliotecile nu sunt utilizate.
  • Directorul de active - resurse suplimentare pentru aplicație, uneori poate lipsi. Exact ce resurse ar trebui utilizate sunt descrise în fișierul resources.arsc.
  • Director META-INF - metadate ale programului. De exemplu, un fișier MANIFEST.MF, care poate conține căi de date și sumele de verificare ale acestora. Aici pot fi stocate fișiere de certificate RSA, informații despre versiunea de manifest și informații similare despre servicii.

Revizuirea editorilor de fișiere ARK populari

După cum sa menționat deja, puteți despacheta fișierul apk cu orice arhivator ZIP. După aceea, puteți vizualiza resursele stocate acolo.

Nu vor exista deloc probleme cu imaginile, acestea pot fi deschise în orice program adecvat. Format XML se deschide de orice editor de text de ex. Notepad ++. Dacă știți cum funcționează acest format, atunci acestea pot fi deja editate. Dar pentru fișierele executabile compilate, trebuie să utilizați instrumente speciale.

Editor Eclipse... Este un mediu multiplataforma complet pentru un programator. Vă puteți dezvolta în orice limbaj modern și puteți pregăti fișiere executabile, inclusiv cele pentru Android. Mediul poate fi personalizat flexibil folosind numeroase pluginuri.

SDK Android ... După cum sugerează și numele, acesta este un instrument dedicat de dezvoltare programe mobile este pentru Android. Cu ajutorul acestuia, puteți descompila cu ușurință fișierele executabile ale aplicației altcuiva sau să le scrieți de la zero. Diferă prin faptul că conectează opțional diverse module pentru depanarea și testarea codului dvs., pentru testarea programelor de compatibilitate cu diferite gadget-uri etc.

Descărcător APK... Acesta este un plugin pentru Browser Chrome, ceea ce face foarte ușor să descărcați programe apk de pe orice site și să vizualizați structura acestora. Pentru a face acest lucru, nu poți fi chiar înregistrat pe Google Play.

Editor APK... Un editor care vă permite să lucrați cu resurse în pachetele apk. Nu la fel de puternic ca Eclipse, ci un set crucial sarcini simple... De exemplu, puteți elimina unități de anunțuri din program, rusificați interfața, înlocuiți pictogramele sau texturile cu ale dvs. și multe altele.

Uneori, unele aplicații de pe Android nu se potrivesc în vreun fel utilizatorului. Un exemplu este reclame enervante... Și, de asemenea, se întâmplă - toată lumea este bună la program, dar numai traducerea din el este fie strâmbă, fie este complet absentă. Sau, de exemplu, un program de încercare și get versiunea completa nu există nicio posibilitate. Cum se poate schimba situația?

Introducere

În acest articol vom vorbi despre cum să dezasamblați un pachet APK cu o aplicație, să ne uităm la structura sa internă, să dezasamblați și să decompilați codul secundar și, de asemenea, să încercați să faceți mai multe modificări ale aplicației care ne pot aduce unul sau alt beneficiu.

Pentru a face toate acestea pe cont propriu, veți avea nevoie de cel puțin o cunoaștere de bază a limbajului Java, în care sunt scrise aplicațiile Android, și a limbajului XML, care este folosit peste tot în Android - de la descrierea aplicației în sine și a drepturilor sale de acces la stocarea șirurilor care vor fi afișate pe ecran. De asemenea, veți avea nevoie de abilitatea de a gestiona software specializat pentru consolă.

Deci, ce anume este pachetul APK în care este distribuit absolut tot software-ul pentru Android?

Descompilarea aplicațiilor

În articol, am lucrat numai cu codul de aplicație dezasamblat, dar dacă este în aplicații excelente faceți modificări mai serioase, va fi mult mai dificil să înțelegeți codul smali. Din fericire, putem transforma codul dex în codul Java, care, deși nu este original și nu este compilat înapoi, este mult mai ușor de citit și de înțeles logica aplicației. Pentru a face acest lucru, avem nevoie de două instrumente:

  • dex2jar - traducător al codului bytec Dalvik în cod bytec JVM, pe baza căruia putem obține cod în limbajul Java;
  • jd-gui este decompilatorul în sine, care vă permite să obțineți cod Java lizibil din codul secundar JVM. Alternativ, puteți utiliza Jad (www.varaneckas.com/jad); deși este destul de vechi, în unele cazuri generează un cod mai lizibil decât Jd-gui.

Ar trebui folosite astfel. Mai întâi, rulăm dex2jar, specificând calea către pachetul apk ca argument:

% dex2jar.sh mail.apk

Ca urmare, pachetul Java mail.jar va apărea în directorul curent, care poate fi deja deschis în jd-gui pentru a vizualiza codul Java.

Dispozitiv pachet APK și recuperare

Punga de plastic Aplicații Android este, de fapt, un fișier ZIP obișnuit, nu sunt necesare instrumente speciale pentru a vizualiza și extrage conținutul. Este suficient să aveți un arhivator - 7zip pentru Windows sau consola dezarhivați pentru Linux. Dar cam asta este despre ambalaj. Ce e inauntru? În interior, avem în general următoarea structură:

  • META-INF /- conține un certificat digital al aplicației, care certifică creatorul acesteia și sume de control ale fișierelor pachetului;
  • res / - diverse resurse pe care aplicația le folosește în activitatea sa, de exemplu, imagini, o descriere declarativă a interfeței și alte date;
  • AndroidManifest.xml- descrierea aplicației. Aceasta include, de exemplu, o listă a permisiunilor necesare, necesare Versiunea Androidși rezoluția de ecran necesară;
  • clase.dex- cod compus de aplicație compilat pentru mașina virtuală Dalvik;
  • resurse.arsc- și resurse, dar de alt tip - în special șiruri (da, acest fișier poate fi folosit pentru rusificare!).

Fișierele și directoarele listate sunt, dacă nu în toate, atunci, probabil, în marea majoritate a APK-urilor. Cu toate acestea, mai sunt câteva fișiere / directoare neobișnuite care merită menționate:

  • active- analog al resurselor. Principala diferență este că pentru a accesa un material, trebuie să-i cunoașteți identificatorul, în timp ce lista activelor poate fi obținută dinamic folosind metoda AssetManager.list () în codul aplicației;
  • lib- biblioteci native Linux scrise cu NDK (Native Development Kit).

Acest director este utilizat de producătorii de jocuri, care au pus acolo motorul de joc scris în C / C ++, precum și dezvoltatorii de aplicații de înaltă performanță (de exemplu, Google Chrome). Dispozitivul a fost sortat. Dar cum obțineți fișierul pachetului în sine pentru cererea de interes? Deoarece nu este posibil să ridicați fișiere APK de pe dispozitiv fără root (acestea se află în directorul / data / app), iar root nu este întotdeauna recomandat, există cel puțin trei moduri de a obține fișierul aplicației pe computer:

  • Extensie APK Downloader pentru Chrome;
  • Aplicație reală Leecher APK;
  • diverse partajări de fișiere și warezniki.

Pe care să îl folosiți este o chestiune de gust; preferăm să folosim aplicații separate, prin urmare, vom descrie utilizarea Real APK Leecher, mai ales că este scris în Java și, în consecință, va funcționa chiar și în Windows, chiar și în nix.

După începerea programului, trebuie să completați trei câmpuri: Email, Parolă și ID dispozitiv - și să selectați o limbă. Primele două sunt adresa de e-mail și parola contului dvs. Google, pe care le utilizați pe dispozitiv. Al treilea este identificatorul dispozitivului și îl puteți obține formând codul de pe apelator # #8255## și apoi găsirea liniei ID dispozitiv. Când completați, trebuie să introduceți ID-ul fără prefixul Android.

După completare și salvare, apare deseori mesajul „Eroare la conectarea la server”. Nu are nicio legătură cu Google Play, așa că nu ezitați să îl ignorați și să căutați pachetele care vă interesează.

Vizualizați și modificați

Să presupunem că ați găsit un pachet care vă interesează, l-ați descărcat, despachetat ... și în timp ce încercam să vizualizați un fișier XML, am fost surprins să constat că fișierul nu este text. Cum se descompilează și cum se lucrează cu pachetele în general? Este cu adevărat necesar să instalați SDK-ul? Nu, nu trebuie să instalați SDK-ul. De fapt, toți pașii pentru despachetarea, modificarea și ambalarea pachetelor APK necesită următoarele instrumente:

  • Arhivator ZIP pentru ambalare și ambalare;
  • smali- cod bytec de asamblare / dezasamblare a mașinii virtuale Dalvik (code.google.com/p/smali);
  • aapt- un instrument pentru împachetarea resurselor (implicit, resursele sunt stocate în format binar pentru a optimiza performanța aplicației). Inclus în Android SDK, dar poate fi obținut și separat;
  • semnatar- un instrument pentru semnatura digitala pachet modificat (bit.ly/Rmrv4M).

Puteți utiliza toate aceste instrumente separat, dar acest lucru este incomod, deci este mai bine să utilizați software-ul de nivel superior construit pe baza lor. Dacă lucrați pe Linux sau Mac OS X, există un instrument numit apktool. Vă permite să despachetați resursele în forma lor originală (inclusiv fișiere XML binare și arsc), să reconstruiți un pachet cu resurse modificate, dar nu poate semna pachete, deci va trebui să rulați manual utilitarul semnatarului. În ciuda faptului că utilitarul este scris în Java, instalarea sa este mai degrabă non-standard. Mai întâi ar trebui să obțineți fișierul jar în sine:

$ cd / tmp $ wget http://bit.ly/WC3OCz $ tar -xjf apktool1.5.1.tar.bz2

$ wget http://bit.ly/WRjEc7 $ tar -xjf apktool-install-linux-r05-ibot.tar.bz2

$ mv apktool.jar ~ / bin $ mv apktool-install-linux-r05-ibot / * ~ / bin $ export PATH = ~ / bin: $ PATH

Dacă lucrați în Windows, atunci există un instrument excelent numit Virtual Ten Studio, care acumulează, de asemenea, toate aceste instrumente (inclusiv apktool în sine), dar în locul interfeței CLI oferă utilizatorului un instrument intuitiv interfață grafică, cu care puteți efectua operațiuni de despachetare, dezasamblare și decompilare în câteva clicuri. Acest instrument este Donation-ware, adică uneori există ferestre care oferă oferirea unei licențe, dar acest lucru, în cele din urmă, poate fi tolerat. Nu are sens să o descrieți, deoarece puteți înțelege interfața în câteva minute. Dar apktoolul, datorită naturii sale de consolă, ar trebui discutat în detaliu.


Să aruncăm o privire la opțiunile apktool. Pe scurt, există trei comenzi principale: d (decodare), b (compilare) și if (instalare cadru). Dacă totul este clar cu primele două comenzi, atunci ce face al treilea operator condiționat? Descompactează cadrul de interfață specificat, care este necesar atunci când disecați orice pachet de sistem.

Să luăm în considerare cele mai interesante opțiuni ale primei comenzi:

  • -s- nu dezasamblați fișiere dex;
  • -r- nu despachetați resursele;
  • -b- nu introduceți informații de depanare în rezultatele dezasamblării fișierului dex;
  • —Cadru-cale- utilizați cadrul UI specificat în locul celui încorporat în apktool. Acum să analizăm câteva opțiuni pentru comanda b:
  • -f- asamblare forțată fără verificarea modificărilor;
  • -A- specificăm calea către aapt (un instrument pentru construirea unei arhive APK), dacă din anumite motive doriți să o utilizați dintr-o altă sursă.

Utilizarea apktool este foarte simplă, pentru aceasta trebuie doar să specificați una dintre comenzi și calea către APK, de exemplu:

$ apktool d mail.apk

După aceea, toate fișierele de pachete extrase și dezasamblate vor apărea în directorul de e-mail.

Disecţie. Dezactivați anunțurile

Teoria este, desigur, bună, dar de ce este nevoie dacă nu știm ce să facem cu pachetul neambalat? Să încercăm să aplicăm teoria în avantajul nostru și anume să modificăm unele programe, astfel încât să nu ne afișeze reclame. De exemplu, să fie Virtual Torch - o torță virtuală. Pentru noi, acest software este perfect, deoarece este plin de ochi cu reclame enervante și, în plus, este suficient de simplu pentru a nu se pierde în jungla codului.


Deci, folosind una dintre metodele de mai sus, descărcați aplicația de pe piață. Dacă decideți să utilizați Virtuous Ten Studio, trebuie doar să deschideți fișierul APK din aplicație și să îl despachetați, pentru care creați un proiect (Fișier -> Proiect nou), apoi în meniul contextual selectați Import File. Dacă alegerea dvs. a căzut pe apktool, atunci este suficient să executați o comandă:

$ apktool d com.kauf.particle.virtualtorch.apk

După aceea, un arbore de fișiere similar cu cel descris în secțiunea anterioară va apărea în directorul com.kauf.particle.virtualtorch, dar cu un director smali suplimentar în loc de fișiere dex și un fișier apktool.yml. Primul conține codul dezasamblat al fișierului dex executabil al aplicației, al doilea conține informațiile de serviciu necesare apktool pentru a reconstrui pachetul.

Primul loc pe care ar trebui să îl căutăm este, desigur, AndroidManifest.xml. Și aici întâlnim imediat următoarea linie:

După cum ați putea ghici, ea este responsabilă pentru acordarea permisiunii aplicației de a utiliza conexiunea la Internet. De fapt, dacă vrem doar să scăpăm de reclame, cel mai probabil va trebui să dezactivăm Internetul pentru aplicație. Să încercăm să facem acest lucru. Ștergem linia specificată și încercăm să construim software-ul folosind apktool:

$ apktool b com.kauf.particle.virtualtorch

Fișierul APK rezultat va apărea în directorul com.kauf.particle.virtualtorch / build /. Cu toate acestea, nu va fi posibil să îl instalați, deoarece nu are o semnătură digitală și sumele de control(pur și simplu nu are directorul META-INF /). Trebuie să semnăm pachetul folosind utilitarul apk-signer. Lansat. Interfața constă din două file - pe prima (Generator de chei) creăm chei, pe a doua (APK Signer) semnăm. Pentru a crea cheia noastră privată, completați următoarele câmpuri:

  • Fișier țintă- fișierul de ieșire al magaziei de chei; conține de obicei o pereche de chei;
  • Parolași A confirma- parola pentru stocare;
  • Alias- numele cheii din depozit;
  • Parolă aliasși A confirma- parola cheii secrete;
  • Valabilitate- perioada de valabilitate (în ani). Valoarea implicită este optimă.

Restul câmpurilor sunt, în general, opționale - dar trebuie completat cel puțin unul.


AVERTIZARE

Pentru a semna o aplicație folosind apk-signer, trebuie să instalați Android SDK și să specificați calea completă către aceasta în setările aplicației.

Toate informațiile sunt furnizate numai în scop informativ. Nici comisia de redacție, nici autorul nu sunt responsabili pentru orice posibil prejudiciu cauzat de materialele din acest articol.

Acum puteți semna APK-ul cu această cheie. În fila APK Signer, selectați fișierul nou generat, introduceți parola, aliasul cheii și parola, apoi găsiți fișierul APK și apăsați cu îndrăzneală butonul „Semnați”. Dacă totul merge bine, pachetul va fi semnat.

INFO

Deoarece am semnat pachetul cu propria noastră cheie, acesta va intra în conflict cu aplicația originală, ceea ce înseamnă că atunci când încercăm să actualizăm software-ul prin piață, vom primi o eroare.

O semnătură digitală este necesară numai pentru software terță parte, deci dacă modificați aplicațiile de sistem care sunt instalate copiindu-le în directorul / system / app /, atunci nu este necesar să le semnați.

După aceea, lăsăm pachetul pe un smartphone, îl instalăm și îl lansăm. Voila, reclamele au dispărut! În schimb, însă, a apărut un mesaj potrivit căruia nu avem Internet sau nu avem permisiunile corespunzătoare. În teorie, acest lucru ar putea fi suficient, dar mesajul pare enervant și, pentru a fi sincer, am avut doar noroc cu o aplicație stupidă. Un software scris în mod normal își va clarifica autoritatea sau va verifica conexiunea la Internet și, în caz contrar, va refuza pur și simplu pornirea. Cum să fii în acest caz? Desigur, editați codul.

De obicei, autorii aplicațiilor creează clase speciale pentru afișarea reclamelor și metodelor de apelare a acestor clase în timpul lansării aplicației sau a uneia dintre „activitățile” acesteia (pentru a le spune simplu, ecranele aplicației). Să încercăm să găsim aceste clase. Mergem în directorul smali, apoi com (org conține doar biblioteca grafică deschisă cocos2d), apoi kauf (exact acolo, deoarece acesta este numele dezvoltatorului și tot codul său este acolo) - și iată-l, directorul de marketing . În interior găsim o grămadă de fișiere cu extensia smali. Acestea sunt clase, iar cea mai notabilă dintre ele este clasa Ad.smali, sub numele căreia este ușor de ghicit ce anume afișează reclame.

Am putea schimba logica funcționării sale, dar ar fi mult mai ușor să eliminăm apelurile către oricare dintre metodele sale din aplicație. Prin urmare, părăsim directorul de marketing și mergem la directorul de particule adiacent, apoi la virtualtorch. Fișierul MainActivity.smali merită o atenție specială aici. Aceasta este o clasă Android standard, creată de Android SDK și setată ca punct de intrare pentru aplicație (analog funcției principale din C). Deschideți fișierul pentru editare.

În interior este codul smali (asamblor local). Este destul de confuz și dificil de citit datorită naturii sale de nivel scăzut, așa că nu îl vom studia, ci pur și simplu vom găsi toate referințele la clasa de anunțuri în cod și le vom comenta. Conducem în linia „Anunț” în căutare și ne găsim pe linia 25:

Anunț privat de teren: Lcom / kauf / marketing / Ad;

Aici este creat un câmp publicitar pentru a deține un obiect din clasa Ad. Comentează plasând semnul ### în fața liniei. Continuăm să căutăm. Linia 423:

Instanță nouă v3, Lcom / kauf / marketing / Ad;

Aici este creat obiectul. Comentăm. Continuăm căutarea și găsim în rândurile 433, 435, 466, 468, 738, 740, 800 și 802 apeluri către metodele clasei Ad. Comentăm. Se pare că atât. Salvăm. Acum trebuie să puneți pachetul la loc și să verificați performanța acestuia și prezența publicității. Pentru puritatea experimentului, returnăm șirul șters din AndroidManifest.xml, colectăm pachetul, semnăm și instalăm.

Cobaiul nostru. Publicitate vizibilă

Hopa! Publicitatea a dispărut numai în timp ce aplicația rulează, dar a rămas în meniul principal, pe care îl vedem când lansăm software-ul. Deci, așteptați, dar punctul de intrare este clasa MainActivity, iar anunțurile au dispărut în timp ce aplicația rulează, dar au rămas în meniul principal, deci punctul de intrare este diferit? Pentru a identifica adevăratul punct de intrare, redeschideți fișierul AndroidManifest.xml. Și da, are următoarele rânduri:

Ei ne spun (și mai important, Android) că o activitate numită Start ar trebui lansată ca răspuns la generarea unei intenții (eveniment) android.intent.action.MAIN din categoria android.intent.category.LAUNCHER. Acest eveniment este generat la atingerea pictogramei aplicației din lansator, deci definește punctul de intrare, și anume clasa Start. Cel mai probabil, programatorul a scris mai întâi o aplicație fără meniu principal, punctul de intrare la care era clasa standard MainActivity, apoi a adăugat o nouă fereastră (activitate) care conține meniul și a fost descrisă în clasa Start și a făcut-o manual intrarea punct.

Deschideți fișierul Start.smali și căutați din nou linia „Ad”, găsiți în rândurile 153 și 155 mențiunea clasei FirstAd. De asemenea, se află în codul sursă și, judecând după nume, este tocmai responsabil pentru afișarea anunțurilor pe ecranul principal. Privim mai departe, există o creație a unei instanțe a clasei FirstAd și o intenție, în funcție de contextul legat de această instanță, apoi eticheta cond_10, tranziția condițională la care se efectuează exact înainte de a crea o instanță a clasei :

If-ne p1, v0 ,: cond_10 .line 74 instanță nouă v0, Landroid / content / Intent; ...: cond_10

Cel mai probabil, programul calculează cumva aleatoriu dacă se afișează reclame pe ecranul principal și, dacă nu, trece direct la cond_10. Ok, hai să simplificăm sarcina ei și să înlocuim saltul condițional cu unul necondiționat:

# if-ne p1, v0 ,: cond_10 merge: cond_10

Nu mai există referințe la FirstAd în cod, așa că închideți fișierul și reasamblați lanterna noastră virtuală folosind apktool. Copiați-l pe smartphone, instalați-l, lansați-l. Voila, toate reclamele au dispărut și felicitări tuturor.

Rezultate

Acest articol este doar o scurtă introducere a metodelor de cracare și modificare a aplicațiilor Android. Multe probleme au rămas în culise, cum ar fi eliminarea protecției, analizarea codului ofuscat, traducerea și înlocuirea resurselor aplicației, precum și modificarea aplicațiilor scrise cu folosind Android NDK. Cu toate acestea, având cunoștințe de bază, este doar o chestiune de timp să înțelegem toate acestea.

Apk editor pro, pe care îl puteți descărca pentru Android de pe site-ul nostru, vă va permite să hack / modificați conținutul fișierelor oricărei aplicații pentru dispozitive mobileși personalizați-l după bunul plac.

Particularități

Programul este un utilitar profesional care în mâinile utilizatorilor avansați poate deveni un instrument puternic pentru editarea aplicațiilor pentru Android. Funcționalitatea practic nu diferă de cea similară software pentru calculatoare personale.

Ce poate face acest utilitar?

  1. Schimbați (traduceți) numele altor aplicații.
  2. Schimbați aspectele arhitecturii, culorile, șabloanele setări grafice(de exemplu, dimensiunea icoanelor).
  3. Schimbați designul sunetului, fișierele media.
  4. Elimina anunțurile.
  5. Evitați blocarea conținutului plătit.
  6. Transferați aplicația din memoria internă a dispozitivului pe cardul SD.
  7. Schimbați rezoluția și multe altele.

Pentru a înțelege cum să utilizați utilitarul, trebuie să descărcați apk editor pro și să accesați meniul. Apoi alegeți oricare dintre ele deja aplicația instalată pe Android sau fișierul său apk. După aceea, în mod implicit, se vor deschide date pe care utilizatorul le poate modifica:

  • editarea resurselor;
  • înlocuirea fișierelor;
  • editare generală;
  • editarea datelor.

Programul vă va solicita să instalați versiunea modificată. Acest lucru nu funcționează în toate cazurile, deci versiune veche trebuie dezinstalat manual și instalat unul nou. După dezinstalare, selectați folderul editor apk (pentru comoditate, puteți utiliza ES Explorer) printre programele de pe Android și găsiți fișierul aplicației modificat, instalați-l pe dispozitiv.

Programul este diferit interfață ușor de utilizat... Navigarea este destul de simplă, dar utilizatorul trebuie să aibă cunoștințe de bază în limba engleză pentru a-și da seama.

Avantaje și dezavantaje

  1. Programul deschide o gamă largă de opțiuni pentru personalizarea aplicațiilor pentru utilizator.
  2. Există o secțiune Ajutor în meniu, care descrie simplu și în detaliu o mare parte din capabilitățile editorului. Prin urmare, utilizatorii care sunt departe de programare nu vor trebui să caute exemple și instrucțiuni de editare a resurselor terților.
  3. Puteți descărca gratuit programul de pe site-ul nostru.

Utilizarea acestui utilitar necesită o anumită abilitate și cunoștințe. În mâinile unui utilizator neexperimentat, editarea poate duce la încălcări ale integrității Sistemul de fișiere care va duce în cele din urmă la blocarea aplicației. În meniul din elementul Ajutor există exemple de conversii cu imagini și sfaturi pentru utilizarea corectă a apk editor pro pentru Android. Prin urmare, dacă există dorința de a face față acestui program, trebuie doar să urmați instrucțiunile.

Editorul este suficient unealtă folositoare pentru cei care se confruntă cu o interfață de aplicație incomodă (lipsa limbii ruse, publicitate constantă, bannere etc.). Dacă ați folosit deja acest program, împărtășiți impresiile de mai jos în comentarii.