Un program pentru crearea fișierelor apk. Elementele de bază ale editării aplicațiilor de sistem Android (apk)

Editare aplicații de sistem Android se realizează cel mai adesea atunci când utilizatorul unui smartphone, tabletă sau alt dispozitiv controlat de acest sistem de operare nu mai este mulțumit de actualul aspect programe instalate pe dispozitiv de către producător sau vânzător. Un alt motiv poate fi necesitatea de a face nu numai modificări în ceea ce privește design grafic Aplicații Android, dar care afectează și aranjarea diferitelor elemente și performanța funcțiilor de bază.

Pentru a face modificări codului, sunt necesare abilități de programare de bază î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 va fi de folos.

În primul rând, trebuie să decideți dacă trebuie doar să înlocuiți grafica în aplicațiile Android sau dacă trebuie să schimbați aranjarea elementelor din sistem și să faceți modificări mai profunde în cod. De asta depind alți pași, care implică fie lucrul cu aplicația ca arhivă, fie dezasamblarea și editarea completă a acesteia.

Schimbarea graficii în aplicațiile de sistem Android

Pentru a pur și simplu înlocui sau modifica grafica originală (schimbarea culorilor butoanelor, redesenarea imaginilor etc.), este suficient să existe un standard Arhivator WinRAR. În acest caz, utilizatorul trebuie să aibă drepturi de „rădăcină” pe dispozitiv (analogic cont administrator pe Windows), și este, de asemenea, recomandabil să aveți o recuperare alternativă (CWM) și un explorator root (pentru a accesa sistemul de fișiere Android direct în dispozitivul propriu-zis).

În primul rând, trebuie să activați „Depanarea USB” în dispozitiv, apoi să îl conectați la computer folosind un cablu USB și să instalați driverele necesare. De obicei sunt pornite 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 un disc conectat cu foldere. Toate aplicațiile de sistem sunt localizate la /system/app, precum și la /system/framework. După ce ați găsit aplicația de care aveți nevoie, pur și simplu copiați-o pe computer. Dacă pluginul nu este instalat, puteți utiliza root explorer pentru a copia aplicația din extensia apk pe un card SD amovibil, apoi de pe acesta pe computer.

După copiere aplicatia dorita 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 folosind WinRAR, puteți vedea un rând de dosare. Ne va interesa doar folderul res, in interiorul caruia vom gasi, la randul sau, multe foldere diferite. Dintre acestea, sunt necesare doar cele care au cuvântul „desenabil” în numele lor.

Acum să ne amintim tipul dispozitivului nostru și rezoluția ecranului acestuia. Dacă acesta este un smartphone și rezoluția este 240x320, atunci ne vor interesa în principal folderele drawable și drawable-ldpi. Dacă rezoluția este 320x480 - folderele drawable și drawable-mdpi, respectiv, iar pentru rezoluția 480x800 - folderele drawable și drawable-hdpi. În plus față de acestea, există de obicei și foldere ale căror nume conțin cuvântul „terren” - acestea sunt grafice pentru modul portret, adică. când dispozitivul este înclinat.

Dacă avem o tabletă în mână, atunci ne vor interesa doar folderele drawable și drawable-mdpi la orice rezoluție de ecran.

Copiind folderele selectate pe computer, puteți înlocui sau recolora imaginile originale cu cele de care aveți nevoie și care sunt plăcute ochiului. Ar trebui să acordați o atenție deosebită imaginilor cu o rezoluție de 9.png. Faptul este că de-a lungul perimetrului unei astfel de imagini există un cadru special de un pixel lățime cu semne speciale, încălcarea integrității cărora va duce la o funcționare defectuoasă a aplicației. Prin urmare, trebuie luată o precauție extremă atunci când editați astfel de fișiere.

După editarea folderului, trebuie să-l încărcați înapoi în arhivă, care este aplicația în sine cu extensia apk. În acest caz, este necesar să selectați opțiunea „fără compresie” în WinRAR.

Aplicația corectată este descărcată înapoi pe dispozitiv fie utilizând root explorer (mai întâi fișierul este copiat pe cardul SD și de pe acesta pe dispozitiv), fie după ieșirea în recuperare - direct de pe computer în /system/app sau / folder sistem/cadru . Apoi, trebuie să setați permisiunile pentru fișiere folosind opțiunile corespunzătoare din exploratorul rădăcină sau pluginul ADB. Acestea trebuie să fie în format 644 După repornirea dispozitivului, puteți vedea rezultatul lucrării aplicație actualizată.

Editarea codului sursă al aplicațiilor de sistem

Puțin mai mult efort trebuie cheltuite pentru a edita codul sursă al aplicațiilor de sistem. Pentru a dezasambla și reasambla aplicația după ce ați făcut modificări, va trebui să parcurgeți următorii câțiva pași.

1) Instalați pachetul software necesar pe computerul dvs ultimele versiuni: Java SE Runtime Environment și Android SDK Windows (programe pentru lucrul cu aplicațiile și componentele acestora), APKtool sau APKManager sau Firmware_tool (unul dintre cele trei programe pentru dezasamblarea și decompilarea aplicațiilor de sistem), editorul NotePad++ (pentru a face modificări la cod sursă aplicații de sistem Android).

2) Activați „Depanarea USB” în dispozitiv, conectați-l la computer folosind un cablu USB, instalați driverele necesare pentru a lucra cu dispozitivul.

3) Folosind unul dintre programele menționate mai sus pentru a lucra cu codul aplicației, trebuie să extrageți folderul /system/framework (în întregime) și aplicațiile de sistem din folderul /system/app de pe telefon în folderul de programe corespunzător. De exemplu, pentru programul Firmware_tool, fișierele de pe telefon trebuie copiate în folderul C:Firmwaretoolfw_project1_source2_system.img_unpacked în subfolderele corespunzătoare (aplicații - în folderul 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 „cadru de sprijin”, adică un set de reguli în conformitate cu care vor fi efectuate decompilarea (adică codul de dezasamblare) și compilarea (adică codul de asamblare) a aplicațiilor.

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

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

Editarea codului aplicației Android se face de obicei folosind Editor NotePad++ este unul dintre cele mai convenabile editori de text care are opțiunea de a evidenția sintaxa limbajului de programare selectat. De regulă, atunci când editați, puteți, de asemenea, să modificați grafica pe parcurs utilizând cele selectate editor grafic.

La finalizarea editării, aplicația modificată este descărcată înapoi pe dispozitiv, iar dispozitivul în sine trebuie repornit. Editorii mai avansati folosesc diverși emulatori, de exemplu, Eclipse de la Google, pentru a depana aplicațiile înainte de a le descărca pe dispozitiv.

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ă se rezumă la el copiere simplă la gadgetul dvs. Ce este un fișier apk și cum poți vedea ce este înăuntru?

Ce este un fișier APK?

Abrevierea APK este dezvăluită ca Pachetul Android Kit este un pachet executabil de fișiere pentru aplicații Android. Aceasta 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 precum Google Play, de unde le puteți descărca și instala pe gadgetul dvs. 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 care se află pe dispozitivul dvs.

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

  • Un fișier executabil cu o extensie dex (numele poate fi oricare), care este tocmai codul programului.
  • Alături de acesta este resources.arsc, acesta este un registru de resurse pe care programul ar trebui să le folosească. Aceasta este o structură în format XML.
  • AndroidManifest.xml este un fișier obligatoriu pentru orice program, un manifest care conține informații de bază despre acesta. Aici, de exemplu, pot fi înregistrate versiunea programului, versiunea Android necesară, 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.
  • Directorul lib – biblioteci native pentru rularea programului, de exemplu, codul C++. Este posibil ca acest director să nu fie prezent dacă bibliotecile nu sunt utilizate.
  • Directorul de active – resurse suplimentare pentru aplicație, poate, uneori, să lipsească. Ce resurse trebuie utilizate este descrisă în fișierul resources.arsc.
  • Director META-INF – metadatele programului. De exemplu, fișierul MANIFEST.MF, care poate conține căi către date și sumele lor de verificare. Fișierele certificatelor RSA, informațiile Manifest-Version și informații similare despre servicii pot fi stocate aici.

Revizuire a editorilor de fișiere ARK populari

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

Nu vor fi deloc probleme cu imaginile, acestea pot fi deschise în orice program adecvat. format XML se deschide cu oricare editor de text de exemplu Notepad++. Dacă știți cum funcționează acest format, atunci le puteți edita deja. Dar pentru fișierele executabile compilate va trebui să utilizați instrumente speciale.

Editor Eclipse. Acesta este un mediu multiplatform complet pentru un programator. Vă puteți dezvolta în orice limbă modernă și vă puteți pregăti fișiere executabile, inclusiv pentru Android. Mediul poate fi personalizat flexibil folosind numeroase plugin-uri.

Android SDK. După cum sugerează și numele, acesta este un instrument de dezvoltare specializat programe mobile special pentru Android. Cu ajutorul acestuia, puteți decompila cu ușurință fișierele executabile ale aplicației altcuiva sau puteți să le scrieți pe ale dvs. 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 și așa mai departe.

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, nici măcar nu trebuie să fiți înregistrat pe Google Play.

Editor APK. Un editor care vă permite să lucrați cu resurse în interiorul pachetelor apk. Nu la fel de puternic ca Eclipse, dar rezolvă o mulțime de probleme simple. De exemplu, puteți elimina blocurile de publicitate din program, puteți rusifica interfața, puteți înlocui pictogramele sau texturile cu propriile dvs. și multe altele.

Din acest articol veți afla în ce constă aplicația Android, cum să deschideți un fișier APK și cu ce programe.

Ce este un fișier APK?

APK - format de operare sisteme Android, folosit pentru fișierele de aplicație executabile arhivate, iar numele fișierului în sine poate fi orice, dar extensia ar trebui să arate doar așa.apk. Analogii APK în alte sisteme de operare sunt .msi în Windows, .sis în Symbian, .rpm sau .deb în Linux.

Să vedem ce e înăuntru
În esență, .apk este Arhiva ZIP, așa că uită-te la structura internă puteți utiliza orice manager de fișiere sau arhivator, de exemplu WinRAR sau aplicație mobilă X-plore.





Merită să ne amintim că aveți doar acces vizual la resursele interne, capabilitățile de editare sunt extrem de limitate.
Să ne uităm la structură
În interiorul .apk vedem o serie de fișiere și foldere, să aflăm pentru ce sunt acestea:
  • AndroidManifest.xml este un fel de „pașaport” al aplicației din care poți afla toate punctele principale, cerințele, versiunea, permisiunile etc.
  • META-INF acest fișier conține metadate, adică date despre date, sume de control, căi către date, căi și sume de control ale resurselor, certificate. Puteți deschide acest fișier cu orice editor de text, dar este recomandat să utilizați Notepad++.
  • Dosarul res conține toate resursele programului, grafice, cum ar fi pictograme, imagini, text și elemente de interfață grafică. De asemenea, puteți accesa cu ușurință folderul.
  • clase.dex – imediată codul programului aplicație executată de mașina virtuală Dalvik VM, puteți vedea ce se află în acest fișier doar prin decompilarea .apk, despre asta vom vorbi în alte articole. resurse.arsc -compilat fișier XML, acest fișier conține date despre toate resursele implicate în program.
  • lib - un folder cu biblioteci native, ale căror resurse pot fi accesate numai în timpul utilizării programe specializate. De asemenea, în APK pot exista fișiere și foldere precum com, org, udk, dar nu întotdeauna.

Acum să ne uităm la structura internă mai detaliat pentru aceasta avem nevoie de un program de decompilare, Java și un fișier APK. Instrumentul principal pentru dezasamblarea .apk este Apktool, dar acest program Funcționează doar de la o linie, ceea ce nu este foarte convenabil. Pentru o analiză mai rapidă și mai convenabilă, puteți utiliza APKing, acesta este în continuare același Apktool, dar cu capacitatea de a funcționa din meniul contextual.
Și așa instalăm APKing ca orice aplicație pentru Windows și, după ce am selectat .apk, facem clic pe el cu butonul din dreapta al mouse-ului și Shift în același timp, după care vom vedea următoarele:


Și selectați acțiunea necesară, de exemplu, decompilați complet, apoi programul va finaliza operația și va crea un folder cu același nume.


Prin deschiderea folderului vom avea acces la toate resursele fișierului APK.


Acum asta e fișiere text poate fi editat, respectând regulile de bază, puteți folosi popularul Programul Notepad++, de exemplu, luați în considerare AndroidManifest.xml

Apk editor pro, pe care îl puteți descărca pe Android de pe site-ul nostru web, vă va permite să piratați/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 poate deveni în mâinile utilizatorilor avansați instrument puternic pentru editarea aplicațiilor pentru Android. Funcționalitatea nu este practic diferită de cea similară software pentru calculatoare personale.

Ce poate face acest utilitar?

  1. Schimbați (traduceți) numele altor aplicații.
  2. Schimbați aspectul arhitecturii, culorile, modelele setări grafice(de exemplu, dimensiunea pictogramei).
  3. Schimbați designul sunetului, fișierele media.
  4. Eliminați reclamele.
  5. Ocoliți blocarea conținutului plătit.
  6. Transferați aplicația de la memorie internă dispozitive 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ă mergeți la meniu. Apoi alegeți oricare aplicație instalată pe Android sau fișierul său apk. După aceasta, se vor deschide datele implicite, pe care utilizatorul le poate modifica:

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

Programul va oferi instalarea versiunii modificate. Acest lucru nu funcționează în toate cazurile, așa că versiunea veche trebuie îndepărtat manual și instalat unul nou. După ștergere, ar trebui să selectați folderul editor apk (pentru comoditate, puteți utiliza ES Explorer) dintre programele de pe Android și să găsiți fișierul aplicației modificate și să îl instalați pe dispozitiv.

Programul are o interfață ușor de utilizat. Navigarea este destul de simplă, dar utilizatorul trebuie să aibă cunoștințe de bază de engleză pentru a o înțelege.

Avantaje și dezavantaje

  1. Programul deschide utilizatorului o gamă largă de opțiuni pentru personalizarea aplicațiilor.
  2. Meniul conține o secțiune Ajutor, care descrie simplu și detaliat un număr mare de capabilități ale programului editor. Prin urmare, utilizatorii care sunt departe de a programa nu vor trebui să caute mai departe resurse ale terților exemple și instrucțiuni de editare.
  3. Puteți descărca gratuit programul de pe site-ul nostru.

Utilizarea acestui utilitar necesită anumite abilități și cunoștințe. În mâinile tale utilizator neexperimentat editarea poate duce la încălcări de integritate sistem de fișiere, ceea ce va duce în cele din urmă la eșecuri ale aplicației. În meniul din secțiunea Ajutor există exemple de conversie cu imagini și sfaturi despre cum să utilizați corect apk editor pro pe Android. Prin urmare, dacă doriți să înțelegeți acest program, urmați instrucțiunile.

Editor - destul instrument util 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-vă impresiile mai jos în comentarii.

Uneori, unele aplicații de pe Android nu se potrivesc într-un fel utilizatorului. Un exemplu este publicitate enervantă. Și se întâmplă, de asemenea, că programul este bun pentru toată lumea, dar traducerea din el este fie strâmbă, fie complet absentă. Sau, de exemplu, programul este o încercare, dar obțineți versiunea completă nu exista nicio posibilitate. Cum să schimbi situația?

Introducere

În acest articol, vom vorbi despre cum să dezasamblam un pachet APK cu o aplicație, să ne uităm la structura sa internă, să dezasamblam și să decompilăm bytecode și, de asemenea, vom încerca să facem mai multe modificări aplicațiilor care ne pot aduce un beneficiu sau altul.

Pentru a face toate acestea singur, veți avea nevoie de cel puțin cunoștințe de bază limbajul Java, în care sunt scrise aplicații pentru Android și limbajul XML, care este folosit peste tot în Android - de la descrierea aplicației în sine și drepturile ei de acces până la stocarea șirurilor de caractere care vor fi afișate pe ecran. De asemenea, veți avea nevoie de capacitatea de a utiliza software specializat pentru consolă.

Deci, ce este un pachet APK în care este distribuit absolut tot software-ul Android?

Decompilarea aplicației

În acest articol, am lucrat doar cu codul de aplicație dezasamblat, dar dacă se fac modificări mai serioase aplicațiilor mari, înțelegerea codului smali va fi mult mai dificilă. Din fericire, putem decompila codul dex în cod 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, vom avea nevoie de două instrumente:

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

Așa ar trebui să fie folosite. Mai întâi, lansăm dex2jar, specificând calea către pachetul apk ca argument:

% dex2jar.sh mail.apk

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

Aranjarea pachetelor APK și primirea acestora

Pungă de plastic aplicații Android, de fapt, este un fișier ZIP obișnuit, nu sunt necesare instrumente speciale pentru a vizualiza conținutul și a-l extrage. Este suficient să aveți un arhivator - 7zip pentru Windows sau dezarhivare pe consolă pe Linux. Dar asta e vorba de ambalaj. Ce este înăuntru? Înăuntru avem caz general aceasta structura:

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

Fișierele și directoarele enumerate sunt, dacă nu în toate, atunci, poate, în marea majoritate a APK-urilor. Cu toate acestea, mai există câteva fișiere/directoare care nu sunt atât de comune care merită menționate:

  • active- analog de resurse. Principala diferență este că pentru a accesa o resursă trebuie să cunoști identificatorul acesteia, dar lista de active poate fi obținută dinamic folosind metoda AssetManager.list() din codul aplicației;
  • lib- biblioteci native Linux scrise folosind NDK (Native Development Kit).

Acest director este folosit de producătorii de jocuri, plasând acolo motorul de joc scris în C/C++, precum și de creatorii de aplicații de înaltă performanță (de exemplu, Google Chrome). Ne-am dat seama de dispozitiv. Dar cum obții fișierul pachet al aplicației care te interesează? Deoarece nu este posibil să ridicați fișiere APK de pe dispozitiv fără root (acestea sunt situate în directorul /data/app), iar rootarea nu este întotdeauna recomandabilă, există cel puțin trei moduri de a aduce fișierul aplicației pe computer:

  • Extensie APK Downloader pentru Chrome;
  • Aplicația Leecher APK reală;
  • diverse găzduire de fișiere și Varezniks.

Care să folosești este o chestiune de gust; preferăm să folosim aplicatii individuale, prin urmare, vom descrie utilizarea Real APK Leecher, mai ales că este scris în Java și, în consecință, va funcționa fie în Windows, fie în Nix.

După pornirea programului, trebuie să completați trei câmpuri: E-mail, Parolă și ID dispozitiv - și 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 poate fi obținut prin tastarea codului pe dialer # #8255## și apoi găsiți linia ID dispozitiv. Când completați, trebuie doar să introduceți ID-ul fără prefixul android.

După completare și salvare, mesajul „ Eroare în timp ce 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 pachete 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, l-ați despachetat... iar când ați încercat să vizualizați un fișier XML, ați fost surprins să descoperiți că fișierul nu era text. Cum să-l decompilați și cum să lucrați cu pachetele în general? Este cu adevărat necesar să instalați SDK-ul? Nu, nu este deloc necesar să instalați SDK-ul. De fapt, pentru toți pașii de unboxing, modificare și ambalare Pachete APK Sunt necesare următoarele instrumente:

  • Arhivator ZIP pentru despachetare și ambalare;
  • smali- mașină virtuală Dalvik bytecode assembler/disassembler (code.google.com/p/smali);
  • apt- un instrument pentru ambalarea resurselor (în mod implicit, resursele sunt stocate în formă binară pentru a optimiza performanța aplicației). Inclus în Android SDK, dar poate fi obținut separat;
  • semnatar- unealta pentru semnătură digitală 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 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 resurse în forma lor originală (inclusiv fișiere XML binare și arsc), să reconstruiți un pachet cu resurse modificate, dar nu știe cum să semneze pachetele, așa că va trebui să rulați manual utilitarul de semnare. În ciuda faptului că utilitarul este scris în Java, instalarea sa este destul de nestandard. Mai întâi trebuie 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 pe Windows, atunci există un instrument excelent pentru acesta numit Virtuous Ten Studio, care acumulează, de asemenea, toate aceste instrumente (inclusiv apktool în sine), dar în loc de o interfață CLI oferă utilizatorului o imagine intuitivă. GUI, cu care puteți efectua operațiuni de despachetare, dezasamblare și decompilare în câteva clicuri. Acest instrument este Donation-ware, adică uneori apar ferestre care vă cer să obțineți o licență, dar în final acest lucru poate fi tolerat. Nu are rost să-l descrii, pentru că poți înțelege interfața în câteva minute. Dar apktool, datorită naturii sale de consolă, ar trebui discutat mai detaliat.


Să ne uităm la opțiunile apktool. Pe scurt, există trei comenzi de bază: d (decodificare), b (build) și if (install framework). Dacă totul este clar cu primele două comenzi, atunci ce face a treia? operator condițional? Dezambalează cadrul specificat de UI, care este necesar în cazurile în care disecați orice pachet de sistem.

Să ne uităm la cele mai interesante opțiuni ale primei comenzi:

  • -s- nu dezasamblați fișierele dex;
  • -r- nu despachetați resurse;
  • -b- nu introduceți informații de depanare în rezultatele dezasamblarii fișierului dex;
  • --cadru-cadru- utilizați cadrul specificat de UI în loc de cel încorporat în apktool. Acum să ne uităm la câteva opțiuni pentru comanda b:
  • -f- asamblare fortata fara verificarea modificarilor;
  • -o- indicați calea către aapt (un instrument pentru construirea unei arhive APK), dacă dintr-un motiv oarecare doriți să o utilizați dintr-o altă sursă.

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

$ apktool d mail.apk

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

Pregătirea. Dezactivarea publicității

Teoria este, desigur, bună, dar de ce este necesară dacă nu știm ce să facem cu pachetul despachetat? Să încercăm să aplicăm teoria în beneficiul nostru, și anume, să modificăm niște softuri astfel încât să nu ne arate reclamă. De exemplu, să fie Virtual Torch - o torță virtuală. Acest software este ideal pentru noi, deoarece este plin de 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, deschideți fișierul APK în aplicație și extrageți-l, pentru care creați un proiect (Fișier -> Proiect nou), apoi în meniul contextual proiect, selectați Import File. Dacă alegerea ta a căzut pe apktool, atunci rulează doar o comandă:

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

După aceasta, 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 executabil dex al aplicației, cel de-al doilea conține informațiile de service necesare pentru ca apktool să asambla pachetul înapoi.

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

Nu este greu de ghicit că este responsabil pentru acordarea permisiunilor aplicației de a utiliza conexiunea la Internet. De fapt, dacă vrem doar să scăpăm de publicitate, cel mai probabil va trebui doar să blocăm aplicația de pe Internet. Să încercăm să facem asta. Ș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 este semnat digital și sume de control fișiere (pur și simplu nu există un director META-INF/ în el). Trebuie să semnăm pachetul folosind utilitarul apk-signer. Lansat. Interfața este formată din două file - pe prima (Key Generator) creăm chei, pe a doua (APK Signer) semnăm. Pentru a crea cheia noastră privată, completați următoarele câmpuri:

  • Fișierul țintă- fișier de ieșire keystore; de obicei stochează o pereche de chei;
  • ParolăŞi Confirma- parola pentru stocare;
  • Alias- numele cheii din depozit;
  • Parola aliasŞi Confirma- parola cheie secretă;
  • Valabilitate- perioada de valabilitate (în ani). Valoarea implicită este optimă.

Câmpurile rămase sunt, în general, opționale - dar cel puțin unul trebuie completat.


AVERTIZARE

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

Toate informațiile sunt furnizate doar în scop informativ. Nici editorii, nici autorul nu sunt responsabili pentru eventualele daune cauzate de materialele acestui 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 faceți clic cu îndrăzneală pe butonul „Semnați”. Daca 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 vom încerca să actualizăm software-ul prin piață, vom primi o eroare.

Este necesară doar semnătura digitală software terță parte, deci dacă modificați aplicațiile de sistem care sunt instalate prin copierea lor în directorul /system/app/, atunci nu trebuie să le semnați.

După aceea, descărcați pachetul pe smartphone, instalați-l și lansați-l. Voila, reclama a dispărut! În schimb, a apărut însă un mesaj că nu avem internet sau nu avem permisiunile corespunzătoare. În teorie, acest lucru ar putea fi suficient, dar mesajul pare enervant și, să fiu sincer, tocmai am avut noroc cu o aplicație stupidă. Cel mai probabil, software-ul scris în mod normal își va clarifica acreditările sau va verifica o conexiune la Internet și, în caz contrar, va refuza pur și simplu lansarea. Ce să faci în acest caz? Desigur, editați codul.

De obicei, autorii aplicației creează clase speciale pentru afișarea reclamelor și a metodelor de apel ale acestor clase atunci când aplicația sau una dintre „activitățile” acesteia (în termeni simpli, ecranele aplicației) este lansată. Să încercăm să găsim aceste clase. Mergem la directorul smali, apoi com (în org există doar open biblioteca grafica cocos2d), apoi kauf (exact acolo, pentru că acesta este numele dezvoltatorului și tot codul său este acolo) - și aici este, 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, după denumirea căreia este ușor de ghicit că este cea care afișează reclamă.

Am putea schimba logica funcționării sale, dar ar fi mult mai ușor să eliminați pur și simplu apelurile la oricare dintre metodele sale din aplicația în sine. Prin urmare, părăsim directorul de marketing și mergem la directorul de particule adiacent și apoi la virtualtorch. O atenție deosebită Fișierul MainActivity.smali merită acest lucru. Aceasta este o clasă standard Android care este creată de Android SDK și setată ca punct de intrare în aplicație (similar cu funcții principaleîn C). Deschideți fișierul pentru editare.

Înăuntru există cod smali (asambler local). Este destul de confuz și dificil de citit din cauza 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 Ad în cod și le vom comenta. Introducem linia „Ad” în căutare și ajungem la rândul 25:

Câmp anunț privat:Lcom/kauf/marketing/Ad;

Aici este creat un câmp de anunț pentru a stoca un obiect de clasă de anunțuri. Comentăm punând un semn ### în fața liniei. Continuăm căutarea. Linia 423:

Noua instanță v3, Lcom/kauf/marketing/Ad;

Aici are loc crearea obiectului. Hai sa comentam. Continuăm căutarea și găsim în rândurile 433, 435, 466, 468, 738, 740, 800 și 802 apeluri la metodele clasei Ad. Hai sa comentam. Asta pare să fie. Salva. Acum pachetul trebuie pus la loc și verificat pentru funcționalitate și prezența reclamei. Pentru puritatea experimentului, returnăm linia eliminată din AndroidManifest.xml, asamblam pachetul, semnăm și instalăm.

Cobaiul nostru. Publicitate vizibilă

Hopa! Publicitatea a dispărut doar în timp ce aplicația rula, dar a rămas în meniul principal, pe care îl vedem când lansăm software-ul. Așadar, așteptați, dar punctul de intrare este clasa MainActivity, iar reclama a dispărut în timp ce aplicația rula, dar a 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, conține următoarele rânduri:

Ei ne spun (și, mai important, Android) că o activitate numită Start ar trebui să fie lansată ca răspuns la generarea unui intent (eveniment) android.intent.action.MAIN din categoria android.intent.category.LAUNCHER. Acest eveniment este generat atunci când atingeți pictograma aplicației din launcher, deci determină 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 în care era clasa standard MainActivity, apoi a adăugat o nouă fereastră (activitate) care conține meniul și 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ăsim în rândurile 153 și 155 o mențiune a clasei FirstAd. Se află și în codul sursă și, judecând după nume, este responsabil pentru afișarea reclamelor pe ecranul principal. Să privim mai departe, există crearea unei instanțe a clasei FirstAd și a unei intenții, care în context este legată de această instanță, și apoi eticheta cond_10, tranziția condiționată la care se realizează exact înainte de a crea o instanță a clasei. :

If-ne p1, v0, :cond_10 .line 74 new-instance v0, Landroid/content/Intent; ... :cond_10

Cel mai probabil programul este cumva la întâmplare calculează dacă publicitatea ar trebui să fie afișată pe ecranul principal și, dacă nu, trece direct la cond_10. Ok, să-i simplificăm sarcina și să înlocuim tranziția condiționată cu una necondiționată:

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

Nu mai există mențiuni despre FirstAd în cod, așa că închidem fișierul și reasamblam lanterna noastră virtuală folosind apktool. Copiați-l pe smartphone, instalați-l, lansați-l. Voila, toate reclamele au dispărut, pentru care ne felicităm pe toți.

Rezultate

Acest articol este doar o scurtă introducere în metodele de hacking și modificare a aplicațiilor Android. Multe probleme au rămas în spatele scenei, 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ă-ți dai seama de toate.