Program na zmenu apk. Základy úpravy systémových aplikácií Android (apk). Usporiadanie balíkov APK a ich príjem

APK je formát používaný v operačnom systéme Android pre archivované spustiteľné súbory aplikácií. Analógom je napríklad v systéme Windows .msi, v systéme Symbian - .sis, v systéme Linux - .rpm alebo .deb. V tomto článku čo najpodrobnejšie porozumieme všetkým problémom týkajúcim sa tohto formátu súboru.

Proces rozoberania, úpravy a skladania „správne“ sa nazýva reverzné inžinierstvo. Čo je k tomu potrebné? Vyžadujú sa tieto nástroje:

Apktool. Je pohodlnejšie používať s shellom SmartApktool, môžete použiť aj hotové dávkové súbory, napríklad ApktoolBAT.

Notepad++ – nevyžaduje sa, ale dôrazne sa odporúča.

7zip alebo WinRar alebo akýkoľvek iný archivačný program, ale odporúča sa jeden z nich.

Deodexovaný firmvér.

Existuje niekoľko spôsobov, ako nainštalovať aplikácie do operačného systému Android. Prvý, tiež hlavný, je priamo cez Google Play (Android Market), teda z oficiálneho zdroja, ktorý vyžaduje Google účet. Mnoho aplikácií je platených, ak nechcete hľadať hacknutú verziu na pirátskych stránkach, budete musieť za nákup zaplatiť. Ale budeme hovoriť o tom, ako to urobiť v. Druhý je z neoficiálnych zdrojov iných ako Google Play, pre ktoré budete musieť v nastaveniach smartfónu alebo tabletu povoliť možnosť „Povoliť inštaláciu aplikácií z neoficiálnych zdrojov“, po ktorej je potrebné zapísať inštalačný súbor APK do pamäte. kartu.

Aplikácie APK je možné inštalovať aj hromadne. K tomu budete potrebovať Astro File Manager – špeciálny správca súborov. Po inštalácii presuňte aplikácie:

Zo smartfónu/tabletu: in mntsdcardackupsapp(inými slovami, pamäťová karta, potom priečinok záloh, priečinok aplikácie)

Z osobného počítača (nezabudnite povoliť pripojenie zariadenia Android v režime jednoduchého disku USB): SD kartazálohyaplikácie

Potom otvorte požadovanú aplikáciu, v kontextovej ponuke vyberte „Správca aplikácií“ a prejdite na kartu „Zálohy“, kde vyberte „Dlhé kliknutie alebo začiarknutie aplikácie, ktorú chcete nainštalovať“. Kliknite na tlačidlo „Inštalovať“ - všetky aplikácie sa nainštalujú do vášho zariadenia.

Je celkom ľahké zistiť, aká je štruktúra súboru APK. Otvorte požadovaný súbor APK pomocou archivačného programu, napríklad WinRar. Tu je to, čo vidíme vo vnútri:

AndroidManifest.xml je druh „pasu“, ktorý popisuje, čo je v aplikácii, vrátane: systémových požiadaviek na aplikáciu, jej štruktúry a verzie.

META-INF– priečinok obsahujúci súbor MANIFEST.MF(dá sa otvoriť takmer v akomkoľvek textovom editore, odporúča sa použiť Notepad++), po otvorení ktorého môžete vidieť kontrolné súčty SHA-1 a dátové cesty, verziu štandardu Manifest-Version, súbory certifikátov RSA alebo DSA, SF súbor obsahuje cesty k rôznym zdrojom a ich kontrolné súčty. Vo všeobecnosti sú META-INF súbory metadát, teda údaje o údajoch.

res– priečinok, ktorý obsahuje všetky „softvérové“ zdroje zoradené do podpriečinkov. Napríklad priečinok ~drawable~ obsahuje grafické prvky aplikácií (rôzne stavy, ikony atď.) a adresár rozloženia obsahuje súbory XML, ktoré označujú umiestnenie prvkov grafického používateľského rozhrania (GUI).

triedy.dex– programový kód spustený virtuálnym strojom Dalvik VM. Pripomeňme si, že operačný systém Android je zmesou linuxového jadra a virtuálneho stroja Java.

zdroje.arsc– skompilovaný súbor XML. Obsahuje údaje o všetkých zdrojoch, ktoré program využíva.

aktíva– priečinok, ktorý obsahuje aj rôzne zdroje, nemusí byť vôbec v súbore APK.

lib– priečinok, ktorý obsahuje „libs“ alebo jednoduchšie natívne knižnice, ak je program napísaný pomocou NDK, napríklad s prvkami v C++. Tento adresár možno nie je v súbore APK.

com– nemusí byť v APK.

org– nemusí byť v APK.

udk– nemusí byť v APK.

Obsahom aplikácie APK sme sa zaoberali, teraz pristúpme k jej podrobnému rozobraniu. Na dekompiláciu budete potrebovať Apktool a Java, ako aj samotný súbor APK. Apktool sa odporúča rozbaliť do adresára C:WINDOWS(nie je to potrebné, ale bude to pohodlnejšie. Prečo – čítajte o niečo nižšie).

Ak chcete spustiť Apktool, musíte v počítači vstúpiť do ponuky „Spustiť“. V systéme Windows XP kliknite na Štart -> Spustiť, v systéme Windows 7: Správca úloh ( Ctrl+Alt+Del), v hornej časti rozbaľovacej ponuky Súbor -> Nová úloha (Spustiť...), alebo ho jednoducho zavolajte klávesovou skratkou Win+R.

Zavolajte na príkazový riadok - napíšte cmd, po ktorom spustíme Apktool - píšte apktool(pre tento účel bolo potrebné umiestniť ho do priečinka WINDOWS). Ďalej všetko ovládanie prebieha cez príkazový riadok pomocou parametrov.

Ak sa nechcete trápiť neustálym zadávaním textových príkazov, môžete využiť grafické rozhranie – napríklad spomínaný SmartApkTool. Spustite SmartApkTool.exe, potom vyberte požadovanú aplikáciu APK na karte Rozbaliť/zbaliť (je dôležité, aby názov súboru neobsahoval medzery, azbuku, špeciálne znaky a interpunkčné znamienka).

Po rozbalení program vytvorí priečinok s rovnakým názvom ako súbor APK. Vo vnútri bude celý obsah aplikácie.

APK môže byť tiež lokalizovaný. Predtým, ako to začneme robiť, spustíme predinštalovaný Notepad++ a nakonfigurujeme ho nasledovne. Otvorenie Nastavenia -> Konfigurácia -> Nový dokument.

Po týchto krokoch otvorte rozbalenú (dekompilovanú) aplikáciu, priečinok res/hodnoty.

Všetky lokalizácie sa často nachádzajú v súbore struny.xml, ale niekedy môžu byť niektoré z nich obsiahnuté v polia.xml. Skopírujte tieto súbory a vytvorte ich v priečinku res priečinok hodnoty-ru a vložte ich do nej.

Teraz môžete otvoriť struny.xml pomocou programu Notepad++ urobte preklad a uložte zmenený súbor.

V súbore AndroidManifest.xml Môžete určiť, kam sa majú inštalovať aplikácie APK. Pozor, toto je relevantné len pre Android verzie 2.2 a novšej. Takže otvorte zadaný súbor pomocou programu Poznámkový blok ++. Takmer na začiatku môžete vidieť parameter:

Tu môžete zadať nasledujúce možnosti (za symbolom „=“):

iba interné– aplikácia sa nainštaluje iba do internej pamäte zariadenia

auto– poskytuje používateľovi možnosť voľby inštalácie aplikácie do internej pamäte alebo na pamäťovú kartu

preferovať Externé– program sa nainštaluje na pamäťovú kartu. Je potrebné vziať do úvahy, že nie všetky aplikácie budú fungovať správne, ak sú nainštalované na externom disku, alebo nebudú fungovať vôbec. Tie obsahujú:

Služby- teda služby

Poplachové služby– služby využívajúce čas, ako sú budíky

Input Method Engines– vstupné aplikácie vrátane rôznych klávesníc

Živé tapety– „živá“ animovaná tapeta

NaživoPriečinky– animované adresáre

AppMiniaplikácie- rôzne "widgety"

účtumanažérov– správcov rôznych účtov, vrátane klientov ICQ, klientov pre sociálne siete a pod

Synchronizačné adaptéry– programy, ktoré vyžadujú neustálu synchronizáciu

ZariadenieAdministrátori– aplikácie, ktoré slúžia na správu

Ochrana proti kopírovaniu– aplikácie, ktoré sú chránené pred kopírovaním.

V aplikácii môžete upravovať a nahrádzať rôzne ikony a grafické prvky používateľského rozhrania svojimi vlastnými. Ak to chcete urobiť, otvorte priečinok res v priečinku s dekompilovanou aplikáciou APK tu môžete vidieť priečinky:

vyťahovateľné-hdpi

výsuvný-ldpi

Tieto priečinky obsahujú všetky ikony a ďalšie grafické prvky programu. Písmeno pred „dpi“ znamená veľkosť grafických prvkov, resp.

hdpi - vysoká hustota bodov na palec, veľkosť 72 x 72 pixelov

mdpi - priemerná hustota bodov na palec, veľkosť 48 x 48 pixelov

ldpi - nízka hustota bodov na palec, veľkosť 36 x 36 pixelov

Ak chcete zmeniť napríklad ikonu aplikácie, otvorte súbor AndroidManifest.xml pomocou programu Notepad++ vyhľadajte riadok, v ktorom je ikona označená, pozrite sa na jej presný názov (všimnite si, že prípona súboru sa nezapisuje, iba názov súboru).

Otvorte príslušný priečinok s možnosťou kreslenia-*dpi, vložte upravenú alebo novú ikonu, nezabudnite dvakrát skontrolovať pôvodný názov AndroidManifest.xml. Obrázok musí byť vo formáte .png a mať presne rovnakú hustotu pixelov ako zdrojový súbor, napríklad pre hdpi je to 72 x 72 pixelov.

Ak chcete nahradiť názov ikony vlastným, uložte obrázok s požadovaným názvom súboru s možnosťou kreslenia-*dpi, za ktorým uvádzame presne to isté meno v AndroidManifest.xml(Napríklad android:icon=”@drawable/test"). Rovnakým spôsobom môžete zmeniť akékoľvek iné grafické prvky, ale požiadavky sú rovnaké – prípona musí byť .png a hustota bodov na palec je rovnaká ako v zdrojovom súbore.

V rozbalenej aplikácii si môžete ešte raz skontrolovať, aké má práva. To je užitočné, ak bol APK nainštalovaný z neznámeho zdroja a aby ste sa vyhli situácii, keď baterka alebo krásny kalendár zrazu začnú posielať platené SMS správy na neznáme číslo. Otvorenie AndroidManifest.xml Program Notepad++ a vyhľadajte zodpovedajúce riadky. Napríklad za odosielanie textových správ je zodpovedný parameter SEND_SMS. Môžete si prečítať viac o všetkých právach, ktoré môžu byť dostupné pre aplikáciu v.

Nainštalované aplikácie APK je možné extrahovať zo systému. Dá sa to urobiť niekoľkými spôsobmi. Najprv si môžete nainštalovať Astro File Manager. Otvorte aplikáciu a potom z kontextového menu vyberte „Správca aplikácií“. Vyhľadáme požadovanú aplikáciu, označíme ju zaškrtnutím a vytvoríme záložnú kópiu. Po spracovaní bude vybraná aplikácia umiestnená pozdĺž cesty:

mntsdcardackupsapp

sdcardackupsapp

Ďalej môžete použiť program Root Uninstaller. Po spustení aplikácia automaticky zistí všetky nainštalované súbory APK a automaticky ich všetky zálohuje. V súlade s tým môžete v prípade potreby skopírovať tieto záložné kópie na ďalšiu dekompiláciu; sú umiestnené pozdĺž cesty:

automatické zálohy mntsdcardRootUnistaller(pri prezeraní priamo zo zariadenia so systémom Android)

automatické zálohy sdcardRootUnistaller(pri prezeraní cez počítač, keď je zariadenie Android pripojené ako jednotka USB).

Ďalším spôsobom je použiť Root Browser Lite, samozrejme na to budete potrebovať práva Root. Otvorte túto aplikáciu a postupujte podľa cesty:

systémaplikácie(ak máte záujem o systémové aplikácie).

Skopírujeme potrebné aplikácie na pamäťovú kartu, po ktorej s nimi môžete vykonávať akékoľvek manipulácie.

Aplikácie APK, o ktoré máte záujem, si môžete stiahnuť aj zo služby Google Play (Android Market) priamo do svojho osobného počítača. Na to budete potrebovať prehliadač Google Chrome (verzia nie nižšia ako 17) a doplnok – APK Downloader. Po stiahnutí a inštalácii zadaného doplnku vytvorte kópiu odkazu prehliadača Google Chrome, kde za medzeru napíšeme nasledujúci riadok:

-ignorovať-certifikát-chyby

Pri štandardnej inštalačnej ceste prehliadača by riadok mal vyzerať takto:

"C:Program FilesGoogleChromeApplicationchrome.exe" -ignorovať chyby-certifikátu

Potom zadajte do vytáčania smartfónu:

*#*#8255#*#*

Prepíšeme ID zariadenia, ktoré pozostáva zo 16 znakov. Otvorte prehliadač Google Chrome pomocou vytvorenej skratky so zadaným parametrom -ignorovať-certifikát-chyby, Poďme do Nástroje -> Rozšírenia(do panela s adresou môžete zadať aj „chrome://settings/extensions“), otvorte nastavenia doplnku APK Downloader. V možnostiach zadajte e-mailovú adresu a heslo svojho účtu Google, ako aj prijaté ID zariadenia. Teraz prejdite na Google Play (Android Market), otvorte stránku s požadovanou aplikáciou a počkajte, kým sa úplne stiahne. Zobrazí sa ikona APK Downloader - po kliknutí na ňu sa aplikácia stiahne do počítača.

Apk editor pro, ktorý si môžete stiahnuť pre Android na našej stránke, vám umožní hacknúť/zmeniť obsah súborov ľubovoľnej aplikácie pre mobilné zariadenia a prispôsobiť si ju podľa vlastného uváženia.

Zvláštnosti

Program je profesionálny nástroj, ktorý sa v rukách pokročilých používateľov môže stať silným nástrojom na úpravu aplikácií pre Android. Funkčnosť sa prakticky nelíši od podobného softvéru pre osobné počítače.

Čo dokáže tento nástroj?

  1. Zmeňte (preložte) názvy iných aplikácií.
  2. Zmeňte rozloženie architektúry, farby, šablóny grafických nastavení (napríklad veľkosť ikony).
  3. Zmena zvukového dizajnu, mediálnych súborov.
  4. Odstráňte reklamy.
  5. Obíďte blokovanie plateného obsahu.
  6. Preneste aplikáciu z internej pamäte zariadenia na kartu SD.
  7. Zmena rozlíšenia a oveľa viac.

Ak chcete pochopiť, ako tento nástroj používať, musíte si stiahnuť apk editor pro a prejsť do ponuky. Potom vyberte už nainštalovanú aplikáciu v systéme Android alebo jej súbor apk. Potom sa otvoria predvolené údaje, ktoré môže používateľ zmeniť:

  • úprava zdrojov;
  • nahradenie súborov;
  • všeobecná úprava;
  • editácia údajov.

Program ponúkne inštaláciu upravenej verzie. Toto nefunguje vo všetkých prípadoch, takže starú verziu treba manuálne odinštalovať a nainštalovať novú. Po odstránení by ste mali vybrať priečinok editora apk (pre pohodlie môžete použiť ES Explorer) medzi programami v systéme Android a nájsť upravený súbor aplikácie a nainštalovať ho do zariadenia.

Program má užívateľsky prívetivé rozhranie. Navigácia je celkom jednoduchá, no na pochopenie potrebuje používateľ mať základné znalosti angličtiny.

Výhody a nevýhody

  1. Program otvára užívateľovi široké možnosti prispôsobenia aplikácií.
  2. Menu obsahuje časť Pomocník, ktorá jednoducho a podrobne popisuje veľké množstvo možností editorského programu. Používatelia, ktorí sú ďaleko od programovania, preto nebudú musieť hľadať príklady a pokyny na úpravu zdrojov tretích strán.
  3. Program si môžete bezplatne stiahnuť na našej webovej stránke.

Používanie tohto nástroja si vyžaduje určité zručnosti a znalosti. V rukách neskúseného používateľa môže úprava viesť k narušeniu integrity súborového systému, čo v konečnom dôsledku povedie k zlyhaniam aplikácie. V ponuke v položke Pomocník sú príklady konverzií s obrázkami a tipy, ako správne používať apk editor pro v systéme Android. Preto, ak chcete pochopiť tento program, postupujte podľa pokynov.

Editor je pomerne užitočným nástrojom pre tých, ktorí čelia nepohodlnému aplikačnému rozhraniu (nedostatok ruského jazyka, neustála reklama, bannery atď.). Ak ste už tento program použili, podeľte sa o svoje dojmy nižšie v komentároch.

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 sa môžete na interné zariadenie 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 iba vizuálny prístup k interným zdrojom; možnosti úprav sú extrémne 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ť v akomkoľvek textovom editore, 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 vykonávaný virtuálnym strojom Dalvik VM; čo je v tomto súbore, môžete vidieť iba dekompiláciou .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. Súbor APK môže obsahovať aj súbory a priečinky, ako napríklad com, org, udk, ale nie vždy.

Teraz sa pozrime na vnútornú štruktúru podrobnejšie, na to 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 výbere .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

To som opäť ja a môj návod na čajníky a kanvičky s obrázkami.

Tentoraz budem podrobne hovoriť o výmene systémových komponentov operačného systému Android na príklade inštalácie úpravy stavového riadku.

Android je malý Linux. Pri výmene súborov je potrebné dodržiavať množstvo zásad, aby sa telefón nepremenil na tehlu, ktorú oživí len úplné prebliknutie so stratou všetkých dát z internej pamäte zariadenia. Interné oddiely sú naformátované v systéme súborov odlišnom od FAT32 na jednotkách flash. Vlastnosti súboru okrem iného ukladajú povolenia pre rôzne skupiny používateľov (vlastník súboru, skupina vlastníkov súboru, ostatní používatelia). Pri práci so systémovými súbormi je potrebné ich uložiť, pretože pri načítaní k nim systém jednoducho nemusí mať prístup a nemusí sa normálne zaviesť.
Začnime nástrojmi.

Budeme potrebovať:

  • Správca súborov, ktorý dokáže pracovať s právami root a oprávneniami na súbory. Root Explorer je najlepší (Kúpil si ho, však?)
  • Samotný upravený súbor, ktorý chceme umiestniť na miesto systémového (odkaz na konci článku).

Teraz používame jednu z pohodlných funkcií Root Explorer. Dlhým klepnutím na požadovaný súbor vyvolajte kontextové menu

A kliknite na položku " Zazipujte tento súbor"na uloženie súboru do archívu zip na SD karte. Po archivácii dostaneme nasledujúcu správu:

Stlač tlačidlo " Pobyt“ zostať v priečinku a urobiť ešte jednu vec.

Teraz je všetko pripravené na nahradenie súboru.
O prístupových právach každého súboru som už hovoril. Ak ich chcete znova vytvoriť v novom súbore, musíte si ich najprv pozrieť zo starého súboru. Sú reprezentované sériou symbolov „rwxrwxrwx“. 1. triáda - práva vlastníka, 2. - skupiny vlastníkov, 3. - všetci ostatní používatelia. Náš súbor má povolenia "rw-r--r--".

Teraz prejdite na kartu SD, nájdite tam upravený súbor a z kontextového menu vyberte položku " Kopírovať", ale neponáhľajte sa hneď vybrať priečinok "/system/app", pretože tým okamžite poškodíme systém. Namiesto toho skopírujte súbor do špeciálneho priečinka pre dočasné súbory "/data/local/tmp", aby ste súbor do formulára, ktorý prevezme systém.
Najprv zavolajte kontextové menu súboru a vyberte " Premenovať" a zadajte názov súboru "SystemUI.apk". Je to tak, pretože v Linuxe záleží na veľkosti písmen v názve, t. j. "systemui.apk" a "SystemUI.apk" sú rôzne súbory.
Ďalej musíte zmeniť oprávnenia súboru, pretože teraz sú takmer určite nesprávne nastavené. Ak to chcete urobiť, znova zavolajte kontextovú ponuku súboru dlhým klepnutím a vyberte položku " Povolenia". Pre našu hodnotu "rw-r--r--" by mali byť začiarkavacie políčka umiestnené takto:

Kliknite na " OK" a znova zavolajte kontextovú ponuku. Teraz musíte zmeniť vlastníka a skupinu tejto aplikácie. Ak to chcete urobiť, vyberte položku " Zmeniť vlastníka". Zobrazí sa okno s informáciami o aktuálnom vlastníkovi súboru.
Tu musíme urobiť malú odbočku.
V priečinku „/system/app“ sú všetky súbory vo vlastníctve používateľa „root“ (uid=0) a skupiny „root“ (gid=0) a v priečinku „/system/framework“ používateľa „ system" (gid=1000) je vlastneny. a skupina "system" (gid=1000).
Na základe vyššie uvedeného nastavte požadované hodnoty a kliknite na " OK".
A po tretíkrát zavolajte kontextové menu pre súbor a vyberte položku " Kopírovať“ a v dialógovom okne kopírovania prejdite do priečinka „/system/app“. Teraz môžete kliknúť na „ Vložiť“ a pozorne čítajte ďalej.
Takmer okamžite vás systém informuje, že proces stavového riadku sa náhle skončil a ponúkne jeho spustenie. Všetky pokusy budú neúspešné. Medzi objavením sa okien musíte mať čas na vykonanie niekoľkých akcií. Pred stlačením tlačidla musíte vyvolať menu na vypnutie zariadenia, zobrazí sa pod upozornením. Teraz musíte položiť prst približne na ľavú stranu tlačidla. Teraz musíte veľmi rýchlo trikrát kliknúť prstom, aby ste mali čas zavrieť varovanie, vybrať možnosť vypnutia a potvrdiť svoje zámery.
Teraz čakáme, kým sa telefón vypne, reštartujeme a vychutnáme si výsledok, alebo si ho neužijeme a hľadáme chyby.

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). Zistili sme 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 (nachádzajú sa 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 na 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 Device ID. 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 pracujete na Linuxe 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 Virtuous Ten Studio, ktorý všetky tieto nástroje kumuluje 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ť. Opisovať to nemá zmysel, 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žívanie 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á, keď 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, stačí spustiť 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 na používanie internetového pripojenia. 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 iba 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ý, práve sme mali šťastie na hlúpu aplikáciu. 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. Toto je štandardná trieda 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 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 Androidu), ž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.




Hore