Editarea apk-ului pe computer. Deschidem, modificăm și ambalăm aplicații Android

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 editor apk pro și mergi 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 apk editor (pentru comoditate, puteți utiliza ES Explorer) printre programele de pe Android și găsiți fișierul aplicației modificate și 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ă 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 ale integrității sistemului de fișiere, care în cele din urmă vor duce la eșecuri ale aplicației. În meniul Ajutor, există exemple de conversie cu imagini și sfaturi pentru utilizarea corectă apk editor pro pentru 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.

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. Depinde de asta pașii următori, care implică fie lucrul cu aplicația ca arhivă, fie ea demontare completași editare.

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 sistem de fișiere Android direct în dispozitivul însuși).

Î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. Pe lângă ele, 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ă aveți o tabletă în mâini, 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

Este nevoie de puțin mai mult efort 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ă efectuați mai multe pașii următori.

1) Instalați pe computer pachetul necesar programe în lor 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 efectua 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. Folosesc editori mai avansati diverși emulatori, de exemplu, Eclipse de la Google.

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 Android și Limbajul XML, care este folosit peste tot în Android - de la descrierea aplicației în sine și a drepturilor sale de acces până la stocarea șirurilor 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 cod de aplicație dezasamblat, dar dacă aplicații mari făcând modificări mai serioase, î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 consola dezarhivare 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 certifică creatorul acesteia și sume de control fișiere pachet;
  • 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, există câteva alte fișiere/directoare mai puțin obișnuite 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 nimic de-a face 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, toți pașii pentru extragerea, modificarea și împachetarea pachetelor APK necesită 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 împachetarea resurselor (în mod implicit, resursele sunt stocate în formă binară pentru a optimiza performanța aplicației). Inclus în Compoziția Android SDK, dar poate fi obținut și 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ă și toate aceste instrumente (inclusiv apktool în sine), dar în loc de o interfață CLI oferă utilizatorului o interfață grafică intuitivă cu care puteți efectuați 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, sunt trei comenzi de bază: d (decodificare), b (construire) și dacă (cadru de instalare). Dacă totul este clar cu primele două comenzi, atunci ce face a treia? operator condițional? Acesta despachetează 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 la rezultatele demontării 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 software pentru ca acesta 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, com.kauf.particle.virtualtorch va apărea în director arborele de fișiere, similar cu cel descris în secțiunea anterioară, 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/. Totuși, nu va fi posibil să-l instalezi, deoarece nu are semnătură digitală și sume de verificare a fișierelor (pur și simplu nu are un director META-INF/). 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 niciuna posibil prejudiciu 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 cererea originală, ceea ce înseamnă că atunci când încercăm 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 a afișa reclame și a apela metodele acestor clase în timpul lansării aplicației sau a uneia dintre „activitățile” acesteia (în termeni simpli, ecrane de aplicație). Să încercăm să găsim aceste clase. Mergem la directorul smali, apoi com (org conține doar biblioteca grafică deschisă cocos2d), apoi kauf (aici este, 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ă Android standard care este creată de Android SDK și instalată ca punct de intrare în aplicație (analog cu funcția principală din 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, îl semnăm și îl 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 o intenție care, după context, este legată de această instanță, iar apoi eticheta cond_10, tranziția condiționată la care se realizează exact înainte de a crea o instanță. din clasa:

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, toată reclamele a dispărut, pentru care ne felicităm pe toți.

Rezultate

Acest articol este doar scurtă introducereîn metode de deschidere ș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.

Din acest articol veți afla în ce constă o aplicație pentru Android, cum se deschide fișier APKși folosind 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ă poți folosi orice manager de fișiere sau un arhivator cum ar fi 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. Oricine poate deschide acest fișier editor de text, dar se recomandă utilizarea Notepad++.
  • dosarul res conține toate resursele programului, grafice, cum ar fi pictograme, imagini, text, elemente GUI. De asemenea, puteți accesa cu ușurință folderul.
  • clase.dex – imediată codul programului aplicații care rulează mașină virtuală Dalvik VM, puteți vedea ce se află în acest fișier numai 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. APK-ul poate conține, de asemenea, fișiere și foldere, cum ar fi 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 selectăm .apk și facem clic pe el tasta dreapta mouse ș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 utiliza program popular Notepad++, de exemplu, luați în considerare AndroidManifest.xml