Ako otvoriť súbor APK a ako ho upraviť? Použitie apktool Program na rozobratie a zostavenie súboru apk

Niekedy niektoré aplikácie na Androide používateľovi nejakým spôsobom nevyhovujú. Príkladom je rušivá reklama. A tiež sa stáva, že program je dobrý pre každého, ale preklad v ňom je buď krivý alebo úplne chýba. Alebo napríklad program je skúšobná verzia, ale nie je možné získať plnú verziu. Ako zmeniť situáciu?

Úvod

V tomto článku si povieme, ako rozobrať APK balík s aplikáciou, pozrieme sa na jeho vnútornú štruktúru, rozoberieme a dekompilujeme bajtkód a tiež sa pokúsime urobiť niekoľko zmien v aplikáciách, ktoré nám môžu priniesť tú či onú výhodu.

Aby ste to všetko zvládli sami, budete potrebovať aspoň základné znalosti jazyka Java, v ktorom sú písané aplikácie pre Android, a jazyka XML, ktorý sa v Androide používa všade – od popisu samotnej aplikácie a jej prístupových práv až po ukladanie reťazcov, ktoré sa zobrazí na obrazovke. Budete tiež potrebovať schopnosť používať špecializovaný softvér konzoly.

Čo je teda balík APK, v ktorom je distribuovaný úplne všetok softvér pre Android?

Dekompilácia aplikácie

V tomto článku sme pracovali iba s rozobratým kódom aplikácie, no ak sa vo veľkých aplikáciách vykonajú vážnejšie zmeny, pochopenie malého kódu bude oveľa ťažšie. Našťastie môžeme dekompilovať kód dex do kódu Java, ktorý aj keď nie je originálny a nie je spätne skompilovaný, je oveľa jednoduchšie čítať a pochopiť logiku aplikácie. Na to budeme potrebovať dva nástroje:

  • dex2jar je prekladač Dalvik bytecode do JVM bytecode, na základe ktorého môžeme získať kód v jazyku Java;
  • jd-gui je samotný dekompilátor, ktorý vám umožňuje získať čitateľný kód Java z bytecode JVM. Ako alternatívu môžete použiť Jad (www.varaneckas.com/jad); Hoci je dosť starý, v niektorých prípadoch generuje čitateľnejší kód ako Jd-gui.

Takto by sa mali používať. Najprv spustíme dex2jar, pričom ako argument uvedieme cestu k balíku apk:

% dex2jar.sh mail.apk

Výsledkom je, že balík Java mail.jar sa zobrazí v aktuálnom adresári, ktorý už možno otvoriť v jd-gui a zobraziť kód Java.

Usporiadanie balíkov APK a ich príjem

Balík aplikácie pre Android je v podstate bežný súbor ZIP, ktorý nevyžaduje žiadne špeciálne nástroje na zobrazenie jeho obsahu alebo jeho extrahovanie. Stačí mať archivátor - 7zip pre Windows alebo rozbalenie konzoly na Linuxe. Ale to je o obale. Čo je vo vnútri? Vo všeobecnosti máme vo vnútri nasledujúcu štruktúru:

  • META-INF/- obsahuje digitálny certifikát aplikácie, identifikujúci jej tvorcu a kontrolné súčty súborov balíkov;
  • res/ - rôzne zdroje, ktoré aplikácia používa pri svojej práci, ako sú obrázky, deklaratívny popis rozhrania, ako aj ďalšie údaje;
  • AndroidManifest.xml- popis aplikácie. Patrí sem napríklad zoznam požadovaných povolení, požadovaná verzia Androidu a požadované rozlíšenie obrazovky;
  • triedy.dex- skompilovaný bajtový kód aplikácie pre virtuálny stroj Dalvik;
  • zdroje.arsc- tiež zdroje, ale iného druhu - najmä reťazce (áno, tento súbor možno použiť na rusifikáciu!).

Uvedené súbory a adresáre sú, ak nie vo všetkých, potom možno vo veľkej väčšine súborov APK. Za zmienku však stojí niekoľko ďalších nie tak bežných súborov/adresárov:

  • aktíva- analógia zdrojov. Hlavný rozdiel je v tom, že na prístup k zdroju potrebujete poznať jeho identifikátor, ale zoznam aktív je možné získať dynamicky pomocou metódy AssetManager.list() v kóde aplikácie;
  • lib- natívne linuxové knižnice napísané pomocou NDK (Native Development Kit).

Tento adresár využívajú výrobcovia hier, ktorí tam umiestňujú svoje herné enginy napísané v C/C++, ako aj tvorcovia výkonných aplikácií (napríklad Google Chrome). Prišli sme na zariadenie. Ako však získate súbor balíka aplikácie, o ktorú máte záujem? Keďže bez root nie je možné zo zariadenia vyberať súbory APK (sú umiestnené v adresári /data/app) a rootovanie nie je vždy vhodné, existujú minimálne tri spôsoby, ako dostať súbor aplikácie do počítača:

  • rozšírenie APK Downloader pre Chrome;
  • Aplikácia Real APK Leecher;
  • rôzne filehostingy a Varezniky.

Ktorý z nich použiť, je vecou vkusu; uprednostňujeme používanie samostatných aplikácií, preto popíšeme použitie Real APK Leecher, najmä preto, že je napísaný v jazyku Java, a teda bude fungovať vo Windows alebo Nix.

Po spustení programu je potrebné vyplniť tri polia: Email, Heslo a ID zariadenia – a vybrať jazyk. Prvé dva sú e-mail a heslo vášho účtu Google, ktorý používate v zariadení. Tretí je identifikátor zariadenia a možno ho získať zadaním kódu na číselníku # #8255## a potom nájdite riadok ID zariadenia. Pri vypĺňaní stačí zadať ID bez predpony android-.

Po vyplnení a uložení sa často objaví hlásenie „Chyba pri pripájaní k serveru“. Nemá to nič spoločné s Google Play, takže to pokojne ignorujte a hľadajte balíčky, ktoré vás zaujímajú.

Zobraziť a upraviť

Povedzme, že ste našli balík, ktorý vás zaujal, stiahli ste si ho, rozbalili... a keď ste sa pokúsili zobraziť nejaký súbor XML, s prekvapením ste zistili, že súbor nie je textový. Ako ho dekompilovať a ako celkovo pracovať s balíkmi? Je naozaj potrebné nainštalovať SDK? Nie, SDK nie je potrebné inštalovať vôbec. V skutočnosti všetky kroky na extrahovanie, úpravu a balenie balíčkov APK vyžadujú nasledujúce nástroje:

  • ZIP archivátor na vybaľovanie a balenie;
  • malý- Assembler/disassembler bytecode virtuálneho stroja Dalvik (code.google.com/p/smali);
  • aapt- nástroj na balenie zdrojov (v predvolenom nastavení sú zdroje uložené v binárnej forme na optimalizáciu výkonu aplikácie). Zahrnuté v súprave Android SDK, ale možno ho získať samostatne;
  • podpisovateľ- nástroj na digitálne podpisovanie upraveného balíka (bit.ly/Rmrv4M).

Všetky tieto nástroje môžete použiť samostatne, ale je to nepohodlné, preto je lepšie použiť softvér vyššej úrovne postavený na ich základe. Ak používate Linux alebo Mac OS X, existuje nástroj s názvom apktool. Umožňuje vám rozbaliť zdroje v ich pôvodnej podobe (vrátane binárnych súborov XML a arsc), prebudovať balík so zmenenými prostriedkami, ale nevie, ako balíky podpisovať, takže budete musieť spustiť utilitu signer manuálne. Napriek tomu, že je utilita napísaná v jazyku Java, jej inštalácia je dosť neštandardná. Najprv musíte získať samotný jar súbor:

$ 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

Ak pracujete na Windows, tak je tu na to výborný nástroj s názvom Virtuous Ten Studio, ktorý všetky tieto nástroje akumuluje aj (vrátane samotného apktool), no namiesto CLI rozhrania poskytuje používateľovi intuitívne grafické rozhranie, s ktorým môžete vykonať operácie na rozbalenie, rozloženie a dekompiláciu niekoľkými kliknutiami. Tento nástroj je Donation-ware, to znamená, že sa niekedy objavia okná so žiadosťou o získanie licencie, ale v konečnom dôsledku sa to dá tolerovať. Nemá zmysel to popisovať, pretože rozhranie pochopíte za pár minút. Ale apktool, vzhľadom na jeho konzolovú povahu, by sa mal podrobnejšie rozobrať.


Pozrime sa na možnosti apktool. Stručne povedané, existujú tri základné príkazy: d (decode), b (build) a if (install framework). Ak je všetko jasné s prvými dvoma príkazmi, čo potom robí tretí, podmienený príkaz? Rozbalí špecifikovaný rámec používateľského rozhrania, ktorý je potrebný v prípadoch, keď rozoberáte akýkoľvek systémový balík.

Pozrime sa na najzaujímavejšie možnosti prvého príkazu:

  • -s- nerozoberajte dex súbory;
  • -r- nerozbaľujte zdroje;
  • -b- nevkladajte informácie o ladení do výsledkov demontáže súboru dex;
  • --frame-path- použite špecifikovaný rámec používateľského rozhrania namiesto toho, ktorý je zabudovaný do apktool. Teraz sa pozrime na niekoľko možností pre príkaz b:
  • -f- nútená montáž bez kontroly zmien;
  • -a- uveďte cestu k aapt (nástroj na vytvorenie archívu APK), ak ho z nejakého dôvodu chcete použiť z iného zdroja.

Použitie apktool je veľmi jednoduché, stačí zadať jeden z príkazov a cestu k súboru APK, napríklad:

$ apktool d mail.apk

Potom sa všetky extrahované a rozložené súbory balíka objavia v poštovom adresári.

Príprava. Zakázanie reklamy

Teória je, samozrejme, dobrá, ale prečo je potrebná, ak nevieme, čo robiť s rozbaleným balíkom? Skúsme aplikovať teóriu v náš prospech, a to upraviť nejaký softvér tak, aby nám nezobrazoval reklamu. Nech je to napríklad Virtual Torch – virtuálna pochodeň. Tento softvér je pre nás ideálny, pretože je do posledného miesta zaplnený otravnou reklamou a navyše je dostatočne jednoduchý na to, aby ste sa nestratili v džungli kódu.


Takže pomocou jednej z vyššie uvedených metód si stiahnite aplikáciu z trhu. Ak sa rozhodnete použiť Virtuous Ten Studio, jednoducho otvorte súbor APK v aplikácii a rozbaľte ho, vytvorte projekt (Súbor -> Nový projekt) a potom v kontextovej ponuke projektu vyberte položku Importovať súbor. Ak vaša voľba padla na apktool, spustite jeden príkaz:

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

Potom sa v adresári com.kauf.particle.virtualtorch objaví strom súborov podobný tomu, ktorý je popísaný v predchádzajúcej časti, ale s dodatočným malým adresárom namiesto súborov dex a súborom apktool.yml. Prvý obsahuje rozložený kód spustiteľného dex súboru aplikácie, druhý obsahuje servisné informácie potrebné na to, aby apktool balík zostavil späť.

Prvé miesto, kam by sme sa mali pozrieť, je samozrejme AndroidManifest.xml. A tu okamžite narazíme na nasledujúci riadok:

Nie je ťažké uhádnuť, že je zodpovedný za udeľovanie povolení aplikácii používať internetové pripojenie. V skutočnosti, ak sa chceme len zbaviť reklamy, s najväčšou pravdepodobnosťou budeme musieť aplikáciu zablokovať z internetu. Skúsme to urobiť. Vymažeme zadaný riadok a pokúsime sa vytvoriť softvér pomocou apktool:

$ apktool b com.kauf.particle.virtualtorch

Výsledný súbor APK sa objaví v adresári com.kauf.particle.virtualtorch/build/. Nebude ho však možné nainštalovať, keďže nemá digitálny podpis a kontrolné súčty súborov (jednoducho nemá adresár META-INF/). Balík musíme podpísať pomocou pomôcky apk-signer. Spustený. Rozhranie tvoria dve záložky – na prvej (Key Generator) vytvárame kľúče, na druhej (APK Signer) podpisujeme. Ak chcete vytvoriť náš súkromný kľúč, vyplňte nasledujúce polia:

  • Cieľový súbor- výstupný súbor úložiska kľúčov; zvyčajne obsahuje jeden pár kľúčov;
  • heslo A Potvrďte- heslo k úložisku;
  • Alias- názov kľúča v úložisku;
  • Aliasové heslo A Potvrďte- heslo tajného kľúča;
  • Platnosť- doba platnosti (v rokoch). Predvolená hodnota je optimálna.

Zvyšné polia sú vo všeobecnosti nepovinné – ale musí byť vyplnené aspoň jedno.


POZOR

Ak chcete podpísať aplikáciu pomocou nástroja apk-signer, musíte nainštalovať súpravu Android SDK a zadať úplnú cestu k nej v nastaveniach aplikácie.

Všetky informácie sú poskytované len na informačné účely. Redakcia ani autor nezodpovedajú za prípadné škody spôsobené materiálmi tohto článku.

Teraz môžete podpísať súbor APK pomocou tohto kľúča. Na karte APK Signer vyberte novo vygenerovaný súbor, zadajte heslo, alias kľúča a heslo, potom nájdite súbor APK a odvážne kliknite na tlačidlo „Podpísať“. Ak všetko pôjde dobre, balík bude podpísaný.

INFO

Keďže sme balík podpísali vlastným kľúčom, bude v konflikte s pôvodnou aplikáciou, čo znamená, že keď sa pokúsime aktualizovať softvér prostredníctvom služby Market, zobrazí sa chyba.

Digitálny podpis sa vyžaduje len pre softvér tretích strán, takže ak upravujete systémové aplikácie, ktoré sú nainštalované ich skopírovaním do adresára /system/app/, nemusíte ich podpisovať.

Potom si stiahnite balík do svojho smartfónu, nainštalujte ho a spustite. Voila, reklama je preč! Namiesto toho sa však objavilo hlásenie, že nemáme internet alebo nemáme príslušné povolenia. Teoreticky by to mohlo stačiť, ale správa vyzerá nepríjemne a, aby som bol úprimný, mali sme šťastie s hlúpou aplikáciou. Normálne napísaný softvér s najväčšou pravdepodobnosťou objasní svoje poverenia alebo skontroluje internetové pripojenie a inak jednoducho odmietne spustiť. Ako byť v tomto prípade? Samozrejme, upravte kód.

Autori aplikácií zvyčajne vytvárajú špeciálne triedy na zobrazovanie reklám a volajú metódy týchto tried pri spustení aplikácie alebo niektorej z jej „aktivít“ (jednoducho povedané, obrazovky aplikácie). Pokúsme sa nájsť tieto triedy. Ideme do adresára smali, potom com (org obsahuje iba otvorenú grafickú knižnicu cocos2d), potom kauf (tu to je, pretože toto je meno vývojára a je tam celý jeho kód) - a tu to je, marketingový adresár. Vo vnútri nájdeme kopu súborov s príponou malá. Sú to triedy a najvýznamnejšou z nich je trieda Ad.smali, z názvu ktorej sa dá ľahko uhádnuť, že je to tá, ktorá zobrazuje reklamu.

Mohli by sme zmeniť logiku jeho fungovania, ale oveľa jednoduchšie by bolo jednoducho odstrániť volania ktorejkoľvek z jeho metód zo samotnej aplikácie. Preto opustíme marketingový adresár a prejdeme do susedného adresára častíc a potom do virtualtorch. Osobitnú pozornosť si tu zaslúži súbor MainActivity.smali. Ide o štandardnú triedu Androidu, ktorá je vytvorená súpravou Android SDK a je nainštalovaná ako vstupný bod do aplikácie (analogicky k hlavnej funkcii v C). Otvorte súbor na úpravu.

Vo vnútri je malý kód (lokálny assembler). Je dosť neprehľadná a ťažko čitateľná kvôli svojej nízkoúrovňovej povahe, takže ju nebudeme študovať, ale jednoducho nájdeme všetky odkazy na triedu Ad v kóde a okomentujeme ich. Do vyhľadávania zadáme riadok „Reklama“ a dostaneme sa na riadok 25:

Pole súkromná reklama:Lcom/kauf/marketing/Ad;

Tu sa vytvorí reklamné pole na uloženie objektu triedy Ad. Komentujeme umiestnením znaku ### pred riadok. Pokračujeme v pátraní. Riadok 423:

New-instance v3, Lcom/kauf/marketing/Ad;

Tu dochádza k vytváraniu objektu. Poďme komentovať. Pokračujeme v hľadaní a nachádzame v riadkoch 433, 435, 466, 468, 738, 740, 800 a 802 volania metód triedy Ad. Poďme komentovať. Vyzerá to tak. Uložiť. Teraz je potrebné balík poskladať a skontrolovať funkčnosť a prítomnosť reklamy. Kvôli čistote experimentu vrátime riadok odstránený z AndroidManifest.xml, zostavíme balík, podpíšeme ho a nainštalujeme.

Náš pokusný králik. Reklama viditeľná

Ojoj! Reklama zmizla len počas behu aplikácie, no zostala v hlavnom menu, ktoré vidíme pri spustení softvéru. Takže počkajte, ale vstupným bodom je trieda MainActivity a reklama počas behu aplikácie zmizla, ale zostala v hlavnom menu, takže vstupný bod je iný? Ak chcete identifikovať skutočný vstupný bod, znova otvorte súbor AndroidManifest.xml. A áno, obsahuje nasledujúce riadky:

Hovoria nám (a čo je dôležitejšie aj android), že aktivita s názvom Štart by mala byť spustená ako odpoveď na vygenerovanie zámeru (udalosti) android.intent.action.MAIN z kategórie android.intent.category.LAUNCHER. Táto udalosť sa generuje, keď klepnete na ikonu aplikácie v spúšťači, takže určuje vstupný bod, konkrétne triedu Štart. S najväčšou pravdepodobnosťou programátor najprv napísal aplikáciu bez hlavnej ponuky, ktorej vstupným bodom bola štandardná trieda MainActivity, a potom pridal nové okno (aktivitu) obsahujúce ponuku a popísané v triede Štart a manuálne z nej urobil vstup. bod.

Otvorte súbor Start.smali a opäť vyhľadajte riadok „Ad“, v riadkoch 153 a 155 nájdeme zmienku o triede FirstAd. Nachádza sa aj v zdrojovom kóde a súdiac podľa názvu je zodpovedný za zobrazovanie reklám na hlavnej obrazovke. Pozrime sa ďalej, je tu vytvorenie inštancie triedy FirstAd a zámer, ktorý podľa kontextu súvisí s touto inštanciou, a potom označenie cond_10, podmienený prechod na ktorý sa vykoná presne pred vytvorením inštancie. triedy:

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

S najväčšou pravdepodobnosťou program nejako náhodne vypočíta, či sa má reklama zobraziť na hlavnej obrazovke, a ak nie, preskočí priamo na cond_10. Dobre, zjednodušíme jej úlohu a nahradíme podmienený prechod bezpodmienečným prechodom:

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

V kóde už nie sú žiadne zmienky o FirstAd, takže súbor zatvoríme a znova zložíme našu virtuálnu baterku pomocou apktool. Skopírujte si ho do smartfónu, nainštalujte a spustite. Voilá, všetka reklama zmizla, k čomu nám všetkým blahoželáme.

Výsledky

Tento článok je len stručným úvodom do metód hackovania a úpravy aplikácií pre Android. Mnoho problémov zostalo v zákulisí, ako napríklad odstránenie ochrany, analýza zahmleného kódu, preklad a nahradenie prostriedkov aplikácie, ako aj úprava aplikácií napísaných pomocou Android NDK. Avšak so základnými znalosťami je len otázkou času, kedy na to všetko prídete.

Z tohto článku sa dozviete, z čoho pozostáva aplikácia pre Android, ako otvoriť súbor APK a pomocou akých programov.

Čo je súbor APK?

APK je formát operačného systému Android používaný pre archivované spustiteľné súbory aplikácií a samotný názov súboru môže byť ľubovoľný, ale prípona by mala vyzerať iba takto.apk. Analógy APK v iných operačných systémoch sú .msi v systéme Windows, .sis v systéme Symbian, .rpm alebo .deb v systéme Linux.

Pozrime sa, čo je vo vnútri
V skutočnosti je .apk archív ZIP, takže si interné zariadenie môžete pozrieť pomocou ľubovoľného správcu súborov alebo archivátora, napríklad WinRAR alebo mobilnej aplikácie X-plore.




Stojí za to pamätať, že získate len vizuálny prístup k interným zdrojom, ktoré sú veľmi obmedzené.

Pozrime sa na štruktúru
Vo vnútri súboru .apk vidíme množstvo súborov a priečinkov, poďme zistiť, na čo slúžia:

  • AndroidManifest.xml je akýmsi „pasom“ aplikácie, z ktorého môžete zistiť všetky hlavné body, požiadavky, verziu, povolenia atď.
  • META-INF tento súbor obsahuje metadáta, teda údaje o údajoch, kontrolné súčty, cesty k údajom, cesty a kontrolné súčty zdrojov, certifikáty. Tento súbor môžete otvoriť pomocou ľubovoľného textového editora, ale odporúča sa použiť Notepad++.
  • Priečinok res obsahuje všetky prostriedky programu, grafiku, ako sú ikony, obrázky, text a prvky grafického rozhrania. Môžete tiež ľahko pristupovať k priečinku.
  • class.dex je priamy aplikačný programový kód, ktorý spúšťa virtuálny stroj Dalvik VM, čo je v tomto súbore, môžete vidieť iba dekompiláciou súboru .apk, o tom si povieme v iných článkoch; resources.arsc - skompilovaný súbor XML, tento súbor obsahuje údaje o všetkých zdrojoch zapojených do programu.
  • lib - priečinok s natívnymi knižnicami, ku ktorým je možné pristupovať iba pri použití špecializovaných programov. Aj v súbore APK môžu byť súbory a priečinky ako com, org, udk, ale nie vždy.

Teraz sa pozrime na vnútornú štruktúru podrobnejšie, potrebujeme dekompilačný program, Java a súbor APK. Hlavným nástrojom na demontáž .apk je Apktool, ale tento program funguje iba z riadku, čo nie je príliš pohodlné. Pre rýchlejšiu a pohodlnejšiu analýzu môžete použiť APKing, je to stále rovnaký Apktool, ale s možnosťou práce z kontextového menu.


A tak nainštalujeme APKing ako každú aplikáciu pre Windows a po vybratí .apk naň klikneme pravým tlačidlom myši a súčasne Shift, potom uvidíme nasledovné:



A vyberte požadovanú akciu, napríklad úplne dekompilujte, potom program dokončí operáciu a vytvorí priečinok s rovnakým názvom.



Otvorením priečinka budeme mať prístup ku všetkým zdrojom súboru APK.



Teraz je možné upravovať všetky textové súbory, pri dodržaní základných pravidiel môžete použiť populárny program Notepad++, napríklad AndroidManifest.xml

Spomenul som aplikáciu SmartAPKTool. Dokáže extrahovať, zipsovať a podpisovať upravené súbory APK. Jeho výhodou je prítomnosť grafického rozhrania. Existuje však vážna nevýhoda. SmartAPKTool nebol dlho aktualizovaný a program správne nerozbaľuje a nebalí aplikácie pre najnovšie verzie systému Android. Preto sa tu pokúsim vysvetliť, ako používať aplikáciu na tieto účely apktool.

Poznámka 1.
Program SmartAPKTool je stále vhodný na podpisovanie zhromaždených súborov APK.
Poznámka 2.
Odkazy na programy uvedené v článku sú ↓

Program apktool nemá grafické rozhranie. To je nevýhoda pre tých, ktorí nie sú zvyknutí pracovať s príkazovým riadkom. Ale je tu aj plus: na rozdiel od SmartAPKTool uvidíme všetky chyby, čo znamená, že budeme vedieť, čo opraviť.

Stiahnite si dva archívy: jeden spoločný pre všetky systémy, druhý pre náš systém (v príklade Windows):

Rozbaľme oba archívy do rovnakého prázdneho priečinka (v našom príklade C:\apktool\). Jeho obsah by mal vyzerať takto:

Odteraz môžeme program používať apktool.

Poznámka 3.
Používatelia 64-bitových verzií Linuxu si budú musieť nainštalovať balík ia32-libs:

sudo apt-get nainštalovať ia32-libs

Do toho istého priečinka vložíme súbor, ktorý potrebujeme rozbaliť. Napríklad nech sa volá orig.apk
Stlačte a podržte kláves Shift a kliknite pravým tlačidlom myši na ľubovoľné prázdne miesto v priečinku (neklikajte na súbory!). Potom vyberte „Otvoriť príkazové okno“. V zobrazenej konzole zadajte:

apktool dekódovať orig.apk

Súbor sa rozbalí:

Teraz máme priečinok s rozbalenou aplikáciou v adresári C:\apktool\. Volá sa rovnako ako zdrojový súbor, bez prípony: C:\apktool\orig\ . Zdrojové súbory môžeme zmeniť podľa popisu v článku Android: ako nainštalovať dve rovnaké aplikácie na jeden telefón. Po vykonaní zmien zhromaždíme kópiu aplikácie zabalením zdrojových súborov do súboru apk:

apktool zostaviť orig result.apk

Tu je result.apk názov súboru, ktorý sme vymysleli pre zostavu kópie. Ak sa nevyskytnú žiadne chyby, súbor sa zostaví:

Ostatné je nad rámec článku:

  1. Ak sa počas montáže vyskytnú chyby, musíte nájsť ich príčinu a opraviť ich.
  2. Zostáva už len podpísať výsledný súbor result.apk. Dá sa to urobiť pomocou SmartAPKTool, ako je uvedené vyššie; Všetko na ňom je intuitívne. Existujú aj iné spôsoby podpísania súboru apk.
  3. Chyby sa môžu vyskytnúť aj pri inštalácii kópie, počas jej spúšťania alebo prevádzky. Je potrebné ich zachytiť pomocou pomôcky adb, ktorá je súčasťou súpravy Android SDK.

Aplikáciu musíte podpísať, inak sa nenainštaluje. Chyby sa nevyskytujú tak často a najčastejšie problémy, ktoré ich spôsobujú, sú popísané v článku

V procese používania rôzneho firmvéru pre zariadenia so systémom Android je niekedy potrebné tak či onak zmeniť systémové aplikácie zabudované do operačného systému. V tomto materiáli sa budeme touto otázkou podrobne zaoberať.

Prirodzene, musíte rozobrať a znova zložiť systémový súbor APK, aby fungoval správne a stabilne. Poďme prísť na to, čo je pre to potrebné urobiť krok za krokom.

Najprv musíte vykonať proces deodexovania systémových súborov APK. Povieme vám, ako to urobiť v.

Takže súbor .apk bol deodexovaný a dekompilovaný. Poďme analyzovať aplikáciu, o ktorú sa zaujímame, nech má názov, pre prehľadnosť príkladu, rámec- res. apk. Pamätáme si to v hlave ako pôvodnú aplikáciu.

Povedzme, že sme v aplikácii vykonali všetky potrebné zmeny. Povieme si viac o všetkých aspektoch súborov APK v. Teraz ho musíte zabaliť späť. Zapamätajme si hotovú zabalenú aplikáciu v našich mysliach ako upravenú aplikáciu 2.

Teraz si vysvetlíme, prečo bolo potrebné mentálne si zapamätať aplikácie ako pôvodné a upravené 2. Aplikácia zostavená programom ApkTool (alebo pomocou rozšírenia grafického používateľského rozhrania ako SmartApkTool) nebude fungovať, ale to nie je problém. Vykonávame nasledujúce akcie:

Zhromažďovanie takýchto súborov späť do súboru APK je pomerne jednoduché. Ak to chcete urobiť, musíte spustiť apktool s príslušným príznakom zostavenia a odovzdať mu cestu k priečinku s dekompilovanou aplikáciou. Napríklad, ak máme priečinok aplikácie, ktorý sa nachádza v rovnakom adresári ako apktool, príkaz bude vyzerať takto:

Shell

java -jar apktool.jar b app

java - jar apktool .jar b app

Po zostavení sa hotový súbor APK nachádza v adresári aplikácia/zostava. Ďalej musíte podpísať súbor APK. Toto sa robí s cieľom zabezpečiť, aby aplikácia fungovala na zariadeniach, kde je ladenie zakázané. To znamená, že spúšťanie nepodpísaných aplikácií na takýchto zariadeniach je zakázané. Viac o digitálnych certifikátoch a postupe podpisovania súborov si môžete prečítať tu.

Podpisovanie súboru je veľmi jednoduché: existuje na to špeciálny nástroj s názvom signapk. Musí sa spustiť tak, že sa najprv odovzdajú certifikáty ako argumenty, potom cesta k aplikácii a nakoniec cesta k podpísanej aplikácii (výsledok, kam ju uložiť). Vyzerá to asi takto:

Shell

java -jar signapk.jar testkey.x509.pem testkey.pk8 *.apk apk_signed.apk

java - jar signapk .jar testkey .x509 .pem testkey .pk8 * .apk apk_signed .apk

Pýtate sa, kde môžete získať takýto certifikát? Certifikáty nájdete na internete. Alebo si ho vygenerujte sami. Podrobný návod na nastavenie a vygenerovanie všetkých potrebných súborov nájdete napríklad na .

Záver

Ako vidíte, dekompilácia a zostavenie súborov APK je pomerne jednoduchý proces, ktorý sa navyše dá automatizovať, čo výskumníkovi uľahčuje prácu. Samotný virtuálny stroj Dalvik sa tiež ľahko učí a otvára, čo na jednej strane znižuje bariéru vstupu pre vývojárov, na druhej strane je hlavným dôvodom takého veľkého percenta pirátstva na platforme Android. Čiastočne preto napríklad vývojári hier vo všeobecnosti nemajú záujem vydávať zaujímavé hry so zápletkou. Vzhľadom na súčasný prístup používateľov je oveľa výnosnejšie nitovať farmy s darmi, ktoré sú si navzájom nápadne podobné. Preto nakupujeme aplikácie, podporujeme vývojárov a vďaka tomu získavame zaujímavý obsah. Ale nie je absolútne potrebné darovať!

Ďakujem vám všetkým, uvidíme sa znova.