Programma apk maiņai. Android sistēmas lietojumprogrammu (apk) rediģēšanas pamati. APK paku sakārtošana un saņemšana

APK ir formāts, ko Android operētājsistēmā izmanto arhivētiem izpildāmo lietojumprogrammu failiem. Analogs, piemēram, operētājsistēmā Windows ir .msi, Symbian - .sis, Linux - .rpm vai .deb. Šajā rakstā mēs pēc iespējas detalizētāk sapratīsim visus jautājumus, kas saistīti ar šo faila formātu.

“Pareizas” izjaukšanas, rediģēšanas un salikšanas procesu sauc par reverso inženieriju. Kas tam vajadzīgs? Ir nepieciešami šādi rīki:

Apktool. Tas ir ērtāk lietojams ar SmartApktool apvalku, varat izmantot arī gatavus pakešfailus, piemēram, ApktoolBAT.

Notepad++ - nav obligāti, bet ļoti ieteicams.

7zip vai WinRar, vai jebkuru citu arhivēšanas programmu, taču ieteicama kāda no tām.

Deodeksēta programmaparatūra.

Ir vairāki veidi, kā instalēt lietojumprogrammas Android operētājsistēmā. Pirmais, arī galvenais, ir tieši caur Google Play (Android Market), tas ir, no oficiāla avota, kam nepieciešams Google konts. Daudzas lietojumprogrammas ir maksas, ja nevēlaties meklēt uzlauztu versiju pirātiskajās vietnēs, jums būs jāmaksā par pirkumu. Bet mēs runāsim par to, kā to izdarīt. Otrais ir no neoficiāliem avotiem, izņemot Google Play, kuram viedtālruņa vai planšetdatora iestatījumos būs jāiespējo opcija “Atļaut lietojumprogrammu instalēšanu no neoficiāliem avotiem”, pēc tam APK instalācijas fails jāieraksta atmiņā. karti.

Ir iespējams arī instalēt APK lietojumprogrammas lielapjomā. Lai to izdarītu, jums būs nepieciešams Astro File Manager - īpašs failu pārvaldnieks. Pēc instalēšanas pārvietojiet lietojumprogrammas:

No viedtālruņa/planšetdatora: in mntsdcardackupsapp(citiem vārdiem sakot, atmiņas karte, pēc tam dublējumkopiju mape, lietotņu mape)

No personālā datora (neaizmirstiet iespējot Android ierīces savienojumu vienkāršā USB diska režīmā): sdcarddublējumkopijaslietotne

Pēc tam atveriet vajadzīgo lietojumprogrammu, konteksta izvēlnē atlasiet “Lietojumprogrammu pārvaldnieks” un dodieties uz cilni “Dublējumkopijas”, kur mēs atlasām “Ilgstoši noklikšķiniet vai pārbaudiet instalējamo lietojumprogrammu”. Noklikšķiniet uz pogas "Instalēt" - visas lietojumprogrammas tiks instalētas jūsu ierīcē.

Ir diezgan viegli redzēt, kāda ir APK faila struktūra. Atveriet vajadzīgo APK, izmantojot arhivēšanas programmu, piemēram, WinRar. Lūk, ko mēs redzam iekšpusē:

AndroidManifest.xml ir sava veida “pase”, kas apraksta, kas ir lietojumprogrammā, tostarp: sistēmas prasības lietojumprogrammai, tās struktūra un versija.

META-INF– mape, kurā atrodas fails MANIFESTS.MF(to var atvērt ar gandrīz jebkuru teksta redaktoru, ieteicams lietot Notepad++), atverot kuru var redzēt SHA-1 kontrolsummas un datu ceļus, Manifest-Version standarta versiju, RSA vai DSA sertifikātu failus, SF failā ir ceļi uz dažādiem resursiem un to kontrolsummas. Kopumā META-INF ir metadatu faili, tas ir, dati par datiem.

res– mape, kurā ir visi “programmatūras papildināšanas” resursi, kas sakārtoti apakšmapēs. Piemēram, mapē ~drawable~ ir lietojumprogrammu grafiskie elementi (dažādi statusi, ikonas utt.), bet izkārtojuma direktorijā ir XML faili, kas norāda grafiskā lietotāja interfeisa (GUI) elementu izvietojumu.

klases.dex– programmas kods, ko izpilda Dalvik VM virtuālā mašīna. Atcerēsimies, ka Android operētājsistēma ir Linux kodola un Java virtuālās mašīnas sajaukums.

resursi.arsc- apkopots XML fails. Tajā ir dati par visiem programmas izmantotajiem resursiem.

aktīviem– mape, kurā ir arī dažādi resursi; tā var nebūt APK.

lib– mape, kurā ir “libs” vai, vienkāršāk sakot, vietējās bibliotēkas, ja programma ir rakstīta, izmantojot NDK, piemēram, ar elementiem, kad C++. Šis direktorijs var nebūt APK.

com– var nebūt APK.

org– var nebūt APK.

udk– var nebūt APK.

Mēs esam tikuši galā ar APK lietojumprogrammas saturu, tagad turpināsim tās detalizētu demontāžu. Dekompilācijai jums būs nepieciešams Apktool un Java, kā arī pats APK fails. Apktool ieteicams izsaiņot direktorijā C:WINDOWS(tas nav nepieciešams, bet tā būs ērtāk. Kāpēc – lasiet nedaudz zemāk).

Lai palaistu Apktool, jums jāievada datora izvēlne “Palaist”. Operētājsistēmā Windows XP noklikšķiniet uz Sākt -> Palaist, operētājsistēmā Windows 7: uzdevumu pārvaldnieks ( Ctrl+Alt+Del), nolaižamās izvēlnes augšdaļā Fails -> Jauns uzdevums (Palaist...) vai vienkārši izsauciet to, izmantojot īsinājumtaustiņu Win+R.

Izsauciet komandrindu - rakstiet cmd, pēc kura mēs palaižam Apktool - rakstiet apktool(šim nolūkam bija nepieciešams to ievietot WINDOWS mapē). Turklāt visa kontrole notiek, izmantojot komandrindu, izmantojot parametrus.

Ja nevēlaties uztraukties ar nepārtrauktu teksta komandu ievadīšanu, varat izmantot grafisko interfeisu - piemēram, minēto SmartApkTool. Palaidiet programmu SmartApkTool.exe, pēc tam cilnē Unpack/Pack atlasiet vajadzīgo APK lietojumprogrammu (svarīgi, lai faila nosaukumā nebūtu atstarpes, kirilicas, speciālās rakstzīmes un pieturzīmes).

Pēc izpakošanas programma izveidos mapi ar tādu pašu nosaukumu kā APK failam. Tā iekšpusē būs viss pieteikuma saturs.

APK var arī lokalizēt. Pirms sākam to darīt, mēs palaižam iepriekš instalēto Notepad++ un konfigurējam to šādi. Atvēršana Iestatījumi -> Konfigurācija -> Jauns dokuments.

Pēc šīm darbībām atveriet neiesaiņoto (dekompilēto) lietojumprogrammu, mapi res/vērtības.

Visas lokalizācijas bieži atrodas failā stīgas.xml, bet dažreiz daži no tiem var būt ietverti masīvi.xml. Kopējiet šos failus un izveidojiet tos mapē res mapi vērtības-ru un ievietojiet tos tajā.

Tagad jūs varat atvērt stīgas.xml izmantojot Notepad++, veiciet tulkojumu un saglabājiet mainīto failu.

Failā AndroidManifest.xml Varat norādīt, kur instalēt APK lietojumprogrammas. Uzmanību, tas attiecas tikai uz Android versiju 2.2 un jaunākām versijām. Tātad, atveriet norādīto failu, izmantojot Notepad ++. Gandrīz pašā sākumā jūs varat redzēt parametru:

Šeit varat norādīt šādas opcijas (aiz simbola “=”).

Tikai iekšēji– lietojumprogramma tiks instalēta tikai ierīces iekšējā atmiņā

auto– nodrošina lietotājam iespēju instalēt lietojumprogrammu iekšējā atmiņā vai atmiņas kartē

dod priekšroku Ārējai– programma tiks instalēta atmiņas kartē. Jāņem vērā, ka ne visas lietojumprogrammas darbosies pareizi, ja tās tiks instalētas ārējā diskdzinī, vai arī nedarbosies vispār. Tie ietver:

Pakalpojumi- tas ir, pakalpojumi

Signalizācijas pakalpojumi– pakalpojumi, kas izmanto laiku, piemēram, modinātājpulksteņi

Ievades metodes dzinēji– ievades lietojumprogrammas, tostarp dažādas tastatūras

Dzīvās fona tapetes- "dzīvās" animācijas tapetes

TiešraideMapes– attiecīgi animētie direktoriji

AppLogrīki- dažādi "logrīki"

KontsVadītāji- dažādu kontu pārvaldnieki, tostarp ICQ klienti, sociālo tīklu klienti utt

Sinhronizācijas adapteri– programmas, kurām nepieciešama pastāvīga sinhronizācija

IerīceAdministratori– lietojumprogrammas, kuras tiek izmantotas administrēšanai

Aizsardzība pret kopēšanu– lietojumprogrammas, kas ir aizsargātas pret kopēšanu.

Lietojumprogrammā var rediģēt un aizstāt dažādas lietotāja saskarnes ikonas un grafiskos elementus ar savējiem. Lai to izdarītu, atveriet mapi res mapē ar dekompilēto APK lietojumprogrammu, šeit varat redzēt mapes:

zīmējams-hdpi

zīmējams-ldpi

Šajās mapēs ir visas programmas ikonas un citi grafiskie elementi. Burts pirms “dpi” nozīmē attiecīgi grafisko elementu izmēru:

hdpi - augsta blīvuma punkti collā, izmērs 72x72 pikseļi

mdpi - vidējais punktu blīvums collā, izmērs 48x48 pikseļi

ldpi - zems punktu blīvums collā, izmērs 36x36 pikseļi

Lai mainītu, piemēram, lietojumprogrammas ikonu, atveriet failu AndroidManifest.xml izmantojot programmu Notepad++, sameklējiet rindiņu, kurā norādīta ikona, apskatiet tās precīzu nosaukumu (ņemiet vērā, ka faila paplašinājums nav pierakstīts, tikai faila nosaukums).

Atveriet atbilstošo mapi velkams-*dpi, ievietojiet rediģēto vai jauno ikonu, neaizmirstiet vēlreiz pārbaudīt sākotnējo nosaukumu AndroidManifest.xml. Attēlam ir jābūt .png formātā un ar tieši tādu pašu pikseļu blīvumu kā avota failam, piemēram, hdpi tas ir 72x72 pikseļi.

Ja vēlaties aizstāt ikonas nosaukumu ar savu, saglabājiet attēlu ar vajadzīgo faila nosaukumu velkams-*dpi, pēc kura mēs norādām tieši tādu pašu nosaukumu AndroidManifest.xml(Piemēram android:icon=”@drawable/pārbaude"). Tādā pašā veidā jūs varat mainīt jebkurus citus grafiskos elementus, taču prasības ir vienādas - paplašinājumam ir jābūt .png, un punktu blīvums collā ir tāds pats kā avota failā.

Neiesaiņotajā lietojumprogrammā varat vēlreiz pārbaudīt, kādas tiesības tai ir. Tas ir noderīgi, ja APK ir instalēts no nezināma avota, kā arī lai izvairītos no situācijas, kad lukturītis vai skaists kalendārs pēkšņi sāk sūtīt maksas SMS ziņas uz nezināmu numuru. Atvēršana AndroidManifest.xml Programmu Notepad++ un meklējiet atbilstošās rindas. Piemēram, par īsziņu sūtīšanu atbild parametrs SEND_SMS. Varat lasīt vairāk par visām tiesībām, kas var būt pieejamas lietojumprogrammai.

Instalētās APK lietojumprogrammas var iegūt no sistēmas. To var izdarīt vairākos veidos. Pirmkārt, varat instalēt Astro failu pārvaldnieku. Atveriet lietojumprogrammu, pēc tam konteksta izvēlnē atlasiet “Lietojumprogrammu pārvaldnieks”. Meklējam vajadzīgo aplikāciju, atzīmējam ar ķeksīti un izveidojam rezerves kopiju. Pēc apstrādes atlasītā lietojumprogramma atradīsies pa ceļu:

mntsdcardackupsapp

sdcardackupsapp

Pēc tam varat izmantot programmu Root Uninstaller. Pēc palaišanas lietojumprogramma automātiski noteiks visus instalētos APK un automātiski dublēs visus tos. Attiecīgi, ja vēlaties, varat kopēt šīs rezerves kopijas turpmākai dekompilācijai; tās atrodas ceļā:

mntsdcardRootUnistaller automātiskās dublējumkopijas(skatot tieši no Android ierīces)

sdcardRootUnistaller automātiskās dublējumkopijas(skatot, izmantojot datoru, kamēr Android ierīce ir pievienota kā USB disks).

Vēl viens veids ir izmantot Root Browser Lite, protams, šim nolūkam jums būs nepieciešamas saknes tiesības. Atveriet šo lietojumprogrammu un sekojiet šim ceļam:

sistēmalietotne(ja jūs interesē sistēmas lietojumprogrammas).

Mēs iekopējam nepieciešamās lietojumprogrammas atmiņas kartē, pēc tam ar tām varat veikt jebkādas manipulācijas.

Jūs varat arī lejupielādēt interesējošās APK lietojumprogrammas no Google Play (Android Market) tieši savā personālajā datorā. Lai to izdarītu, jums būs nepieciešams pārlūks Google Chrome (versija ne zemāka par 17) un tam paredzēts spraudnis - APK Downloader. Pēc norādītā spraudņa lejupielādes un instalēšanas izveidojiet Google Chrome pārlūkprogrammas saīsnes kopiju, kur pēc atstarpes ierakstām šādu rindiņu:

- ignorēt sertifikāta kļūdas

Izmantojot standarta pārlūkprogrammas instalēšanas ceļu, rindai vajadzētu izskatīties šādi:

"C:Program FilesGoogleChromeApplicationchrome.exe" - ignorēt sertifikāta kļūdas

Pēc tam viedtālruņa zvanītājā ievadiet:

*#*#8255#*#*

Mēs pārrakstām ierīces ID, kas sastāv no 16 rakstzīmēm. Atveriet Google Chrome, izmantojot izveidoto saīsni ar norādīto parametru - ignorēt sertifikāta kļūdas, ejam uz Rīki -> Paplašinājumi(adreses joslā varat arī ievadīt “chrome://settings/extensions”), atveriet spraudņa APK Downloader iestatījumus. Opcijās ievadiet sava Google konta e-pasta adresi un paroli, kā arī saņemto ierīces ID. Tagad dodieties uz Google Play (Android Market), atveriet lapu ar vajadzīgo lietojumprogrammu, pagaidiet, līdz tā tiek pilnībā lejupielādēta. Parādīsies APK Downloader ikona - pēc noklikšķināšanas uz tās programma tiks lejupielādēta jūsu datorā.

Apk editor pro, kuru varat lejupielādēt Android ierīcēm mūsu vietnē, ļaus jums uzlauzt/mainīt jebkuras mobilajām ierīcēm paredzētās lietojumprogrammas failu saturu un pielāgot to pēc saviem ieskatiem.

Īpatnības

Programma ir profesionāla utilīta, kas pieredzējušu lietotāju rokās var kļūt par spēcīgu rīku Android lietojumprogrammu rediģēšanai. Funkcionalitāte praktiski neatšķiras no līdzīgas programmatūras personālajiem datoriem.

Ko šī utilīta var darīt?

  1. Mainīt (tulkot) citu lietojumprogrammu nosaukumus.
  2. Mainiet arhitektūras izkārtojumus, krāsas, grafisko iestatījumu veidnes (piemēram, ikonas izmēru).
  3. Mainīt skaņas dizainu, multivides failus.
  4. Noņemt sludinājumus.
  5. Apiet maksas satura bloķēšanu.
  6. Pārsūtiet lietojumprogrammu no ierīces iekšējās atmiņas uz SD karti.
  7. Mainiet izšķirtspēju un daudz ko citu.

Lai saprastu, kā izmantot utilītu, jums ir jālejupielādē apk redaktors pro un jādodas uz izvēlni. Pēc tam atlasiet jau instalētu lietojumprogrammu Android ierīcē vai tās apk failu. Pēc tam tiks atvērti noklusējuma dati, kurus lietotājs var mainīt:

  • resursu rediģēšana;
  • failu aizstāšana;
  • vispārēja rediģēšana;
  • datu rediģēšana.

Programma piedāvās instalēt modificēto versiju. Tas nedarbojas visos gadījumos, tāpēc vecā versija ir jāatinstalē manuāli un jāinstalē jaunā. Pēc dzēšanas no Android programmām atlasiet apk redaktora mapi (ērtības labad varat izmantot ES Explorer) un atrodiet modificēto lietojumprogrammas failu un instalējiet to ierīcē.

Programmai ir lietotājam draudzīgs interfeiss. Navigācija ir diezgan vienkārša, taču lietotājam ir jābūt angļu valodas pamatzināšanām, lai to saprastu.

Priekšrocības un trūkumi

  1. Programma paver lietotājam plašas iespējas lietojumprogrammu pielāgošanai.
  2. Izvēlnē ir sadaļa Palīdzība, kas vienkārši un detalizēti apraksta daudzas redaktora programmas iespējas. Tāpēc lietotājiem, kuri ir tālu no programmēšanas, nebūs jāmeklē piemēri un rediģēšanas instrukcijas trešo pušu resursos.
  3. Jūs varat lejupielādēt programmu bez maksas mūsu vietnē.

Lai izmantotu šo utilītu, ir vajadzīgas dažas prasmes un zināšanas. Nepieredzējuša lietotāja rokās rediģēšana var izraisīt failu sistēmas integritātes pārkāpumus, kas galu galā novedīs pie lietojumprogrammu kļūmēm. Palīdzības vienuma izvēlnē ir reklāmguvumu piemēri ar attēliem un padomi, kā pareizi lietot apk editor pro operētājsistēmā Android. Tāpēc, ja vēlaties izprast šo programmu, vienkārši izpildiet norādījumus.

Redaktors ir diezgan noderīgs rīks tiem, kas saskaras ar neērtu lietojumprogrammas saskarni (krievu valodas trūkums, pastāvīga reklāma, baneri utt.). Ja esat jau izmantojis šo programmu, dalieties savos iespaidos zemāk komentāros.

No šī raksta jūs uzzināsit, no kā sastāv Android lietojumprogramma, kā atvērt APK failu un ar kādām programmām.

Kas ir APK fails?

APK ir Android operētājsistēmas formāts, ko izmanto arhivētiem izpildāmo lietojumprogrammu failiem, un paša faila nosaukums var būt jebkas, taču paplašinājumam vajadzētu izskatīties tikai šādi.apk. APK analogi citās operētājsistēmās ir .msi operētājsistēmā Windows, .sis sistēmā Symbian, .rpm vai .deb operētājsistēmā Linux.

Paskatīsimies, kas ir iekšā
Faktiski .apk ir ZIP arhīvs, tāpēc jūs varat apskatīt iekšējo ierīci, izmantojot jebkuru failu pārvaldnieku vai arhivētāju, piemēram, WinRAR vai mobilo lietojumprogrammu X-plore.





Ir vērts atcerēties, ka jūs saņemat tikai vizuālu piekļuvi iekšējiem resursiem; rediģēšanas iespējas ir ļoti ierobežotas.
Apskatīsim struktūru
.apk failā mēs redzam vairākus failus un mapes, noskaidrosim, kam tie ir paredzēti:
  • AndroidManifest.xml ir sava veida lietojumprogrammas “pase”, no kuras var uzzināt visus galvenos punktus, prasības, versiju, atļaujas utt.
  • META-INF šajā failā ir metadati, tas ir, dati par datiem, kontrolsummas, ceļi uz datiem, ceļi un resursu kontrolsummas, sertifikāti. Šo failu var atvērt ar jebkuru teksta redaktoru, taču ieteicams izmantot Notepad++.
  • Res mapē ir visi programmas resursi, grafika, piemēram, ikonas, attēli, teksts un grafiskā interfeisa elementi. Varat arī viegli piekļūt mapei.
  • classes.dex ir tiešais lietojumprogrammas kods, ko izpilda Dalvik VM virtuālā mašīna; jūs varat redzēt, kas atrodas šajā failā, tikai dekompilējot .apk, par to mēs runāsim citos rakstos. resources.arsc - apkopots XML fails, šajā failā ir dati par visiem programmā iesaistītajiem resursiem.
  • lib - mape ar vietējām bibliotēkām, kuru resursiem var piekļūt, tikai izmantojot specializētas programmas. APK var saturēt arī failus un mapes, piemēram, com, org, udk, bet ne vienmēr.

Tagad aplūkosim iekšējo struktūru sīkāk; šim nolūkam mums ir nepieciešama dekompilācijas programma, Java un APK fails. Galvenais rīks .apk izjaukšanai ir Apktool, taču šī programma darbojas tikai no līnijas, kas nav īpaši ērti. Ātrākai un ērtākai analīzei varat izmantot APKing, tas joprojām ir tas pats Apktool, bet ar iespēju strādāt no konteksta izvēlnes.
Un tāpēc mēs instalējam APKing tāpat kā jebkuru Windows lietojumprogrammu un, atlasot .apk, noklikšķiniet uz tā ar peles labo pogu un vienlaikus Shift, pēc tam mēs redzēsim sekojošo:


Un atlasiet vajadzīgo darbību, piemēram, pilnībā dekompilēt, tad programma pabeigs darbību un izveidos mapi ar tādu pašu nosaukumu.


Atverot mapi, mēs varēsim piekļūt visiem APK faila resursiem.


Tagad visus teksta failus var rediģēt, ievērojot pamatnoteikumus, varat izmantot populāro programmu Notepad++, piemēram, ņemiet vērā AndroidManifest.xml

Tas atkal esmu es un manas instrukcijas tējkannām un kafijas kannām ar attēliem.

Šoreiz es detalizēti runāšu par Android OS sistēmas komponentu nomaiņu, izmantojot statusa joslas modifikācijas instalēšanas piemēru.

Android ir mazs Linux. Nomainot failus, ir jāievēro vairāki noteikumi, lai tālrunis nepārvērstos par ķieģeli, ko var atdzīvināt tikai ar pilnīgu mirgošanu, pazaudējot visus datus no ierīces iekšējās atmiņas. Iekšējie nodalījumi ir formatēti failu sistēmā, kas atšķiras no FAT32 zibatmiņas diskā. Cita starpā faila rekvizīti saglabā atļaujas dažādām lietotāju grupām (faila īpašniekam, faila īpašnieku grupai, citiem lietotājiem). Darbojoties ar sistēmas failiem, tie ir jāsaglabā, jo ielādējot sistēma var vienkārši tiem piekļūt un nevar normāli boot.
Sāksim ar instrumentiem.

Mums būs nepieciešams:

  • Failu pārvaldnieks, kas var darboties ar root tiesībām un failu atļaujām. Vislabākais ir Root Explorer (jūs to iegādājāties, vai ne?)
  • Pats modificētais fails, kuru vēlamies ievietot sistēmas vietā (saite raksta beigās).

Tagad mēs izmantojam vienu no ērtajām Root Explorer funkcijām. Ilgi piesitīsim vajadzīgajam failam, lai atvērtu konteksta izvēlni

Un noklikšķiniet uz vienuma " Zip šo failu"lai failu saglabātu zip arhīvā SD kartē. Pēc arhivēšanas mēs saņemsim šādu ziņojumu:

Nospiediet pogu " Palieciet", lai paliktu mapē un veiktu vēl vienu darbību.

Tagad viss ir gatavs faila aizstāšanai.
Es jau runāju par katra faila piekļuves tiesībām. Lai tos izveidotu no jauna jaunā failā, vispirms tie ir jāaplūko no vecā faila. Tos apzīmē ar virkni simbolu "rwxrwxrwx". 1. triāde - īpašnieku tiesības, 2. - īpašnieku grupas, 3. - visi pārējie lietotāji. Mūsu failam ir atļaujas "rw-r--r--".

Tagad dodieties uz SD karti, atrodiet tur modificēto failu un tā konteksta izvēlnē atlasiet vienumu " Kopēt", taču nesteidzieties uzreiz atlasīt mapi "/system/app", jo mēs uzreiz sabojāsim sistēmu. Tā vietā iekopējiet failu īpašā pagaidu failiem paredzētā mapē "/data/local/tmp", lai atvērtu failu formā, kas pārņems sistēmu.
Vispirms izsauciet faila kontekstizvēlni un atlasiet " Pārdēvēt" un ievadiet faila nosaukumu "SystemUI.apk". Tieši tā, jo Linux nosaukumā ir nozīme burtu reģistram, t.i., "systemui.apk" un "SystemUI.apk" ir dažādi faili.
Tālāk jums ir jāmaina failu atļaujas, jo tagad tās gandrīz noteikti ir iestatītas nepareizi. Lai to izdarītu, vēlreiz izsauciet faila konteksta izvēlni ar ilgu pieskārienu un atlasiet vienumu " Atļaujas". Mūsu vērtībai "rw-r--r--" izvēles rūtiņas jāievieto šādi:

Klikšķis " labi" un vēlreiz izsauciet konteksta izvēlni. Tagad jums ir jāmaina šīs lietojumprogrammas īpašnieks un grupa. Lai to izdarītu, atlasiet vienumu " Mainīt īpašnieku". Parādīsies logs ar informāciju par pašreizējo faila īpašnieku.
Šeit mums ir jāizdara neliela atkāpe.
Mapē "/system/app" visi faili pieder lietotājam "root" (uid=0) un grupai "root" (gid=0), bet mapē "/system/framework" lietotājam " sistēma" (gid=1000) pieder. un grupai "sistēma" (gid=1000).
Pamatojoties uz iepriekš minēto, iestatiet vajadzīgās vērtības un noklikšķiniet uz " labi".
Un trešo reizi izsauciet faila konteksta izvēlni un atlasiet vienumu " Kopēt" un kopēšanas dialoglodziņā dodieties uz mapi "/system/app". Tagad noklikšķiniet uz " Ielīmēt"un uzmanīgi izlasiet tālāk.
Gandrīz nekavējoties sistēma jūs informēs, ka statusa joslas process ir pēkšņi beidzies, un piedāvās to sākt. Visi mēģinājumi būs neveiksmīgi. Starp logu parādīšanos jums ir nepieciešams laiks, lai veiktu vairākas darbības. Pirms pogas nospiešanas ir jāizsauc izvēlne, lai izslēgtu ierīci; tā parādīsies zem brīdinājuma. Tagad jums ir jānovieto pirksts aptuveni pogas kreisajā pusē. Tagad jums ļoti ātri jānoklikšķina ar pirkstu trīs reizes, lai jums būtu laiks aizvērt brīdinājumu, atlasīt izslēgšanas opciju un apstiprināt savus nodomus.
Tagad mēs gaidām, kad tālrunis izslēgsies, restartējam to un izbaudām rezultātu, vai arī neizbaudām to un meklējam kļūdas.

Dažreiz dažas Android lietojumprogrammas lietotājam kaut kādā veidā nav piemērotas. Piemērs ir uzmācīga reklāma. Un gadās arī tā, ka programma ir laba visiem, bet tulkojums tajā ir vai nu greizs, vai vispār nav. Vai, piemēram, programma ir izmēģinājuma versija, bet nav iespējas iegūt pilno versiju. Kā mainīt situāciju?

Ievads

Šajā rakstā mēs runāsim par to, kā izjaukt APK pakotni ar lietojumprogrammu, apskatīt tās iekšējo struktūru, izjaukt un dekompilēt baitkodu, kā arī mēģināt veikt vairākas izmaiņas lietojumprogrammās, kas var sniegt mums vienu vai otru labumu.

Lai to visu izdarītu pats, jums būs nepieciešamas vismaz pamatzināšanas par Java valodu, kurā tiek rakstītas Android lietojumprogrammas, un XML valodu, kas tiek izmantota visur Android - no pašas lietojumprogrammas un tās piekļuves tiesību aprakstīšanas līdz virkņu glabāšanai tiks parādīts ekrānā. Jums būs nepieciešama arī iespēja izmantot specializētu konsoles programmatūru.

Tātad, kas ir APK pakotne, kurā tiek izplatīta pilnīgi visa Android programmatūra?

Lietojumprogrammu dekompilācija

Šajā rakstā mēs strādājām tikai ar izjauktu lietojumprogrammas kodu, taču, ja lielajās lietojumprogrammās tiks veiktas nopietnākas izmaiņas, smali koda izpratne būs daudz grūtāka. Par laimi, mēs varam dekompilēt dex kodu Java kodā, kas, lai arī nav oriģināls un nav kompilēts atpakaļ, ir daudz vieglāk lasāms un saprotams lietojumprogrammas loģiku. Lai to izdarītu, mums būs nepieciešami divi rīki:

  • dex2jar ir Dalvik baitkoda tulkotājs JVM baitkodā, uz kura pamata mēs varam iegūt kodu Java valodā;
  • jd-gui ir pats dekompilators, kas ļauj iegūt lasāmu Java kodu no JVM baitkoda. Kā alternatīvu varat izmantot Jad (www.varaneckas.com/jad); Lai gan tas ir diezgan vecs, dažos gadījumos tas ģenerē lasāmāku kodu nekā Jd-gui.

Šādi tie ir jāizmanto. Vispirms mēs palaižam dex2jar, kā argumentu norādot ceļu uz apk pakotni:

% dex2jar.sh mail.apk

Rezultātā Java pakotne mail.jar parādīsies pašreizējā direktorijā, kuru jau var atvērt jd-gui, lai skatītu Java kodu.

APK paku sakārtošana un saņemšana

Android lietotņu pakotne būtībā ir parasts ZIP fails, kuram nav nepieciešami īpaši rīki, lai skatītu tā saturu vai izvilktu to. Pietiek ar arhivētāju - 7zip priekš Windows vai konsoles unzip uz Linux. Bet tas ir par iesaiņojumu. Kas ir iekšā? Kopumā mums ir šāda struktūra:

  • META-INF/- satur lietojumprogrammas digitālo sertifikātu, kas identificē tās veidotāju, un pakotnes failu kontrolsummas;
  • res/ - dažādi resursi, ko aplikācija izmanto savā darbā, piemēram, attēli, interfeisa deklaratīvais apraksts, kā arī citi dati;
  • AndroidManifest.xml- pieteikuma apraksts. Tas ietver, piemēram, nepieciešamo atļauju sarakstu, nepieciešamo Android versiju un nepieciešamo ekrāna izšķirtspēju;
  • klases.dex- apkopots lietojumprogrammas baitkods Dalvik virtuālajai mašīnai;
  • resursi.arsc- arī resursi, bet cita veida - jo īpaši virknes (jā, šo failu var izmantot rusifikācijai!).

Sarakstā minētie faili un direktoriji ir, ja ne visos, tad, iespējams, lielākajā daļā APK. Tomēr ir vērts pieminēt vēl dažus ne tik izplatītus failus/direktorijus:

  • aktīviem- resursu analogs. Galvenā atšķirība ir tā, ka, lai piekļūtu resursam, ir jāzina tā identifikators, bet aktīvu sarakstu var iegūt dinamiski, lietojumprogrammas kodā izmantojot metodi AssetManager.list();
  • lib- vietējās Linux bibliotēkas, kas rakstītas, izmantojot NDK (Native Development Kit).

Šo direktoriju izmanto spēļu ražotāji, kas tur ievieto savus C/C++ valodā rakstītos spēļu dzinējus, kā arī augstas veiktspējas aplikāciju (piemēram, Google Chrome) veidotāji. Mēs izdomājām ierīci. Bet kā iegūt jūs interesējošās lietojumprogrammas pakotnes failu? Tā kā no ierīces nav iespējams paņemt APK failus bez saknes (tie atrodas /data/app direktorijā) un sakņu izveide ne vienmēr ir ieteicama, ir vismaz trīs veidi, kā iegūt lietojumprogrammas failu datorā:

  • APK Downloader paplašinājums pārlūkam Chrome;
  • Īsta APK Leecher lietotne;
  • dažādu failu mitināšana un Varezniks.

Kuru lietot, ir gaumes jautājums; mēs dodam priekšroku atsevišķu lietojumprogrammu izmantošanai, tāpēc mēs aprakstīsim Real APK Leecher lietošanu, jo īpaši tāpēc, ka tas ir rakstīts Java un attiecīgi darbosies vai nu Windows, vai Nix.

Pēc programmas palaišanas jums jāaizpilda trīs lauki: E-pasts, Parole un Ierīces ID - un jāizvēlas valoda. Pirmie divi ir jūsu Google konta e-pasts un parole, ko izmantojat ierīcē. Trešais ir ierīces identifikators, un to var iegūt, ierakstot kodu zvanītājā # #8255## un pēc tam atrodiet rindiņu Ierīces ID. Aizpildot, jāievada tikai ID bez android prefiksa.

Pēc aizpildīšanas un saglabāšanas bieži tiek parādīts ziņojums “Kļūda savienojuma laikā ar serveri”. Tam nav nekāda sakara ar Google Play, tāpēc droši ignorējiet to un meklējiet jūs interesējošās pakotnes.

Skatīt un modificēt

Pieņemsim, ka atradāt jūs interesējošo pakotni, lejupielādējāt to, izpakojāt... un, kad mēģinājāt apskatīt kādu XML failu, jūs pārsteigts atklājāt, ka fails nav teksts. Kā to dekompilēt un kā vispār strādāt ar pakotnēm? Vai tiešām ir nepieciešams instalēt SDK? Nē, SDK nav nepieciešams instalēt vispār. Faktiski visām APK pakotņu izvilkšanas, modificēšanas un pakotnes darbībām ir nepieciešami šādi rīki:

  • ZIP arhivētājs izsaiņošanai un iepakošanai;
  • smali- Dalvik virtuālās mašīnas baitu koda montētājs/demontētājs (code.google.com/p/smali);
  • aapt- rīks resursu iesaiņošanai (pēc noklusējuma resursi tiek glabāti binārā formā, lai optimizētu lietojumprogrammas veiktspēju). Iekļauts Android SDK, taču to var iegūt atsevišķi;
  • parakstītājs- rīks modificētas pakotnes digitālai parakstīšanai (bit.ly/Rmrv4M).

Jūs varat izmantot visus šos rīkus atsevišķi, taču tas ir neērti, tāpēc labāk ir izmantot augstāka līmeņa programmatūru, kas izveidota uz to pamata. Ja strādājat operētājsistēmā Linux vai Mac OS X, ir pieejams rīks apktool. Tas ļauj izpakot resursus to sākotnējā formā (ieskaitot bināros XML un arsc failus), pārbūvēt pakotni ar mainītiem resursiem, taču tas nezina, kā parakstīt pakotnes, tāpēc parakstītāja utilīta būs jāpalaiž manuāli. Neskatoties uz to, ka utilīta ir rakstīta Java valodā, tās instalēšana ir diezgan nestandarta. Vispirms jums jāiegūst pats jar fails:

$ 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 $ eksportēt PATH=~/bin:$PATH

Ja strādājat operētājsistēmā Windows, tad tam ir lielisks rīks Virtuous Ten Studio, kas arī uzkrāj visus šos rīkus (ieskaitot pašu apktool), taču CLI interfeisa vietā nodrošina lietotājam intuitīvu grafisko interfeisu, ar kuru jūs varat veikt izpakošanas, izjaukšanas un dekompilēšanas darbības ar dažiem klikšķiem. Šis rīks ir ziedošanas rīks, tas ir, dažreiz parādās logi, kas prasa iegūt licenci, taču galu galā to var pieļaut. Nav jēgas to aprakstīt, jo interfeisu var saprast dažu minūšu laikā. Bet apktool, ņemot vērā tā konsoles raksturu, ir jāapspriež sīkāk.


Apskatīsim apktool opcijas. Īsāk sakot, ir trīs pamata komandas: d (dekodēšana), b (build) un if (instalēt ietvaru). Ja ar pirmajām divām komandām viss ir skaidrs, tad ko dara trešais, nosacījuma paziņojums? Tas izpako norādīto lietotāja interfeisa ietvaru, kas ir nepieciešams gadījumos, kad tiek sadalīta jebkura sistēmas pakotne.

Apskatīsim interesantākās pirmās komandas iespējas:

  • -s- neizjauciet dex failus;
  • -r- neizpakot resursus;
  • -b- neievietojiet atkļūdošanas informāciju dex faila izjaukšanas rezultātos;
  • -- rāmja ceļš- izmantojiet norādīto UI ietvaru, nevis apktool iebūvēto. Tagad apskatīsim dažas komandas b iespējas:
  • -f- piespiedu montāža bez izmaiņu pārbaudes;
  • -a- norādiet ceļu uz aapt (rīks APK arhīva veidošanai), ja kāda iemesla dēļ vēlaties to izmantot no cita avota.

Apktool izmantošana ir ļoti vienkārša; lai to izdarītu, vienkārši norādiet vienu no komandām un ceļu uz APK, piemēram:

$ apktool d mail.apk

Pēc tam visi izvilktie un izjauktie pakotnes faili parādīsies pasta direktorijā.

Sagatavošana. Reklāmas atspējošana

Teorija, protams, ir laba, bet kāpēc tā ir vajadzīga, ja mēs nezinām, ko darīt ar neizpakoto iepakojumu? Mēģināsim pielietot teoriju savā labā, proti, modificēt kādu programmatūru tā, lai tā mums nerādītu reklāmu. Piemēram, lai tas būtu Virtual Torch - virtuālā lāpa. Šī programmatūra mums ir ideāli piemērota, jo tā ir līdz galam piepildīta ar kaitinošu reklāmu un turklāt ir pietiekami vienkārša, lai nepazustu koda džungļos.


Tātad, izmantojot kādu no iepriekš minētajām metodēm, lejupielādējiet lietojumprogrammu no tirgus. Ja izlemjat izmantot Virtuous Ten Studio, vienkārši atveriet lietojumprogrammā APK failu un izsaiņojiet to, izveidojiet projektu (Fails -> Jauns projekts), pēc tam projekta konteksta izvēlnē atlasiet Importēt failu. Ja jūsu izvēle bija apktool, vienkārši palaidiet vienu komandu:

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

Pēc tam direktorijā com.kauf.particle.virtualtorch parādīsies failu koks, kas līdzīgs iepriekšējā sadaļā aprakstītajam, bet ar papildu smali direktoriju dex failu un faila apktool.yml vietā. Pirmajā ir izjaukts lietojumprogrammas izpildāmā dex faila kods, otrajā ir pakalpojuma informācija, kas nepieciešama, lai apktool varētu salikt atpakaļ pakotni.

Pirmā vieta, kur mums vajadzētu meklēt, protams, ir AndroidManifest.xml. Un šeit mēs uzreiz saskaramies ar šādu rindu:

Nav grūti uzminēt, ka tā ir atbildīga par interneta pieslēguma lietošanas atļauju piešķiršanu lietojumprogrammai. Patiesībā, ja mēs vienkārši vēlamies atbrīvoties no reklāmas, mums, visticamāk, vajadzēs vienkārši bloķēt lietojumprogrammu no interneta. Mēģināsim to izdarīt. Mēs izdzēšam norādīto rindu un mēģinām izveidot programmatūru, izmantojot apktool:

$ apktool b com.kauf.particle.virtualtorch

Iegūtais APK fails parādīsies direktorijā com.kauf.particle.virtualtorch/build/. Tomēr to nevarēs instalēt, jo tam nav ciparparaksta un failu kontrolsummu (tam vienkārši nav META-INF/ direktorija). Mums ir jāparaksta pakotne, izmantojot utilītu apk-signer. Palaists. Interfeiss sastāv no divām cilnēm - pirmajā (Key Generator) mēs izveidojam atslēgas, otrajā (APK Signer) mēs parakstāmies. Lai izveidotu mūsu privāto atslēgu, aizpildiet šādus laukus:

  • Mērķa fails- atslēgu krātuves izvades fails; tas parasti glabā vienu atslēgu pāri;
  • Parole Un Apstiprināt- krātuves parole;
  • Alias- krātuvē esošās atslēgas nosaukums;
  • Alias ​​parole Un Apstiprināt- slepenās atslēgas parole;
  • Derīgums- derīguma termiņš (gados). Noklusējuma vērtība ir optimāla.

Pārējie lauki parasti nav obligāti, taču vismaz viens ir jāaizpilda.


BRĪDINĀJUMS

Lai parakstītu lietojumprogrammu, izmantojot apk-signer, jums ir jāinstalē Android SDK un lietojumprogrammas iestatījumos jānorāda pilns ceļš uz to.

Visa informācija tiek sniegta tikai informatīviem nolūkiem. Ne redaktori, ne autors nav atbildīgi par iespējamo kaitējumu, ko nodara šī raksta materiāli.

Tagad varat parakstīt APK ar šo atslēgu. Cilnē APK parakstītājs atlasiet tikko ģenerēto failu, ievadiet paroli, atslēgas aizstājvārdu un paroli, pēc tam atrodiet APK failu un drosmīgi noklikšķiniet uz pogas “Parakstīt”. Ja viss noritēs labi, paka tiks parakstīta.

INFORMĀCIJA

Tā kā mēs parakstījām pakotni ar savu atslēgu, tā būs pretrunā ar sākotnējo lietojumprogrammu, kas nozīmē, ka, mēģinot atjaunināt programmatūru, izmantojot tirgu, mēs saņemsim kļūdu.

Ciparparaksts ir nepieciešams tikai trešās puses programmatūrai, tādēļ, ja modificējat instalētās sistēmas lietojumprogrammas, kopējot tās direktorijā /system/app/, tās nav jāparaksta.

Pēc tam lejupielādējiet pakotni viedtālrunī, instalējiet to un palaidiet to. Voila, reklāma ir pazudusi! Taču tā vietā parādījās ziņojums, ka mums nav interneta vai nav atbilstošu atļauju. Teorētiski ar to varētu pietikt, taču ziņa izskatās kaitinoša, un, godīgi sakot, mums vienkārši paveicās ar muļķīgu pieteikumu. Parasti rakstīta programmatūra, visticamāk, noskaidro savus akreditācijas datus vai pārbaudīs interneta savienojumu un citādi vienkārši atsakās palaist. Kā būt šajā gadījumā? Protams, rediģējiet kodu.

Parasti aplikāciju autori izveido īpašas klases reklāmu rādīšanai un šo klašu metožu izsaukšanai, kad tiek palaista lietojumprogramma vai kāda no tās “aktivitātēm” (vienkāršāk sakot, aplikāciju ekrāni). Mēģināsim atrast šīs klases. Mēs ejam uz smali direktoriju, pēc tam com (org satur tikai atvērto grafisko bibliotēku cocos2d), tad kauf (šeit tas ir, jo tas ir izstrādātāja vārds un viss viņa kods) - un šeit tas ir, mārketinga direktoriju. Iekšpusē mēs atrodam virkni failu ar smali paplašinājumu. Tās ir klases, un visievērojamākā no tām ir Ad.smali klase, pēc kuras nosaukuma var viegli uzminēt, ka tā ir tā, kas rāda reklāmu.

Mēs varētu mainīt tās darbības loģiku, taču daudz vienkāršāk būtu vienkārši noņemt zvanus uz jebkuru no tās metodēm no pašas lietojumprogrammas. Tāpēc mēs atstājam mārketinga direktoriju un dodamies uz blakus esošo daļiņu direktoriju un pēc tam uz virtualtorch. Īpašu uzmanību šeit ir pelnījis fails MainActivity.smali. Šī ir standarta Android klase, ko izveido Android SDK un kas instalēta kā lietojumprogrammas ieejas punkts (analoģiski C galvenajai funkcijai). Atveriet failu rediģēšanai.

Iekšā ir smali kods (vietējais montētājs). Tas ir diezgan mulsinoši un grūti lasāms sava zemā līmeņa dēļ, tāpēc mēs to nepētīsim, bet vienkārši atradīsim kodā visas atsauces uz reklāmu klasi un komentēsim. Meklēšanā ievadām rindiņu “Reklāma” un nonākam 25. rindā:

Lauka privātā reklāma:Lcom/kauf/marketing/Ad;

Šeit tiek izveidots reklāmas lauks, lai saglabātu reklāmu klases objektu. Mēs komentējam, novietojot zīmi ### rindas priekšā. Turpinām meklēšanu. 423. rindiņa:

Jauna instance v3, Lcom/kauf/marketing/Ad;

Šeit notiek objekta izveide. Komentējam. Turpinām meklēšanu un 433., 435., 466., 468., 738., 740., 800. un 802. rindā atrodam Ad klases metožu izsaukumus. Komentējam. Izskatās, ka tas ir viss. Saglabāt. Tagad pakotne atkal jāsaliek kopā un jāpārbauda funkcionalitāte un reklāmas klātbūtne. Eksperimenta tīrības labad mēs atgriežam no AndroidManifest.xml noņemto rindiņu, saliekam paketi, parakstām un instalējam.

Mūsu jūrascūciņa. Redzama reklāma

Hmm! Reklāma pazuda tikai lietojumprogrammas darbības laikā, bet palika galvenajā izvēlnē, ko mēs redzam, palaižot programmatūru. Tātad, pagaidiet, bet ieejas punkts ir MainActivity klase, un sludinājums pazuda, kamēr lietojumprogramma darbojās, bet palika galvenajā izvēlnē, tāpēc ieejas punkts ir atšķirīgs? Lai noteiktu patieso ievades punktu, atkārtoti atveriet failu AndroidManifest.xml. Un jā, tajā ir šādas rindas:

Tie norāda mums (un, vēl svarīgāk, android), ka darbība ar nosaukumu Sākt ir jāuzsāk, reaģējot uz nolūka (notikuma) android.intent.action.MAIN ģenerēšanu no kategorijas android.intent.category.LAUNCHER. Šis notikums tiek ģenerēts, pieskaroties lietojumprogrammas ikonai palaidējā, tādējādi tas nosaka ievades punktu, proti, sākuma klasi. Visticamāk, programmētājs vispirms uzrakstīja lietojumprogrammu bez galvenās izvēlnes, kuras ievades punkts bija standarta MainActivity klase, un pēc tam pievienoja jaunu logu (aktivitāti), kurā bija izvēlne un aprakstīta klasē Sākt, un manuāli padarīja to par ierakstu. punktu.

Atveriet failu Start.smali un atkal meklējiet rindu “Ad”, 153. un 155. rindā atrodam pieminējumu par FirstAd klasi. Tas ir arī avota kodā un, spriežot pēc nosaukuma, ir atbildīgs par reklāmu rādīšanu galvenajā ekrānā. Paskatīsimies tālāk, tur ir FirstAd klases instances izveide un nolūks, kas pēc konteksta ir saistīts ar šo gadījumu, un pēc tam etiķete cond_10, uz kuru nosacītā pāreja tiek veikta tieši pirms instances izveides. no klases:

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

Visticamāk, programma kaut kā nejauši aprēķina, vai reklāma ir jārāda galvenajā ekrānā, un, ja nē, pāriet tieši uz cond_10. Labi, vienkāršosim viņas uzdevumu un aizstāsim nosacīto pāreju ar beznosacījuma pāreju:

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

Kodā vairs nav minēts FirstAd, tāpēc mēs aizveram failu un no jauna saliekam savu virtuālo lāpu, izmantojot apktool. Kopējiet to viedtālrunī, instalējiet un palaidiet. Voila, visa reklāma ir pazudusi, ar ko mēs apsveicam mūs visus.

Rezultāti

Šis raksts ir tikai īss ievads Android lietojumprogrammu uzlaušanas un modificēšanas metodēm. Daudzas problēmas palika aizkulisēs, piemēram, aizsardzības noņemšana, neskaidra koda parsēšana, lietojumprogrammu resursu tulkošana un aizstāšana, kā arī lietojumprogrammu modificēšana, kas rakstītas, izmantojot Android NDK. Tomēr, ja ir pamatzināšanas, tas ir tikai laika jautājums, lai to visu izdomātu.




Tops