Editor APK súborov pre Android - PDF

Description
MASARYKOVA UNIVERZITA FAKULTA INFORMATIKY Ð Û Å«Æ ±²³ µ ¹º»¼½¾ Ý Editor APK súborov pre Android BAKALÁRSKA PRÁCA Eduard Cihuňka Brno, jar 2014 Prehlásenie Prehlasujem, že táto bakalárska práca je mojím

Please download to get full document.

View again

of 38
All materials on our website are shared by users. If you have any questions about copyright issues, please report us to resolve them. We are always happy to assist you.
Information
Category:

Entertainment

Publish on:

Views: 18 | Pages: 38

Extension: PDF | Download: 0

Share
Transcript
MASARYKOVA UNIVERZITA FAKULTA INFORMATIKY Ð Û Å«Æ ±²³ µ ¹º»¼½¾ Ý Editor APK súborov pre Android BAKALÁRSKA PRÁCA Eduard Cihuňka Brno, jar 2014 Prehlásenie Prehlasujem, že táto bakalárska práca je mojím pôvodným autorským dielom, ktoré som vypracoval samostatne. Všetky zdroje, pramene a literatúru, ktoré som pri vypracovaní používal alebo z nich čerpal, v práci riadne citujem s uvedením úplného odkazu na príslušný zdroj. Eduard Cihuňka Vedúci práce: Ing. Mgr. et Mgr. Zdeněk Říha, Ph.D. ii Pod akovanie Rád by som na tomto mieste pod akoval svojmu vedúcemu práce Ing. Mgr. et Mgr. Zdeňkovi Říhovi, Ph.D. za ochotný prístup a odbornú pomoc. Ďalej by som chcel pod akovat celej rodine za podporu pri štúdiu a v živote. A špeciálne d akujem patrí Denisovi Domarackému. iii Zhrnutie Práca sa zaoberá možnost ou automatickej modifikácie súboru APK. APK súbor sa používa na distribúciu a inštaláciu aplikácií na mobilné zariadenia s operačným systémom Android. V teoretickej časti sa venujem systému Android, vývoju na tento systém a jeho bezpečnostným rizikám. Ďalej sa venujem štruktúre APK súboru a možnosti jeho modifikácie. Popisujem programy použité pri modifikácii APK súborov, ktoré využívam v praktickej časti. V praktickej časti implementujem aplikáciu, ktorá automaticky obohatí súbor APK o krátky kód. iv Kl účové slová APK súbor, AndroidManifest.xml, Apktool, Jarsigner, modifikácia, JDK v Obsah 1 Operačný systém Android Vývoj aplikácií na Android Bezpečnostné rizika OS Android Zodpovednost užívatel ov Inštalácia aplikácií z neznámych zdrojov Google Play Fragmentácia Androidu APK súbor Podpisovanie APK súborov META-INF res AndroidManifest.xml manifest uses-sdk uses-permission application activity reciever service content provider intent classes.dex resources.arsc Možnosti modifikácie APK súboru Popis programov použitých pri modifikácii APK súboru Apktool AAPT Jarsigner Zipalign Implementácia vi 4.1 Úprava súboru AndroidManifest.xml Bližší pohl ad na vkladaný kód Modifikácia APK súboru Priebeh modifikácie Aplikácia EditorApk Záver A Prístupové práva vii Úvod Postupom času začali mobilné telefóny zohrávat čoraz väčšiu úlohu v našom živote. Klasické telefóny s jednoduchými funkciami volania a posielania SMS správ, sú vytláčané novými chytrými telefónmi s vlastným operačným systémom, ktoré nám okrem základných funkcii umožňujú prostredníctvom telefónu vykonávat aj pokročilejšie operácie. Už nepotrebujeme so sebou nosit desat rôznych zariadení, chytrý telefón nám ponúka nespočetne množstvo možností, od surfovania na Webe až po využívanie navigácie GPS. Asi najznámejší operačný systém pre chytré telefóny je Android, ktorý sa v súčasnej dobe nachádza vo väčšine týchto zariadení. Android vd ačí za svoju popularitu najmä tomu, že jeho zdrojový kód je dostupný zadarmo a výrobcovia chytrých telefónov si ho môžu doladit podla potreby konkrétneho zariadenia. Na rozšírenie funkčnosti zariadenia sa využívajú aplikácie, v systéme Android sa na distribúciu a inštalovanie nových aplikácii využívajú súbory vo formáte APK. Vo svojej bakalárskej práci sa venujem automatickej modifikácii APK súboru, inštalačného balíčka pre operačný systém Android. Pod pojmom modifikácia sa predstavuje obohatenie APK súboru vložením dodatočného kódu do jeho štruktúry. V úvodnej kapitole si priblížime operačný systém Android, možnosti vývoja aplikácii pre tento systém a nakoniec si popíšeme bezpečnostné rizika, ktoré sa spájajú s týmto systémom. V druhej kapitole sa budem venovat štruktúre APK súboru, podrobnejšie popíšem súbor AndroidManifest.xml, ktorý poskytuje systému nevyhnutné informácie o aplikácii a popisuje komponenty z ktorých aplikácia pozostáva. Priblížim aj podpisovanie APK súborov a nakoniec popíšem možnosti modifikácie tohto súboru. V tretej kapitole si priblížime jednotlive programy, ktoré som použil pri automatickej modifikácii APK súboru. Postupne sa budem venovat programu Apktool, Jarsigner a Zipalign. Všetky tieto programy sú vol ne dostupné na Internete alebo sú súčast ou vývojového prostredia pre operačný 1 systém Android a vývojového prostredia pre jazyk Java. V štvrtej záverečnej kapitole sa venujem samotnej implementácii aplikácie na automatickú modifikáciu APK súboru. Približujem postup a podrobnejšie sa venujem úprave súboru AndroidManiefst.xml a kódu o ktorý je aplikácia počas modifikácie obohatená. Nakoniec popisujem ako s týmto programom zachádzat. 2 1 Operačný systém Android Android je operačný systém založený na Linuxovom jadre. Je prezentovaný ako open source platforma a jeho zdrojový kód je vol ne dostupný pod open source licenciou. Napriek tomu je väčšina zariadení kombináciou open source a proprietárneho softvéru (softvér s uzavretým kódom) [2]. Primárnym ciel om Androidu sú mobilné zariadenia s dotykovou obrazovkou, ako chytré telefóny a tablety, ale môžeme ho nájst aj v iných zariadeniach, napríklad v e-čítačkách, netbookoch a navigáciách. Napriek svojej mladosti (zachvil u 6 rokov), patrí v súčasnej dobe medzi najrozšírenejší operačný systém medzi mobilnými zariadeniami. Na konci roka 2013 sa mu podarilo dosiahnut na trhu s chytrými telefónmi podiel až 81.3% [1]. Začiatok sa datuje do roku 2003, kedy vznikla firma Android, Inc. Tu v roku 2005 odkúpil internetový gigant Google a už o dva roky neskôr, konkrétne 7. novembra bola predstavená softvérová platforma Andorid. Spolu s predstavením Androidu vzniklo združenie firiem Open Handset Alliance (v súčasnosti skupina 84 firiem z oblasti výroby mobilných zariadení, telekomunikačných operátorov a technologických firiem), ktoré sa spoločne podiel ajú na vývoji [3]. Prvá oficiálna verzia Android 1.0 vyšla 23. septembra 2008, táto verzia sa obišla bez názvu. Až neskôr sa jednotlivé verzie začali označovat podl a rôznych cukroviniek a zákuskov v abecednom poradí [4]. S príchodom každej novej verzie pridáva Android do systému nové funkčnosti a opravy chýb, ktoré sa vyskytovali v predchádzajúcich verziách. Zatial posledná vydaná verzia je Android 4.4 KitKat. Za svoju obl úbenost a vel kú rozšírenost vd ačí najmä: širokej ponuke zariadení vo všetkých cenových kategóriach užívatel skému rozhraniu, ktoré je jednoduché na ovládanie a je možné si ho upravit podl a svojich predstáv službe Google Play, ktorá umožňuje vol ne distribuovat aplikácie vel kému množstvu aplikácii, z ktorých je väčšina dostupná úplne zadarmo 3 1. OPERAČNÝ SYSTÉM ANDROID vel kej vývojárskej základni fungovaniu na rôznych zariadeniach vd aka nízkym hardvérovým nárokom Architektúra operačného systému sa skladá z piatich vrstiev. Každá vrstva prevádza rôzne operácie a vystupuje viac menej samostatne. V praxi však dochádza ku spolupráci jednotlivých častí a vrstvy týmto nie sú medzi sebou striktne oddelene [4]. 1.1 Vývoj aplikácií na Android S každou novou verziou systému Android je vydaný aj Android SDK (Software Development Kit). Android SDK ju súbor nástrojov ktoré slúžia na vývoj aplikácií pre Android. Súčast ou Android SDK je vývojové prostredie Eclipse so zásuvným modelom Android Development Tools, Android SDK Tools a Android Platform Tools. Okrem Android SDK je k dispozícii aj Android NDK (Native Development Kit). Android NDK je súbor nástrojov, ktoré umožňujú implementovat niektoré časti aplikácie v jazyku C alebo C++. Pre určité typy aplikácií to môže byt užitočne, ale pre vývoj väčšiny aplikácií nebude potrebné NDK použit [6]. V roku 2013 bola uvol nená aj prvá verzia integrovaného vývojového prostredia s názvom Android Studio. Android Studio je založené na vývojom prostredí IntelliJ IDEA (komerčné vývojové prostredie pre vývoj v rôznych programovacích jazykoch) [5]. Základným jazykom na vývoj aplikácii je Java. Jedná sa však o akúsi nadstavbu pôvodnej Javy. Niektoré základné knižnice sú odobrané a naopak sú pridané knižnice, ktoré majú lepšie využitie pri práci s mobilnými zariadeniami, ktoré sú omnoho viac obmedzené ako klasické počítače a často trpia napríklad slabou výdržou batérie alebo nedostatkom operačnej pamäte. Program napísaný v Jave je preložený do Java byte-code. Ten sa potom vykonáva na konkrétnej platforme pomocou JVM (Java Virtual Machine). Pri Androide dochádza ešte k jednému kroku navyše. Súbory Java byte-code vo formáte.class sú prevedené do súboru.dex (Dalvik Executable file). Súbor s formátom.dex nie je vykonávaný pomocou JVM ale využíva 4 1. OPERAČNÝ SYSTÉM ANDROID sa DVM (Dalvik Virtual Machine), ktorý je súčast ou systému Android. DVM je open-source softvér, vyvinutý Danom Bornstienom, ktorý ho pomenoval po rybárskej osade na Islande. Na rozdiel od JVM (pracuje so zásobníkom), DVM pracuje s registrami, to mu umožňuje pracovat pri podmienkach, ked je k dispozícií obmedzene množstvo pamäte. DVM okrem iného zaberá menej miesta je rýchlejší, jednoduchší a dokáže spúšt at kódy aj iných programovacích jazykov ako je Java [7]. Vd aka týmto vlastnostiam bol zakomponovaný do operačného systému pre mobilné zariadenia, ktoré majú často k dispozícií iba okresaný hardvér. Pri vydaní verzie Android 4.4 KitKat bolo predstavené aj nové experimentálne prostredie s názvom ART (ART Virtual Machine). ART využíva proces Ahead-of-Time (proces pri ktorom je byte-code prevedený do strojového kódu počas inštalácie). ART v súčasnosti neposkytuje o moc lepši výkon ako DVM, pri niektorých aplikáciách dosahuje dokonca horšie výsledky. Nevýhodou ART je dlhšie inštalovanie aplikácií a to, že zaberajú viac miesta na disku, čo ale pri dnešnej vel kosti úložného priestoru nemusí byt taká vel ká prekážka. 1.2 Bezpečnostné rizika OS Android Ako každý operačný systém aj Android ma svoje bezpečnostné rizika. V roku 2013 až 79% mobilného škodlivého softvéru smerovalo na tento operačný systém [8]. Dôvod prečo si útočníci vyberajú za svoju obet Android, je určite jeho celosvetová rozšírenost [1] a tým pádom sa diery v systéme nájdu ovel a l ahšie, ako pri zariadeniach s menším počtom. Ďalším dôvodom je aj neustále rastúci počet platieb a transakcii, ktoré sa uskutočňujú pomocou mobilného zariadenia s Androidom. Tok peňazí totižto predstavuje pre útočníka potenciálny ciel [9]. Hlavné bezpečnostné rizika Androidu predstavuje: Zodpovednost užívatel ov Aj napriek vysokým číslam útokov a škodlivého softvéru, je Andorid vel mi bezpečný operačný systém. Ma niekol ko vrstiev ochrany proti škodlivému 5 1. OPERAČNÝ SYSTÉM ANDROID softvéru a vyžaduje špeciálne práva od užívatel a aby mohol pristúpit k dátam alebo systému. Avšak Android je otvorený systém, ktorý dôveruje svojim užívatel om a vývojárskej komunite, že robí správne veci. Android dáva užívatel om posledné slovo z akého zdroja aplikáciu inštalujeme a aké jej povolíme prístupové práva (podrobnejšie v podkapitole 2.4.3). A tu sa dostávame ku kameňu úrazu. Užívatelia inštalujú rôzne aplikácie bez toho aby si premysleli, či im niečo nehrozí. Nečítajú hodnotenia aplikácií a vôbec sa nezamýšl ajú nad tým, či napríklad hra, ktorú st ahujú potrebuje prístupové práva ku naším kontaktom alebo možnost prístupu k SMS správam Inštalácia aplikácií z neznámych zdrojov Android umožňuje svojím užívatel om inštalovat aplikácie ktoré nepochádzajú z obchodu Google Play. Pôvodné nastavenie telefónu túto možnost nepovol uje, avšak v nastaveniach systému sa dá jednoduchým spôsobom zapnút možnost inštalovat tieto aplikácie (podrobný návod ako inštalovat aplikácie z iných zdrojov nájdete tu [31]). Toto nastavenie nám umožňuje do zariadenia dostat rôzne aplikácie, ktoré mohli byt z nejakého dôvodu stiahnuté z Google Play alebo aplikácie, ktoré sa na Google Play spoplatnené. Takéto aplikácie potom vo väčšine prípadov obsahujú nejaký škodlivý kód. Tu sa ale opät dostávame k užívatel skej zodpovednosti, je to len užívatelovi, či bude st ahovat aplikácie z oficiálneho obchodu s prípadným príplatkom alebo bude riskovat svoju bezpečnost a získavat aplikácie z tretej strany Google Play Google Play je oficiálna platforma na digitálnu distribúciu aplikácií a rôznych iných doplnkov pre zariadenia s Andoridom. S pripojením na Internet nám umožňuje jednoducho nájst, stiahnut a nainštalovat aplikáciu. Za svoju vel kost vd ačí Google Play najmä vývojárom, ktorý môžu po zaplatení jednorazového poplatku 25$ pridávat neobmedzene množstvo aplikácii [10]. Po pridaní je aplikácia takmer okamžite dostupná na stiahnutie. Tento spôsob však býva aj vel mi často zneužívaný. Aj ked Google predsta- 6 1. OPERAČNÝ SYSTÉM ANDROID vil v roku 2011 softvér Google Bouncer na skenovanie škodlivých aplikácií, najnovšie štúdie ukazujú, že počet útokov na tento systém stále narastá [9] a ani Google Buncer nedokáže odhalit všetky škodlivé aplikácie [11]. Aj pre tieto nedostatky sa odporúča mat nainštalovaný vo svojom zariadení nejaký antivírusový program Fragmentácia Androidu Za úspechom Androidu stojí aj široká škála zariadení, ktoré sú dostupné takmer vo všetkých cenových kategóriách. Google poskytuje otvorený kód výrobcom a ty ho d alej odlad ujú na svoje zariadenia. To spôsobuje, že v rovnakom čase sa používajú rôzne verzie Androidu. Tento jav sa nazýva fragmentácia operačného systému a je najčastejšie spájaný práve s Androidom. V roku 2013 bolo na trhu viac ako chytrých telefónov a tabletov s týmto systémom [12]. Ked sa objaví chyba v systéme, Google ju opraví a poskytne výrobcom novú verziu. Tým však často dlho trvá pokial túto verziu odladia pre svoje zariadenie a poskytnú svojim užívatel om. Vo vel a prípadoch firmy tieto chyby ignorujú a dokonca neposkytujú väčšine zariadení prechod na najnovšiu verziu Androidu. To spôsobuje, že v obehu sú zariadenia so starými verziami systému, ktoré môže útočník l ahšie napadnút. Takmer 20% zariadení používa verziu staršiu ako 4.0 [13]. Obr. 1.1: Aktuálne verzie systému Android v obehu 7 2 APK súbor APK súbor alebo celým názvom Android application package file je súbor, ktorý sa používa na distribúciu a inštaláciu aplikácii na zariadenia s operačným systémom Android. APK súbor spoznáme podl a jeho koncovky.apk. Je to vlastne archívny balíček vo formáte ZIP ale s koncovkou.apk. Vd aka tejto vlastnosti môžeme APK súbor jednoducho otvorit a dostat sa k jeho vnútornej štruktúre (premenujeme koncovku.apk na koncovku.zip a pomocou komprimačného programu ho jednoducho rozbalíme). Po premenovaní a následnom rozbalení nedochádza ku znehodnoteniu APK súboru. Ten je možne bez problémov opät nainštalovat na zariadenie. Po rozbalení obsahuje APK súbor spravidla nasledujúce zložky a súbory, ktoré je možno vidiet na obrázku 2.1. Obr. 2.1: Štruktúra rozbaleného APK súboru V následujúcich podkapitolách si podrobnejšie rozoberieme zložky a súbory, ktoré sa nachádzajú v rozbalenom APK súbore. Ešte predtým sa však budem venovat procesu podpisovania APK súborov, ktorý hrá pri úpravách APK súborov významnú rolu. 2.1 Podpisovanie APK súborov Systém Android vyžaduje od všetkých aplikácií aby boli digitálne podpísané certifikátom, ktorého privátny kl uč je v držaní vývojára aplikácie. Tento certifikát sa využíva na overenie autora aplikácie, nepoužíva sa k tomu aby sa kontrolovalo, ktoré aplikácie môže užívatel nainštalovat na zariadenie. Aplikácia nemusí byt podpísaná certifikačnou autoritou, je prí- 8 2. APK SÚBOR pustné a typické, že aplikácie používajú certifikát s vlastným podpisom. Všetky aplikácie, ktoré chceme nainštalovat na zariadenie musia byt podpísane. V prípade, že aplikácia nie je podpísaná, nebude možné ju nainštalovat dokonca ani na emulátor zariadenia. Ak nainštalovanej aplikácii na zariadení vyprší platnost certifikátu, bude ju možné nad alej používat, systém testuje platnost certifikátu iba pri inštalovaní. Aplikácia sa podpisuje odlišným spôsobom, záleží od toho aký režim zostavenia použijeme na zostavenie našej aplikácie. Existujú dva režimy zostavenia: debug mode - tento režim sa používa ked svoju aplikáciu ladíme a testujeme. Ked dáme aplikáciu zostavit v tomto režime, nástroje na zostavovanie (angl. build tools) použijú utilitu Keytool na vytvorenie špeciálneho ladiaceho kl úča. Pretože nástroje na zostavovanie vytvorili ladiaci kl uč vedia jeho meno aj heslo. Vždy ked potom aplikáciu kompilujeme v ladiacom režime, nástroje na zostavovanie použijú ladiaci kl úč a utilitu Jarsigner a podpíšu náš balíček APK. Utilitu Jarsigner budeme využívat aj pri našej modifikácii, podrobnejšie sa jej budem venovat v kapitole 3, v ktorej budem opisovat aplikácie použité pri modifikácii. Pretože nástroje na zostavovanie poznajú meno a heslo kl úča, nemusíme ich po každom kompilovaní vypĺňat. Aplikáciu podpísanú ladiacim kl účom nie je možné distribuovat, napríklad na Google Play release mode - tento režim používame ked chceme aplikáciu vydat, teda ked chceme aplikáciu distribuovat priamo medzi l udí alebo zverejnit napríklad na Google Play. Ak chceme aplikáciu zostavit v tomto režime potrebujeme mat privátny kl úč, ak ho nemáme môžeme použit utilitu Keytool na jeho vytvorenie. Ak zostavujeme aplikáciu v tomto režime, nástroje na zostavovanie použijú na podpísanie balíčka APK náš privátny kl úč a takisto ako v predchádzajúcom prípade utilitu Jarsigner. V tomto prípade však musíme poskytnút naše meno a heslo, pretože používame náš vlastný certifikát a privátny kl uč [21] 9 2. APK SÚBOR Na podpísane APK súborov sa používa súbor s koncovkou.keystore (v prípade ladiaceho kl úču je celý názov debug.keystore). Po podpísaní aplikácie sa odporúča použit utilitu Zipalign na optimalizovanie APK balíčka. 2.2 META-INF V zložke META-INF sa nachádzajú dáta, ktoré slúžia na overenie integrity APK súboru a systémovej bezpečnosti [14]. V tejto zložke sa nachádzajú nasledujúce tri súbory: MANIFEST.MF - obsahuje SHA-1 hashe všetkých súborov v balíčku APK CERT.SF - tak isto ako MANIFEST.FM obsahuje všetky súbory, ktoré sa nachádzajú v balíčku APK, ale ku každému súboru pripadá SHA-1 hash toho, čo sa nachádza v súbore MANIFEST.FM CERT.RSA - skutočný podpis balíčka APK sa nachádza v tomto súbore. Obsahuje taktiež verejný kl úč na overenie podpisu [15] APK súbor, ktorý nie je podpísaný túto zložku neobsahuje. META-INF slúži na overenie, či zložky nachádzajúce sa v APK súbore neboli pozmenené. Je teda nemožné zmenit jeho obsah pri obyčajnom rozbalení. V prípade zmeny obsahu nebude možné balíček APK nainštalovat na zariadenie. 2.3 res Táto zložka v podstate reprezentuje výzor aplikácie. Obsahuje obrázky a ikony v rôznych rozlíšeniach (kvôli podpore zariadení s rôznou vel kost ou rozlíšenia obrazovky) a zvuky. Tieto zdroje sú potom volané komponentmi zvanými aktivity, ktorým sa budem venovat neskôr (vid ). Zdroje (obrázky, ikony, zvuky a pod) APK súboru môžeme l ubovol ne upravovat a nemu
Related Search
We Need Your Support
Thank you for visiting our website and your interest in our free products and services. We are nonprofit website to share and download documents. To the running of this website, we need your help to support us.

Thanks to everyone for your continued support.

No, Thanks