Hogyan változtassunk játékfájlokat androidon. Az Android rendszeralkalmazások (apk) szerkesztésének alapjai

Szerkesztés rendszeralkalmazások Az Android rendszert leggyakrabban akkor hajtják végre, amikor az operációs rendszer által vezérelt okostelefon, táblagép vagy más eszköz felhasználója már nem elégíti ki az aktuális kinézet a gyártó vagy az eladó által a készülékbe telepített programokat. Egy másik ok lehet, hogy nem csak az Android alkalmazások grafikai tervezésében kell változtatásokat végrehajtani, hanem az egyes elemek elhelyezkedését és az alapfunkciók teljesítményét is érinti.

A kód módosításához alapvető programozási ismeretekre van szükség szinte minden nyelven (lehetőleg Java és C ++). A grafika helyettesítésére a közvetlen kezek és a grafikus szerkesztőben való munkavégzés is megteszi.

Mindenekelőtt el kell döntenie, hogy csak a grafikát kell cserélni az Android alkalmazásokban, vagy módosítani kell az elemek elrendezését a rendszerben, és mélyebb változtatásokat kell végrehajtania a kódban. A további lépések ettől függenek, amelyek magukban foglalják az alkalmazás archívumkénti használatát, vagy annak teljes szétszerelését és szerkesztését.

Grafika módosítása Android rendszeralkalmazásokban

Az eredeti grafika egyszerű cseréjéhez vagy módosításához (gombszínek megváltoztatása, képek újrarajzolása stb.) elég egy szabványos WinRAR archiváló. Ugyanakkor a felhasználónak „root” jogokkal kell rendelkeznie az eszközön (hasonlóan a fiókot rendszergazda Windows rendszeren), és kívánatos egy alternatív helyreállítási (CWM) és egy gyökérböngésző (az Android fájlrendszer közvetlen eléréséhez magán az eszközön).

Először is engedélyeznie kell az USB hibakeresést az eszközön, majd USB-kábellel csatlakoztassa a számítógéphez, és telepítse a szükséges illesztőprogramokat. Általában egy virtuális lemezen találhatók, amely akkor jelenik meg, amikor számítógéphez csatlakozik.

Ezután le kell töltenie a fájlkezelő ADB bővítményét is az internetről. Ez a beépülő modul lehetővé teszi, hogy a teljes Android rendszert mappákkal ellátott, csatlakoztatott meghajtóként tekintse meg. Az összes rendszeralkalmazás a /system/app és a /system/framework címen található. Miután megtalálta a kívánt alkalmazást, egyszerűen másolja át a számítógépére. Ha a beépülő modul nincs telepítve, a root Explorer segítségével átmásolhatja az apk kiterjesztésű alkalmazást egy cserélhető SD-kártyára, majd onnan a számítógépére.

Másolás után kívánt alkalmazást elkezdheti a grafika szerkesztését. Mellesleg, az Android alkalmazásokban lévő összes kép mentésre kerül png formátumban, amelyet bármely grafikus szerkesztő könnyedén megnyithat. Amikor megnyitja az alkalmazásfájlt a WinRAR segítségével, számos mappát láthat. Minket csak a res mappa fog érdekelni, amiben viszont nagyon sok különböző mappákat. Ezek közül csak azokra van szükség, amelyek nevében szerepel a "rajzolható" szó.

Most pedig emlékezzünk az eszköztípusunkra és annak képernyőfelbontására. Ha ez egy okostelefon, és a felbontás 240x320, akkor elsősorban a rajzolható és rajzolható-ldpi mappákra leszünk kíváncsiak. Ha a felbontás 320x480 - a rajzolható és a rajzolható-mdpi mappákat, illetve a 480x800-as felbontást - a rajzolható és rajzolható-hdpi mappákat. Rajtuk kívül általában vannak még mappák is, amelyek nevében szerepel a "land" szó – ezek a portré módhoz való grafikák, pl. amikor a készülék meg van döntve.

Ha táblagép van a kezében, akkor csak a rajzolható és rajzolható-mdpi mappákra leszünk kíváncsiak bármilyen képernyőfelbontás mellett.

A kiválasztott mappák számítógépre másolásával az eredeti képeket kicserélheti vagy átszínezheti a kívánt és a szemnek tetszőre. Különös figyelmet kell fordítani a 9.png felbontású képekre. A helyzet az, hogy egy ilyen kép kerülete mentén egy speciális, egy pixel széles keret található speciális jelekkel, amelyek integritásának megsértése az alkalmazás meghibásodásához vezet. Ezért az ilyen fájlok szerkesztésekor fokozott óvatossággal kell eljárni.

A mappa szerkesztése után vissza kell töltenie az archívumba, ami maga az alkalmazás apk kiterjesztéssel. Ebben az esetben ki kell választani a „nincs tömörítés” opciót a WinRAR-ban.

A javított alkalmazás vagy a root explorer segítségével töltődik vissza a készülékre (először a fájl az SD kártyára másolódik, majd onnan az eszközre), vagy a helyreállításból való kilépés után - azonnal a számítógépről a / system / app, ill. / system / framework mappa . Ezután be kell állítania a fájljogosultságokat a gyökérkezelő vagy az ADB beépülő modul megfelelő beállításaival. 644-es formátumban kell lenniük A készülék újraindítása után láthatjuk a frissített alkalmazás eredményét.

Rendszeralkalmazások forráskódjának szerkesztése

Kicsit több erőfeszítésre van szükség a rendszeralkalmazások forráskódjának szerkesztéséhez. Az alkalmazás szétszedéséhez és összeállításához a módosítások elvégzése után végre kell hajtania a következő lépések közül néhányat.

1) Telepítse a szükséges szoftvercsomagot a számítógépére legújabb verziói: Java SE Runtime Environment és Android SDK Windows (alkalmazásokkal és összetevőikkel kapcsolatos programok), APKtool vagy APKManager vagy Firmware_tool (a három program egyike a rendszeralkalmazások szétszedésére és visszafordítására), NotePad ++ szerkesztő (a módosítások végrehajtásához forrás Android rendszeralkalmazások).

2) Engedélyezze az USB hibakeresést az eszközön, csatlakoztassa a számítógéphez USB-kábellel, telepítse a szükséges illesztőprogramokat az eszközzel való működéshez.

3) A fenti programok egyikével az alkalmazáskóddal való munkavégzéshez ki kell bontania a / system / framework mappát (teljesen) a telefonról a program és a rendszeralkalmazások megfelelő mappájába a / system / app mappából. Például a Firmware_tool program esetében a telefonról származó fájlokat át kell másolni a megfelelő almappák C: Firmwaretoolfw_project1_source2_system.img_unpacked mappájába (alkalmazások az alkalmazás mappájába, fájlok a keretrendszerből a keretmappába). Ha ezt és más programokat is használja, feltétlenül olvassa el a hozzájuk tartozó utasításokat.

4) Telepítse a "referencia keretrendszert", azaz. szabályokat, amelyek szerint az alkalmazások dekompilációja (azaz kód szétszedése) és összeállítása (azaz kódösszeállítás) történik.

Ezzel befejeződik a rendszeralkalmazásokkal való munka előkészítése.

Az alkalmazások készülékről való eltávolítása és visszatöltése a „Grafika módosítása Android rendszeralkalmazásokban” részben leírt eljáráshoz hasonlóan történik.

Az Android-alkalmazás kódjának szerkesztése általában a NotePad ++ szerkesztővel történik - az egyik legkényelmesebb szövegszerkesztő, amely képes kiemelni a kiválasztott programozási nyelv szintaxisát. Szerkesztéskor általában a kiválasztott grafikát is módosíthatja grafikus szerkesztő.

A szerkesztés befejeztével a módosított alkalmazás újra betöltődik a készülékbe, és magát az eszközt újra kell indítani. A fejlettebb szerkesztők az alkalmazások hibakeresésére az eszközre való letöltés előtt különféle emulátorokat használnak, például a Google Eclipse-jét.

Ez megint én vagyok, és az én utasításaim a teáskannákhoz és kávéskannákhoz képekkel.

Ezúttal a cserét részletezem rendszer összetevők Android OS az állapotsor módosításának telepítésének példáján.

Az Android egy kis Linux. A fájlok cseréjénél számos szabályt be kell tartani, hogy a telefon ne váljon téglává, amit csak egy teljes villogással lehet újraéleszteni, minden adat elvesztésével. belső memória eszközöket. A belső partíciók a flash meghajtókon a FAT32-től eltérő fájlrendszerben vannak formázva. A fájltulajdonságok többek között a különböző felhasználói csoportok (fájltulajdonos, fájltulajdonos csoport, egyéb felhasználók) engedélyeit tárolják. Amikor a rendszerfájlokat el kell menteni őket, mert előfordulhat, hogy rendszerindításkor a rendszer egyszerűen nem tudja elérni őket, és nem indul el normálisan.
Kezdjük az eszköztárral.

Szükségünk lesz:

  • Fájlkezelő, amely tudja, hogyan kell dolgozni a root jogokkal és a fájlengedélyekkel. A Root Explorer a legjobb (megvetted, igaz?)
  • Maga a módosított fájl, amit a rendszeres helyére szeretnénk tenni (link a cikk végén).

Most az egyik kényelmes funkciót használjuk gyökérfelfedező. Koppintson hosszan a kívánt fájlra a helyi menü előhívásához

És kattintson az elemre " Zip ezt a fájlt", hogy a fájlt zip archívumban mentse az SD-kártyára. Archiválás után a következő üzenetet kapjuk:

Nyomja meg a gombot " marad", hogy maradjon a mappában, és tegyen még egy dolgot.

Most minden készen áll a fájl cseréjére.
Már beszéltem az egyes fájlok hozzáférési jogairól. Ha új fájlon szeretné újra létrehozni őket, először meg kell néznie őket a régiből. Ezeket egy sor karakter képviseli: "rwxrwxrwx". 1. triád – tulajdonosi jogok, 2. – tulajdonosi csoportok, 3. – minden más felhasználó. Fájlunk "rw-r--r--" engedélyekkel rendelkezik.

Most lépjen az SD-kártyára, keresse meg ott a módosított fájlt, és válassza ki az elemet " Másolat", de nem sietünk azonnal kiválasztani a "/system/app" mappát, mert azonnal károsítjuk a rendszert. Ehelyett a fájlt egy speciális mappába másoljuk az ideiglenes fájlok számára "/data/local/tmp ", hogy a fájl olyan formába kerüljön, amely a rendszert veszi.
Először hívja meg a fájl helyi menüjét, és válassza ki a " Átnevezés", és írja be a "SystemUI.apk" fájlnevet. Ez így van, mert Linuxon a névben szereplő betűk kis- és nagybetűi számítanak, azaz a "systemui.apk" és a "SystemUI.apk" különböző fájlok.
Ezután meg kell változtatnia a fájl engedélyeit, mert most már szinte biztosan rosszul vannak beállítva. Ehhez ismét hívja meg a fájl helyi menüjét hosszú érintéssel, és válassza ki a " Engedélyek". Az "rw-r--r--" értékünkhöz a zászlókat a következőképpen kell beállítani:

Nyomja meg " rendben", és hívja újra a helyi menüt. Most meg kell változtatnunk az alkalmazás tulajdonosát és csoportját. Ehhez válassza ki a " Tulajdonos megváltoztatása Megjelenik egy ablak a fájl jelenlegi tulajdonosával kapcsolatos információkkal.
Itt egy kis kitérőt kell tenni.
A "/system/app " mappában minden fájl a "root" felhasználó (uid=0) és a "root" csoport (gid=0) tulajdona, a "/system/framework" mappában pedig a "system" felhasználó " (gid=1000) tulajdonosa és a "rendszer" csoport (gid=1000).
A fentiek alapján állítsa be a kívánt értékeket, majd kattintson a " rendben".
És harmadszor hívjuk meg a fájl helyi menüjét, és válasszuk ki az elemet " Másolat" és a másolási párbeszédpanelen lépjen a " / system / app" mappába. Most bátran kattintson a " paszta"és figyelmesen olvassa el.
A rendszer szinte azonnal jelzi, hogy az állapotsor folyamata hirtelen véget ért, és felajánlja az indítást. Minden próbálkozás sikertelen lesz. Az ablakok megjelenése között időre van szüksége számos művelet elvégzésére. A gomb megnyomása előtt meg kell hívni a készülék kikapcsolási menüjét, ez figyelmeztetés alatt jelenik meg. Most körülbelül a gomb bal oldalára kell helyeznie az ujját. Most nagyon gyorsan háromszor kell kattintania az ujjával, hogy legyen ideje bezárni a figyelmeztetést, válassza ki a leállítási elemet és erősítse meg szándékát.
Most arra várunk, hogy a telefon kikapcsoljon, újraindítsa és élvezze az eredményt, vagy ne élvezze és keresse a hibákat.

Néha egyes Android-alkalmazások valamilyen okból nem felelnek meg a felhasználónak. Ilyen például a bosszantó hirdetések. És ez így történik - mindenkinek jó a program, de csak a fordítás ferde, vagy teljesen hiányzik. Vagy például a program próba, és kap teljes verzió nincs lehetőség. Hogyan lehet változtatni a helyzeten?

Bevezetés

Ebben a cikkben arról fogunk beszélni, hogyan lehet szétszedni az APK-t egy alkalmazással, megnézzük a belső szerkezetét, szétszedjük és visszafordítjuk a bájtkódot, valamint megpróbálunk több olyan változtatást végrehajtani az alkalmazásokon, amelyek ilyen vagy olyan előnyöket hozhatnak számunkra.

Ahhoz, hogy mindezt saját kezűleg megtehesd, legalább alapismeretekre lesz szükséged a Java nyelvről, amelyen az Android alkalmazások íródnak, és az XML nyelvről, amelyet az Androidban mindenhol használnak – magának az alkalmazásnak és hozzáférési jogainak leírásától a karakterláncok tárolásáig. amely megjelenik a képernyőn. Szüksége lesz speciális konzolszoftverek kezelésére is.

Tehát mi az az APK-csomag, amelyben abszolút az összes Android-szoftvert terjesztik?

Alkalmazás dekompiláció

A cikkben csak szétszedett alkalmazáskóddal dolgoztunk, azonban ha komolyabb változtatásokat hajt végre a nagy alkalmazásokon, akkor sokkal nehezebb lesz megérteni a smali kódot. Szerencsére a dex kódot vissza tudjuk fordítani Java kódra, ami ugyan nem eredeti és nem is visszafordítható, de sokkal könnyebben olvasható és megérthető az alkalmazás logikája. Ehhez két eszközre van szükségünk:

  • dex2jar - a Dalvik bájtkód fordítója JVM bájtkódra, amely alapján Java kódot kaphatunk;
  • A jd-gui maga egy visszafejtő, amely lehetővé teszi, hogy olvasható Java kódot kapjon a JVM bájtkódból. Alternatív megoldásként használhatja a Jad-et (www.varanecas.com/jad); bár elég régi, bizonyos esetekben olvashatóbb kódot generál, mint a Jd-gui.

Ezeket így kell használni. Először elindítjuk a dex2jar-t, argumentumként megadva az apk-csomag elérési útját:

%dex2jar.sh mail.apk

Ennek eredményeként az aktuális könyvtárban megjelenik a mail.jar Java csomag, amely már megnyitható jd-gui-ban a Java kód megtekintéséhez.

APK-csomagok rendezése és beszerzése

Nejlonzacskó android alkalmazások, valójában egy normál ZIP fájl, amelynek tartalmának megtekintéséhez és kicsomagolásához nincs szükség speciális eszközökre. Elég egy archiváló - 7zip Windowshoz vagy konzolos kicsomagolás Linuxban. De ez a burkolatról szól. Mi van benne? Belül általában a következő szerkezettel rendelkezünk:

  • META-INF/- tartalmaz digitális tanúsítvány a készítőjét tanúsító alkalmazás, valamint a csomagfájlok ellenőrző összegei;
  • res/ - különféle erőforrások, amelyeket az alkalmazás a munkája során használ, például képek, a felület deklaratív leírása és egyéb adatok;
  • AndroidManifest.xml- a pályázat leírása. Ez magában foglalja például a szükséges engedélyek listáját android verzióés a szükséges képernyőfelbontás;
  • osztályok.dex- lefordított alkalmazás bytecode a Dalvik virtuális géphez;
  • források.arsc- források is, de más jellegűek - különösen karakterláncok (igen, ez a fájl oroszosításra használható!).

A felsorolt ​​fájlok és könyvtárak, ha nem is az összesben, de talán az APK-k túlnyomó többségében megtalálhatók. Van azonban néhány kevésbé gyakori fájl/könyvtár, amelyet érdemes megemlíteni:

  • eszközök- az erőforrások analógja. A fő különbség az, hogy egy erőforrás eléréséhez ismerni kell az azonosítóját, míg az eszközök listája az alkalmazás kódjában található AssetManager.list() metódussal dinamikusan beszerezhető;
  • lib- NDK (Native Development Kit) segítségével írt natív Linux könyvtárak.

Ezt a könyvtárat használják a játékgyártók arra, hogy a C/C++ nyelven írt játékmotorjukat ott helyezzék el, valamint a nagy teljesítményű alkalmazások készítői (pl. Google Chrome). Megértette a készüléket. De hogyan lehet hozzájutni az érdekelt alkalmazás csomagfájljához? Mivel rootolás nélkül nem lehet letölteni az APK fájlokat az eszközről (az / data / app könyvtárban vannak), és a rootolás nem mindig tanácsos, legalább háromféleképpen juthat el az alkalmazásfájl a számítógépre:

  • APK Downloader bővítmény Chrome-hoz;
  • Valódi APK Leecher alkalmazás;
  • különféle fájltárolás és warezniki.

Hogy melyiket használjuk, az ízlés dolga; mi inkább külön alkalmazásokat használunk, ezért leírjuk a Real APK Leecher használatát, főleg, hogy Java nyelven íródott, és ennek megfelelően még Windows alatt is működik, még nix-ben is.

A program elindítása után három mezőt kell kitölteni: Email, Jelszó és Eszközazonosító - és válasszon nyelvet. Az első kettő az eszközön használt Google-fiókjának e-mail címe és jelszava. A harmadik az eszközazonosító, amelyet a tárcsázó kódjának tárcsázásával kaphat meg # #8255## majd keresse meg az Eszközazonosító sort. Kitöltéskor csak az azonosítót kell megadni az android-előtag nélkül.

A kitöltés és mentés után gyakran megjelenik a „Hiba a szerverhez való csatlakozáskor” üzenet. Semmi köze hozzá A Google Play, ezért nyugodtan hagyja figyelmen kívül, és keressen olyan csomagokat, amelyek érdeklik.

Felülvizsgálat és módosítás

Tegyük fel, hogy talált egy olyan csomagot, amely érdekli, letöltötte, kicsomagolta... és amikor megpróbált megtekinteni egy XML-fájlt, meglepődve tapasztalta, hogy a fájl nem szöveges fájl. Hogyan lehet visszafejteni és általában hogyan kell csomagokkal dolgozni? Valóban szükséges az SDK telepítése? Nem, nem kell telepítenie az SDK-t. Valójában az APK-csomagok kicsomagolásának, módosításának és csomagolásának minden lépéséhez a következő eszközökre van szükség:

  • ZIP archiváló ki- és csomagoláshoz;
  • smali- Dalvik virtuális gép bájtkód összeszerelő/bontó (code.google.com/p/smali);
  • aapt- eszköz az erőforrások csomagolására (alapértelmezés szerint az erőforrásokat bináris formában tárolják az alkalmazás teljesítményének optimalizálása érdekében). Az Android SDK része, de külön is beszerezhető;
  • Aláíró- eszköz digitális aláírás módosított csomag (bit.ly/Rmrv4M).

Ezeket az eszközöket külön-külön is használhatja, de ez kényelmetlen, ezért érdemes magasabb szintű, ezekre épített szoftvereket használni. Ha Linuxot vagy Mac OS X-et használ, van egy apktool nevű eszköz. Lehetővé teszi az erőforrások eredeti formájukba való kicsomagolását (beleértve a bináris XML és arsc fájlokat), a csomag újraépítését a módosított erőforrásokkal, de nem tudja, hogyan kell aláírni a csomagokat, ezért manuálisan kell futtatnia az aláíró segédprogramot. Annak ellenére, hogy a segédprogram Java nyelven íródott, telepítése meglehetősen nem szabványos. Először magát a jar fájlt kell beszereznie:

$ 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

Ha Windows-on dolgozol, akkor van rá egy kiváló eszköz, a Virtual Ten Studio, amely szintén felhalmozza ezeket az eszközöket (beleértve magát az apktool-t is), de a CLI felület helyett egy intuitív grafikus felületet biztosít a felhasználónak, amellyel néhány kattintással kicsomagolási, szétszerelési és visszafordítási műveleteket hajthat végre. Ez az eszköz Donation-ware, vagyis időnként megjelennek az ablakok, amelyek engedélyt kérnek, de ez végül is elviselhető. Leírni nincs értelme, mert pár perc alatt megérted a felületet. De az apktool konzol jellegéből adódóan részletesebben tárgyalandó.


Fontolja meg az apktool beállításait. Röviden, három fő parancs létezik: d (dekódolás), b (build) és if (keretrendszer telepítése). Ha az első két paranccsal minden világos, akkor mit csinál a harmadik, a feltételes operátor? Kibontja a megadott UI keretrendszert, amelyre egy rendszercsomag boncolásakor van szükség.

Tekintsük az első parancs legérdekesebb lehetőségeit:

  • -s- ne szedje szét a dex fájlokat;
  • -r- ne csomagolja ki az erőforrásokat;
  • -b- ne illesszen be hibakeresési információkat a dex fájl szétszerelésének eredményébe;
  • --frame-path- használja a megadott UI keretrendszert a beépített apktool helyett. Most fontoljon meg néhány lehetőséget a b parancshoz:
  • -f- kényszerszerelés a változtatások ellenőrzése nélkül;
  • -a- adja meg az aapt (az APK archívum létrehozására szolgáló eszköz) elérési útját, ha valamilyen okból más forrásból szeretné használni.

Az apktool használata nagyon egyszerű, mindössze annyit kell tennie, hogy megadja az egyik parancsot és az APK elérési útját, például:

$ apktool d mail.apk

Ezt követően az összes kibontott és szétszedett csomagfájl megjelenik a levelezőkönyvtárban.

Készítmény. Hirdetések letiltása

Az elmélet persze jó, de miért van rá szükség, ha nem tudunk mit kezdeni a kicsomagolt csomaggal? Próbáljuk meg a saját hasznunkra alkalmazni az elméletet, mégpedig úgy, hogy néhány szoftvert úgy módosítunk, hogy az ne mutasson nekünk hirdetéseket. Legyen például Virtual Torch – virtuális fáklya. Számunkra ez a szoftver tökéletes, mert tele van idegesítő reklámokkal, és elég egyszerű ahhoz, hogy ne vesszen el a kód vadonjában.


Tehát a fenti módszerek egyikével töltse le az alkalmazást a piacról. Ha a Virtuous Ten Studio használata mellett dönt, nyissa meg az APK fájlt az alkalmazásban, és csomagolja ki, ehhez hozzon létre egy projektet (Fájl -> Új projekt), majd válassza a Fájl importálása lehetőséget a projekt helyi menüjéből. Ha a választás az apktool-ra esett, akkor elegendő egy parancsot végrehajtani:

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

Ezt követően egy fájlfa jelenik meg a com.kauf.particle.virtualtorch könyvtárban, hasonlóan az előző részben leírtakhoz, de a dex fájlok helyett egy további smali könyvtárral és egy apktool.yml fájllal. Az első az alkalmazás futtatható dex fájljának szétszedett kódját tartalmazza, a második az apktool által a csomag visszaállításához szükséges szolgáltatási információkat tartalmazza.

Az első hely, amelyet meg kell keresnünk, természetesen az AndroidManifest.xml. És itt azonnal találkozunk a következő sorral:

Könnyen kitalálható, hogy ő a felelős azért, hogy az alkalmazás engedélyeit megadja az internetkapcsolat használatához. Sőt, ha csak meg akarunk szabadulni a reklámoktól, nagy valószínűséggel elég lesz letiltanunk az alkalmazást az internetről. Próbáljuk meg csinálni. Törölje a megadott sort, és próbálja meg lefordítani a szoftvert az apktool segítségével:

$ apktool b com.kauf.particle.virtualtorch

Az eredményül kapott APK-fájl a com.kauf.particle.virtualtorch/build/ könyvtárban fog megjelenni. Viszont nem telepíthető, mert nincs digitális aláírása és fájlellenőrző összege (egyszerűen nincs META-INF/ könyvtára). A csomagot alá kell írnunk az apk-signer segédprogrammal. Elindult. A felület két lapból áll - az elsőn (Key Generator) kulcsokat hozunk létre, a másodikon (APK Signer) aláírjuk. Privát kulcsunk létrehozásához töltse ki a következő mezőket:

  • Célfájl- kulcstároló kimeneti fájl; általában egy pár kulcsot tárol;
  • JelszóÉs megerősít- jelszó a tároláshoz;
  • Álnév- a kulcs neve az adattárban;
  • Alias ​​jelszóÉs megerősít- titkos kulcs jelszava;
  • Érvényesség- Érvényességi idő (években). Az alapértelmezett érték az optimális.

A többi mező általában nem kötelező, de legalább egyet ki kell töltenie.


FIGYELEM

Egy alkalmazás apk-signer segítségével történő aláírásához telepítenie kell az Android SDK-t, és meg kell adnia a teljes elérési utat az alkalmazás beállításaiban.

Minden információ csak tájékoztató jellegű. Sem a szerkesztők, sem a szerző nem vállal felelősséget a cikk anyagai által okozott esetleges károkért.

Most már aláírhatja az APK-t ezzel a kulccsal. Az APK-aláíró lapon válassza ki az újonnan generált fájlt, adja meg a jelszót, a kulcs álnevet és a jelszót, majd keresse meg az APK fájlt, és bátran kattintson az "Aláírás" gombra. Ha minden jól megy, a csomagot aláírják.

INFO

Mivel a csomagot saját kulcsunkkal írtuk alá, az ütközni fog az eredeti alkalmazással, ami azt jelenti, hogy amikor a piacon keresztül próbáljuk frissíteni a szoftvert, hibaüzenetet kapunk.

Csak a harmadik féltől származó szoftvereknek van szüksége digitális aláírásra, így ha úgy módosítja a telepített rendszeralkalmazásokat, hogy átmásolja azokat a /system/app/ könyvtárba, akkor nem kell aláírnia azokat.

Ezt követően ejtjük a csomagot az okostelefonon, telepítjük és futtatjuk. Voila, a hirdetés eltűnt! Ehelyett azonban egy üzenet jelent meg, hogy nincs internetünk, vagy nem rendelkezünk a megfelelő jogosultságokkal. Elméletileg ez elég is lehet, de az üzenet bosszantónak tűnik, és őszintén szólva egy hülye alkalmazáshoz szerencsénk volt. Egy jól megírt szoftver valószínűleg tisztázza a hitelesítő adatait, vagy ellenőrzi az internetkapcsolatot, és egyébként egyszerűen megtagadja az indítást. Hogyan lehet ebben az esetben? Természetesen módosítsa a kódot.

Jellemzően az alkalmazáskészítők speciális osztályokat hoznak létre a hirdetések megjelenítésére és ezen osztályok metódusainak meghívására az alkalmazás vagy annak valamelyik „tevékenysége” (egyszerű szóval alkalmazásképernyő) során. Próbáljuk meg megtalálni ezeket az osztályokat. Megyünk a smali könyvtárba, majd a com-ba (az org-ban csak egy nyitott grafikus könyvtár cocos2d), majd a kauf (pontosan ott, mert ez a fejlesztő neve és ott van az összes kódja) - és itt van, a marketing könyvtár. Belül egy csomó smali kiterjesztésű fájlt találunk. Ezek osztályok, és ezek közül a legfigyelemreméltóbb az Ad.smali osztály, amelynek nevéből könnyen kitalálható, hogy hirdetéseket jelenít meg.

Megváltoztathatnánk a működésének logikáját, de sokkal könnyebb lenne ostobán eltávolítani a metódusainak hívását magából az alkalmazásból. Ezért kilépünk a marketing könyvtárból, és a szomszédos részecskekönyvtárba, majd a virtualtorch-ba lépünk. speciális figyelem a MainActivity.smali fájl megérdemli. Ez egy szabványos Android osztály, amelyet az Android SDK generál, és az alkalmazás belépési pontjaként van beállítva (hasonlóan fő funkciókat a C). Nyissa meg a fájlt szerkesztésre.

Belül a smali kód (helyi assembler). Alacsony szintű jellege miatt meglehetősen zavaros és nehezen olvasható, ezért nem tanulmányozzuk, hanem egyszerűen megkeressük a kódban az Ad osztály összes említését, és kommentáljuk. A "Hirdetés" karakterláncot beírjuk a keresésbe, és eljutunk a 25. sorhoz:

Field privát hirdetés:Lcom/kauf/marketing/Ad;

Itt egy mezőhirdetés jön létre az Ad osztályba tartozó objektumok tárolására. A ### jelet a sor elé állítva kommentálunk. Folytatjuk a keresést. 423. sor:

Új példány v3, Lcom/kauf/marketing/Ad;

Itt jön létre az objektum. Kommentálunk. Folytatjuk a keresést, és a 433-as, 435-ös, 466-os, 468-as, 738-as, 740-es, 800-as és 802-es sorban megtaláljuk az Ad osztály metódusainak hívását. Kommentálunk. Úgy néz ki, ez az. spórolunk. Most a csomagot vissza kell szerelni, és ellenőrizni kell a teljesítményét és a reklámok jelenlétét. A kísérlet tisztasága érdekében visszaküldjük az AndroidManifest.xml fájlból eltávolított sort, összegyűjtjük a csomagot, aláírjuk és telepítjük.

Tengerimalacunk. Látható reklám

Op-pa! A reklám csak az alkalmazás futása közben tűnt el, de a főmenüben maradt, amit a szoftver indításakor látunk. Szóval várj, de a belépési pont a MainActivity osztály, és az alkalmazás futása közben a hirdetés eltűnt, de a főmenüben maradt, tehát más a belépési pont? A valódi belépési pont felfedéséhez újra megnyitjuk az AndroidManifest.xml fájlt. És igen, a következő sorokat tartalmazza:

Azt mondják nekünk (és ami még fontosabb, az androidnak), hogy a Start nevű tevékenységet az android.intent.action.MAIN szándék (esemény) generálására válaszul kell elindítani az android.intent.category.LAUNCHER kategóriából. Ez az esemény akkor jön létre, amikor megérinti az alkalmazás ikonját az indítóban, így ez határozza meg a belépési pontot, nevezetesen a Start osztályt. Valószínűleg a programozó először írt egy főmenü nélküli alkalmazást, aminek a belépési pontja a szokásos MainActivity osztály volt, majd hozzáadott egy új menüt tartalmazó ablakot (tevékenységet), amely a Start osztályban van leírva, és manuálisan tette bejegyzést pont.

Megnyitjuk a Start.smali fájlt, és ismét megkeressük az „Ad” sort, a 153. és 155. sorban találjuk a FirstAd osztály említését. A forráskódban is benne van, és a névből ítélve felelős a hirdetések főképernyőn való megjelenítéséért. Tovább nézünk, ott van a FirstAd osztály egy példányának létrehozása és egy intent, az ehhez a példányhoz kapcsolódó kontextusnak megfelelően, majd a cond_10 címke, amelyre a feltételes átmenet pontosan az osztály példányának létrehozása előtt történik. :

If-ne p1, v0, :cond_10 .line 74 new-példány v0, Landroid/content/Intent; ... :cond_10

Valószínűleg a program valahogy véletlenszerűen kiszámítja, hogy megjelenjenek-e a hirdetések a főképernyőn, és ha nem, akkor közvetlenül a cond_10-re ugrik. Rendben, egyszerűsítsük a feladatát, és cseréljük ki a feltételes átmenetet egy feltétel nélkülire:

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

A kódban már nincs említés a FirstAd-ról, ezért bezárjuk a fájlt, és az apktool segítségével újra összeállítjuk a virtuális zseblámpát. Másolás okostelefonra, telepítés, futtatás. Voila, minden hirdetés eltűnt, gratulálunk mindannyiunknak.

Eredmények

Ez a cikk csak egy rövid bevezetés az Android alkalmazások megnyitásának és módosításának módszereibe. Sok probléma a színfalak mögött maradt, mint például a védelem eltávolítása, az obfuszkált kód elemzése, az alkalmazási erőforrások lefordítása és cseréje, valamint a következővel írt alkalmazások módosítása. android használatával NDK. Az alapismeretek birtokában azonban mindezek megértése csak idő kérdése.

Ebből a cikkből megtudhatja, miből áll egy androidos alkalmazás, hogyan lehet megnyitni egy APK fájlt és milyen programokkal.

Mi az APK fájl?

APK formátum operációs rendszer Android, amely a végrehajtható alkalmazásfájlok archiválására szolgál, és magának a fájlnak a neve bármi lehet, de a kiterjesztésnek csak .apk-nak kell lennie. Az APK analógjai más operációs rendszerekben a .msi a Windowsban, a .sis a Symbianban, az .rpm vagy a .deb a Linuxban.

Lássuk, mi van belül
Valójában az .apk egy ZIP-archívum, így bármelyik eszközzel megtekintheti a belső eszközt fájl kezelő vagy egy archiváló, mint a WinRAR vagy mobilos alkalmazás Xplore.





Ugyanakkor érdemes megjegyezni, hogy a belső erőforrásokhoz csak vizuális hozzáférést kap, a szerkesztési lehetőségek rendkívül korlátozottak.
Vegye figyelembe a szerkezetet
Az .apk-ban számos fájlt és mappát látunk, nézzük meg, mire valók:
  • Az AndroidManifest.xml az alkalmazás egyfajta "útlevele", amelyből megtudhatja az összes fő pontot, követelményt, verziót, engedélyeket stb.
  • META-INF Ez a fájl metaadatokat tartalmaz, azaz adatokat az adatokról, ellenőrző összegekről, adatútvonalakról, erőforrás útvonalakról és ellenőrző összegekről, tanúsítványokról. Ezt a fájlt bármelyik gombbal megnyithatja szöveg szerkesztő, de a Notepad++ ajánlott.
  • A res mappa tartalmazza az összes programforrást, grafikusan, mint például ikonok, képek, szövegek, elemek GUI. Könnyen hozzáférhet a mappához is.
  • osztályok.dex – azonnali programozási kód futó alkalmazások Virtuális gép Dalvik VM, csak az .apk visszafordításával láthatja, hogy mi van ebben a fájlban, erről más cikkekben fogunk beszélni. források.arsc -összeállított XML fájl, ez a fájl a programban érintett összes erőforrás adatait tartalmazza.
  • lib - natív könyvtárakat tartalmazó mappa, amelynek erőforrásai csak speciális programok használata esetén érhetők el. Az APK-ban is lehetnek olyan fájlok és mappák, mint com, org, udk, de nem mindig.

Most nézzük meg részletesebben a belső felépítést, ehhez szükségünk van egy decompiler programra, Java-ra és egy APK fájlra. Az .apk szétszedésének fő eszköze az Apktool, de ez a program csak vonalról működik, ami nem túl kényelmes. A gyorsabb és kényelmesebb elemzés érdekében használhatja az APKinget, ez továbbra is ugyanaz az Apktool, de a helyi menüből is működik.
Így telepítjük az APKing-t, mint bármely Windows-alkalmazást, és az .apk-t kiválasztva rákattintunk a jobb egérgombbal és egyben a Shift billentyűvel, ami után a következőket fogjuk látni:


És kiválasztjuk a szükséges műveletet, például teljesen dekompilálni, majd a program befejezi a műveletet, és létrehoz egy azonos nevű mappát.


A mappa megnyitásával hozzáférünk az APK fájl összes erőforrásához.


Ez az szöveges fájlok szerkeszthető, az alapvető szabályok betartása mellett használhatja a népszerű Notepad ++ programot, például az AndroidManifest.xml

Az Apk editor pro, amelyet webhelyünkről tölthet le androidra, lehetővé teszi bármely alkalmazás fájljainak feltörését / megváltoztatását. mobil eszközökés testreszabhatja ízlése szerint.

Sajátosságok

A program egy professzionális segédprogram, amely a haladó felhasználók kezében hatékony eszközzé válhat az Android alkalmazások szerkesztéséhez. A funkcionalitás gyakorlatilag ugyanaz szoftver személyi számítógépekhez.

Mit tud ez a segédprogram?

  1. Más alkalmazások nevének módosítása (fordítása).
  2. Az építészeti elrendezések, színek, grafikus beállítások sablonjainak módosítása (pl. ikonméret).
  3. Hangkialakítás, médiafájlok módosítása.
  4. Hirdetések eltávolítása.
  5. A fizetett tartalom blokkolásának megkerülése.
  6. Helyezze át az alkalmazást a készülék belső memóriájából az SD-kártyára.
  7. Felbontás módosítása és így tovább.

A segédprogram használatának megértéséhez le kell töltenie az apk editor pro-t, és mennie kell a menübe. Akkor válassz bármelyiket telepített alkalmazás androidon ill apk fájl. Ezt követően alapértelmezés szerint olyan adatok nyílnak meg, amelyeket a felhasználó módosíthat:

  • erőforrás szerkesztés;
  • fájlcsere;
  • általános szerkesztés;
  • adatszerkesztés.

A program felszólítja a módosított verzió telepítésére. Nem minden esetben működik, szóval régi verzió kézzel kell eltávolítani, és újat kell telepíteni. Az eltávolítás után válassza ki az apk szerkesztő mappát (a kényelem kedvéért használhatja az ES Explorert) az androidos programok közül, és keresse meg a módosított alkalmazásfájlt, telepítse az eszközre.

A program más felhasználóbarát felület. A navigáció meglehetősen egyszerű, de a felhasználónak alapszintű angol nyelvtudással kell rendelkeznie a helyes használathoz.

Előnyök és hátrányok

  1. A program számos lehetőséget kínál a felhasználónak az alkalmazások testreszabásához.
  2. A menüben található egy Súgó rész, amely egyszerűen és részletesen leírja a szerkesztő programfunkcióinak nagy részét. Ezért azoknak a felhasználóknak, akik távol állnak a programozástól, nem kell példákat és szerkesztési utasításokat keresniük harmadik féltől származó erőforrásokon.
  3. A programot ingyenesen letöltheti weboldalunkról.

Ennek a segédprogramnak a használata bizonyos készségeket és ismereteket igényel. Egy tapasztalatlan felhasználó kezében a szerkesztés az integritás megsértéséhez vezethet fájlrendszer, ami végül az alkalmazások összeomlását okozza. A Súgó menüpontban található példák az átalakításra képekkel és tippekkel helyes használat apk editor pro androidra. Ezért, ha foglalkozni szeretne ezzel a programmal, kövesse az utasításokat.

A szerkesztő meglehetősen hasznos eszköz azok számára, akik kényelmetlen alkalmazási felülettel szembesülnek (nincs orosz nyelv, állandó reklámozás, bannerek stb.). Ha már használta ezt a programot, ossza meg benyomásait lent a megjegyzésekben.



Betöltés...
Top