Kā un ko rediģēt Android lietojumprogrammas. Android lietojumprogrammu atvēršana, modificēšana un iepakošana

Šis 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. Tajā, 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, zaudējot visus datus no iekšējā atmiņa ierīces. Zibatmiņas diskos iekšējie nodalījumi tiek formatēti failu sistēmā, kas nav FAT32. Faila rekvizīti, cita starpā, saglabā atļaujas dažādām lietotāju grupām (faila īpašniekam, faila īpašnieku grupai, citiem lietotājiem). Darbojoties ar sistēmas faili tie ir jāsaglabā, jo sāknēšanas laikā sistēma vienkārši var nespēt tiem piekļūt un nesāknēt normāli.
Sāksim ar rīku komplektu.

Mums vajag:

  • Failu pārvaldnieks, kas zina, kā strādāt 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. Pieskarsimies ilgi vēlamo failu lai atvērtu konteksta izvēlni

Un noklikšķiniet uz vienuma " Zip šo failu"lai failu saglabātu SD kartes ZIP arhīvā. Pēc arhivēšanas tiek parādīts šāds ziņojums:

Nospiediet pogu " Palieciet"palikt mapē un darīt kaut ko citu.

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

Tagad dodieties uz SD karti, atrodiet tur modificēto failu un atlasiet vienumu " Kopēt", bet mēs nesteidzamies uzreiz atlasīt mapi" / system / app ", jo mēs nekavējoties sabojāsim sistēmu. Tā vietā mēs kopējam failu īpašā mapē pagaidu failiem" / data / local / tmp ", lai failu izveidotu formā, kas pārņems sistēmu.
Lai sāktu, atveriet faila konteksta izvēlni un atlasiet vienumu " Pārdēvēt"un ievadiet faila nosaukumu" SystemUI.apk ". Tieši tā, jo Linux nosaukumā ir nozīme burtu reģistram, ti," systemui.apk "un" SystemUI.apk "ir dažādi faili.
Tālāk jums ir jāmaina faila 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-- "karodziņus vajadzētu iestatīt šādi:

Klikšķis " labi"un vēlreiz izsauciet konteksta izvēlni. Tagad mums ir jāmaina šīs lietojumprogrammas īpašnieks un grupa. Lai to izdarītu, atlasiet" 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), un mapē "/ system / framework" lietotājs ir " sistēma" (gid = 1000) un grupa "sistēma" (gid = 1000).
Pamatojoties uz iepriekš minēto, mēs atklājam vēlamās vērtības un nospiediet " labi".
Un trešo reizi mēs izsaucam faila konteksta izvēlni un atlasām vienumu " Kopēt"un kopēšanas dialoglodziņā dodieties uz mapi" / system / app. Tagad drosmīgi nospiediet" Ielīmēt"un uzmanīgi izlasiet.
Gandrīz nekavējoties sistēma ziņos, 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 jāizsauc ierīces izslēgšanas izvēlne, tā būs zem brīdinājuma. Tagad jums ir jānovieto pirksts aptuveni pogas kreisajā pusē. Tagad jums ļoti ātri trīs reizes jānoklikšķina ar pirkstu, lai būtu laiks aizvērt brīdinājumu, atlasīt izslēgšanas vienumu un apstiprināt savus nodomus.
Tagad gaidām, kad telefons izslēgsies, restartēsies un izbaudīs rezultātu vai neizbaudīs un meklēs kļūdas.

Rediģēšana sistēmas lietojumprogrammas Android visbiežāk tiek veikts, kad viedtālruņa, planšetdatora vai citas ierīces lietotājs to kontrolē operētājsistēma, pārstāj apmierināt strāvu izskats programmas, ko ierīcē instalējis ražotājs vai pārdevējs. Vēl viens iemesls var būt nepieciešamība veikt ne tikai izmaiņas Grafiskais dizains Android lietojumprogrammas, bet arī ietekmē dažādu elementu atrašanās vietu un pamatfunkciju veiktspēju.

Lai veiktu izmaiņas kodā, ir nepieciešamas pamata programmēšanas prasmes gandrīz jebkurā valodā (vēlams Java un C ++). Lai aizstātu grafiku, derēs taisnas rokas un spēja strādāt grafikas redaktorā.

Vispirms jāizlemj, vai vienkārši jānomaina grafika Android aplikācijās vai arī jāmaina elementu izkārtojums sistēmā un jāveic dziļākas izmaiņas kodā. Turpmākās darbības ir atkarīgas no tā, pieņemot, ka lietojumprogramma darbojas kā arhīvs, vai arī pilnīga demontāža un rediģēšanu.

Grafikas maiņa Android sistēmas lietojumprogrammās

Lai vienkārši nomainītu vai pārveidotu oriģinālo grafiku (mainītu pogu krāsas, pārzīmētu attēlus utt.), pietiek ar standartu. WinRAR arhivētājs... Tajā pašā laikā lietotājam ir jābūt root tiesībām ierīcē (analog konts administrators operētājsistēmā Windows), kā arī ir vēlams, lai būtu alternatīva atkopšana (CWM) un saknes pārlūks (lai piekļūtu Android failu sistēmai tieši pašā ierīcē).

Pirmkārt, ierīcē ir jāiespējo USB atkļūdošana, pēc tam savienojiet to ar datoru, izmantojot USB kabeli, un instalējiet nepieciešamos draiverus. Tie parasti atrodas uz virtuālais disks kas parādās, kad ir izveidots savienojums ar datoru.

Pēc tam arī jālejupielādē ADB spraudnis failu pārvaldniekam internetā. Šis spraudnis ļauj redzēt visu Android sistēmu kā savienotu disku ar mapēm. Visas sistēmas lietojumprogrammas atrodas / system / app, kā arī / system / framework. Atraduši vajadzīgo aplikāciju, vienkārši pārkopējam to datorā. Ja spraudnis nav instalēts, varat izmantot root Explorer, lai kopētu lietojumprogrammu ar apk paplašinājumu uz noņemamu SD karti un pēc tam no tās uz datoru.

Pēc kopēšanas vēlamo pieteikumu jūs varat sākt rediģēt grafiku. Starp citu, visi attēli Android lietojumprogrammās tiek saglabāti png formātā, kuru var viegli atvērt ar jebkuru grafisko redaktoru. Atverot lietojumprogrammas failu ar WinRAR, tiek atklātas vairākas mapes. Mūs interesēs tikai res mape, kuras iekšpusē, savukārt, būs daudz dažādas mapes... No tiem ir nepieciešami tikai tie, kuru nosaukumā ir vārds "zīmējams".

Tagad atcerēsimies mūsu ierīces veidu un tās ekrāna izšķirtspēju. Ja šis ir viedtālrunis un izšķirtspēja ir 240x320, tad mūs galvenokārt interesēs zīmējamās un zīmējamās ldpi mapes. Ja izšķirtspēja ir 320x480 - attiecīgi izvelkamās un izvelkamās mdpi mapes, bet 480x800 izšķirtspējai - zīmējamās un izvelkamās HDpi mapes. Papildus tām parasti ir arī mapes, kuru nosaukumā ir vārds "zeme" – tās ir grafikas portreta režīmam, t.i. kad ierīce ir sasvērta.

Ja turat rokās planšetdatoru, mūs interesēs tikai zīmējamās un izvelkamās mdpi mapes jebkurā ekrāna izšķirtspējā.

Pārkopējot atlasītās mapes datorā, oriģinālos attēlus varat nomainīt vai pārkrāsot ar vēlamajiem un acij tīkamajiem. Īpaša uzmanība jāpievērš bildēm ar izšķirtspēju 9.png. Fakts ir tāds, ka gar šāda attēla perimetru ir īpašs rāmis viena pikseļa platumā ar īpašām atzīmēm, kuru integritātes pārkāpums izraisīs lietojumprogrammas darbības traucējumus. Tāpēc, rediģējot šādus failus, jābūt ļoti uzmanīgiem.

Pēc mapes rediģēšanas pabeigšanas tā ir jāaugšupielādē atpakaļ arhīvā, kas ir pati lietojumprogramma ar apk paplašinājumu. Šajā gadījumā WinRAR ir obligāti jāizvēlas opcija "bez saspiešanas".

Izlabotā lietojumprogramma tiek augšupielādēta atpakaļ ierīcē, izmantojot saknes pārlūkprogrammu (vispirms fails tiek kopēts SD kartē un no tās uz ierīci), vai arī pēc atkopšanas iziešanas - nekavējoties no datora uz / sistēmu / lietotni vai / sistēma / ietvara mape ... Pēc tam jums ir jāiestata faila atļaujas, izmantojot atbilstošās opcijas saknes pārlūkā vai ADB spraudnī. Tiem jābūt formātā 644. Pēc ierīces restartēšanas var redzēt atjauninātās lietojumprogrammas rezultātu.

Sistēmas lietojumprogrammu pirmkoda rediģēšana

Nedaudz vairāk jāpiepūlas, lai rediģētu sistēmas lietojumprogrammu pirmkodu. Lai pēc izmaiņu veikšanas lietojumprogrammu varētu izjaukt un salikt, jums būs jāveic dažas nākamās darbības.

1) Instalējiet datorā nepieciešamo programmatūras pakotni savā jaunākās versijas: Java SE Runtime Environment un Android Windows SDK(programmas darbam ar lietojumprogrammām un to komponentiem), APKtool vai APKManager vai Firmware_tool (viena no trim programmām sistēmas lietojumprogrammu izjaukšanai un dekompilēšanai), NotePad ++ redaktors (Android sistēmas lietojumprogrammu pirmkoda izmaiņu veikšanai).

2) Iespējojiet ierīcē USB atkļūdošanu, pievienojiet to datoram, izmantojot USB kabeli, instalējiet nepieciešamos draiverus darbam ar ierīci.

3) Izmantojot kādu no iepriekš minētajām programmām, lai strādātu ar lietojumprogrammas kodu, jums ir jāizņem mape / system / framework (pilnībā) no tālruņa uz atbilstošo programmu mapi un sistēmas lietojumprogrammas no mapes / system / app. Piemēram, programmai Firmware_tool faili no tālruņa ir jāpārkopē uz mapi C: Firmwaretoolfw_project1_source2_system.img_unpacked attiecīgajās apakšmapēs (lietojumprogrammas - lietotņu mapē, faili no framework - ietvara mapē). Lietojot gan šo, gan citas programmas, noteikti izlasiet to norādījumus.

4) Uzstādiet "bāzes karkasu", t.i. noteikumu kopums, saskaņā ar kuru tiks veikta lietojumprogrammu dekompilācija (t.i., koda izjaukšana) un kompilācija (t.i., koda salikšana).

Tas pabeidz sagatavošanos darbam ar sistēmas lietojumprogrammām.

Lietojumprogrammu izlādēšana no ierīces un to ielāde atpakaļ tiek veikta tādā pašā veidā, kā aprakstīts sadaļā "Grafikas maiņa Android sistēmas lietojumprogrammās".

Android lietojumprogrammu koda rediģēšana parasti tiek veikta, izmantojot NotePad ++ redaktoru - vienu no ērtākajiem teksta redaktoriem ar sintakses izcelšanas iespēju izvēlētajai programmēšanas valodai. Parasti, rediģējot, jūs varat arī mainīt grafiku, izmantojot atlasīto grafisko redaktoru.

Kad rediģēšana ir pabeigta, modificētā lietojumprogramma tiek ielādēta atpakaļ ierīcē, un pati ierīce ir jāpārstartē. Uzlabotāki redaktori izmanto dažādus emulatorus, lai atkļūdotu lietojumprogrammas pirms to augšupielādes ierīcē, piemēram, Eclipse no Google.

Programmas Android platformai ir viens fails ar apk paplašinājumu, kas ir ļoti ērti. Faktiski jebkuras programmas instalēšana viedtālrunī vai planšetdatorā tiek samazināta līdz tā vienkārša kopija uz jūsu sīkrīku. Kas ir apk fails un kā var redzēt, kas ir tā iekšpusē?

Kas ir APK fails?

Saīsinājums APK tiek atklāts kā Android Package Kit - Android lietojumprogrammu izpildāma failu pakotne. Tas ir arhīvs, kurā ir apkopoti un palaišanai gatavi kodi un citi resursi. apk faili tiek glabāti tādās interneta vietnēs kā Google Play no kurienes varat tos lejupielādēt un instalēt savā sīkrīkā. Tie nav šifrēti.

Tās struktūru izstrādātājs ir sagatavojis darbībai vidē virtuālā iekārta Dalvik vai ART. Šīs iekārtas ir iebūvētas operētājsistēmā Android, un tajās tiek darbinātas visas jūsu ierīcē esošās lietojumprogrammas.

Pats apk fails ir parasts arhīvs, kuru varat atvērt ar jebkuru arhivētāju Windows vide... Piemēram, WinRAR vai failu menedžeris kas atver ZIP arhīvus. Paskatīsimies, kas tur ir iekšā.

  • Izpildāms fails ar paplašinājumu dex (nosaukums var būt jebkurš), kas ir tikai programmas kods.
  • Blakus tam atrodas resources.arsc, kas ir resursu reģistrs, kas programmai jāizmanto. Tā ir XML struktūra.
  • AndroidManifest.xml ir jebkuras programmas obligāts fails, manifests, kas satur galveno informāciju par to. Šeit, piemēram, var ierakstīt programmas versiju, nepieciešamo Android versiju, informāciju par izstrādātāju, nepieciešamās ekrāna izšķirtspējas utt.
  • Res direktorijā ir iekšējie resursi, kas programmai ir nepieciešami. Šeit var atrasties visi attēli, ikonas, ikonas, kartes un tā tālāk.
  • Lib direktorijs - vietējās bibliotēkas, lai programma darbotos, piemēram, C ++ kods. Šī direktorija var nebūt, ja bibliotēkas netiek izmantotas.
  • Līdzekļu direktorijs — papildu resursi lietojumprogrammai, dažkārt tā var arī pietrūkt. Tieši kuri resursi ir jāizmanto, ir aprakstīti failā resources.arsc.
  • Direktorija META-INF - programmas metadati. Piemēram, fails MANIFEST.MF, kurā var būt datu ceļi un to kontrolsummas. Šeit var saglabāt RSA sertifikātu failus, manifesta versijas informāciju un līdzīgu pakalpojumu informāciju.

Pārskats par populāriem ARK failu redaktoriem

Kā jau minēts, jūs varat izpakot apk failu, izmantojot jebkuru ZIP arhivētāju. Pēc tam jūs varat apskatīt tur glabātos resursus.

Ar attēliem problēmu nebūs vispār, tos var atvērt jebkurā atbilstošā programmā. XML formātā atver jebkura teksta redaktors piemēram, Notepad ++. Ja zināt, kā šis formāts darbojas, tad tos jau var rediģēt. Bet kompilētajiem izpildāmajiem failiem ir jāizmanto īpaši rīki.

Eclipse redaktors... Tā ir pilnīga starpplatformu vide programmētājam. Varat izstrādāt jebkurā modernā valodā un sagatavot izpildāmos failus, tostarp Android. Vidi var elastīgi pielāgot, izmantojot daudzus spraudņus.

Android SDK ... Kā norāda nosaukums, šis ir īpašs izstrādes rīks. mobilās programmas tas ir paredzēts Android. Izmantojot to, varat viegli dekompilēt kāda cita lietojumprogrammas izpildāmos failus vai rakstīt savus no jauna. Tas atšķiras ar to, ka pēc vēlēšanās tas savieno dažādus moduļus koda atkļūdošanai un testēšanai, programmu saderības ar dažādiem sīkrīkiem pārbaudei utt.

APK lejupielādētājs... Šis ir spraudnis Chrome pārlūks, kas ļauj ļoti viegli lejupielādēt apk programmas no jebkuras vietnes un apskatīt to struktūru. Lai to izdarītu, jūs pat varat nebūt reģistrēts pakalpojumā Google Play.

APK redaktors... Redaktors, kas ļauj strādāt ar resursiem apk pakotnēs. Nav tik jaudīgs kā Eclipse, bet ļoti svarīgs komplekts vienkāršus uzdevumus... Piemēram, jūs varat noņemt reklāmu vienības no programmas, rusificējiet saskarni, nomainiet ikonas vai faktūras ar savām un daudz ko citu.

Dažreiz dažas Android lietojumprogrammas lietotājam kaut kādā veidā nav piemērotas. Piemērs ir kaitinošas reklāmas... Un arī gadās - visiem labi padodas programma, bet tikai tulkojums tajā ir vai nu greizs, vai vispār nav. Vai, piemēram, izmēģinājuma programmu, un saņemt pilna versija nav iespēju. Kā situāciju var mainīt?

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ā, kas var sniegt mums vienu vai otru labumu.

Lai to visu paveiktu patstāvīgi, būs nepieciešamas vismaz pamatzināšanas par Java valodu, kurā tiek rakstītas Android lietojumprogrammas, un XML valodu, kas tiek lietota visur Android - no pašas aplikācijas un tās piekļuves tiesību aprakstīšanas līdz saglabājot virknes, kas tiks parādītas ekrānā. Jums būs nepieciešama arī spēja apstrādāt specializētu konsoles programmatūru.

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

Lietojumprogrammu dekompilēšana

Rakstā strādājām tikai ar izjauktu aplikācijas kodu, bet ja iekšā lieliskas lietojumprogrammas veikt nopietnākas izmaiņas, būs daudz grūtāk saprast smali kodu. Par laimi, mēs varam indeksē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 ir nepieciešami divi rīki:

  • dex2jar - 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. Varat arī 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.

Tie ir jāizmanto šādi. Pirmkārt, mēs palaižam dex2jar, kā argumentu norādot ceļu uz apk pakotni:

% dex2jar.sh mail.apk

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

APK pakotnes ierīce un to iegūšana

Iepakojums Android lietotnes patiesībā ir parasts ZIP fails, satura apskatīšanai un izvilkšanai nav nepieciešami īpaši rīki. Pietiek ar arhivētāju - 7zip priekš Windows vai konsoles unzip priekš Linux. Bet tas ir par iesaiņojumu. Kas ir iekšā? Iekšpusē mums parasti ir šāda struktūra:

  • META-INF /- satur lietojumprogrammas digitālo sertifikātu, kas apliecina tās veidotāju, un pakotnes failu kontrolsummas;
  • res / - dažādi resursi, ko lietojumprogramma izmanto savā darbā, piemēram, attēli, interfeisa deklaratīvs apraksts un citi dati;
  • AndroidManifest.xml- pieteikuma apraksts. Tas ietver, piemēram, nepieciešamo atļauju sarakstu Android versija un nepieciešamā ekrāna izšķirtspēja;
  • 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 visi, tad, iespējams, lielākajā daļā APK. Tomēr ir vēl daži ne tik bieži sastopami faili / direktoriji, kurus ir vērts pieminēt:

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

Šo direktoriju izmanto spēļu ražotāji, kuri spēles dzinēju ievieto C / C ++ valodā, kā arī augstas veiktspējas lietojumprogrammu izstrādātāji (piemēram, Google Chrome). Ierīce tika sakārtota. Bet kā iegūt pašu pakotnes failu interesējošajai lietojumprogrammai? Tā kā no ierīces nav iespējams paņemt APK failus bez saknes (tie atrodas direktorijā / data / app), un root ne vienmēr ir ieteicams, ir vismaz trīs veidi, kā iegūt lietojumprogrammas failu datorā:

  • APK Downloader paplašinājums pārlūkam Chrome;
  • Īsta APK Leecher lietojumprogramma;
  • dažādas failu koplietošanas un warezniki.

Kuru lietot, ir gaumes jautājums; mēs dodam priekšroku lietošanai atsevišķas lietojumprogrammas, 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 tas darbosies pat Windows, pat nikos.

Pēc programmas palaišanas ir 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, sastādot kodu zvanītājā # #8255## un pēc tam atrodiet rindu Ierīces ID. Aizpildot, jāievada tikai ID bez android prefiksa.

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

Skatīt un modificēt

Pieņemsim, ka esat atradis jūs interesējošo pakotni, lejupielādējis, izpakojis ... un, mēģinot apskatīt kādu XML failu, es biju pārsteigts, atklājot, 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ē, jums nav jāinstalē SDK. Faktiski visām APK pakotņu izpakošanas, modificēšanas un iepakošanas 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 (code.google.com/p/smali) komplektētāja/demontētāja baitu kods;
  • aapt- rīks resursu pakoš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 arī atsevišķi;
  • parakstītājs- līdzeklis priekš Digitālais paraksts modificēta pakotne (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 bāzes. 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ā (tostarp bināros XML un arsc failus), pārbūvēt pakotni ar mainītiem resursiem, taču tā nevar 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 vajadzētu iegūt pašu jar failu:

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

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


Apskatīsim apktool opcijas. Īsāk sakot, ir trīs galvenās komandas: d (atšifrēt), b (veidot) un if (instalēt ietvaru). Ja ar pirmajām divām komandām viss ir skaidrs, ko tad dara trešais, nosacījuma operators? Tas izpako norādīto lietotāja interfeisa ietvaru, kas ir nepieciešams, izdalot jebkuru sistēmas pakotni.

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

  • -s- neizjaukt 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- mēs norādām 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, tāpēc jums vienkārši jānorāda viena no komandām un ceļš uz APK, piemēram:

$ apktool d mail.apk

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

Preparēšana. Atspējot reklāmas

Teorija, protams, ir laba, bet kāpēc tā ir vajadzīga, ja 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āmas. Piemēram, lai tas būtu Virtual Torch - virtuālā lāpa. Mums šī programmatūra ir ideāla, jo tā ir pilna ar kaitinošām reklāmām un turklāt 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 nolemjat izmantot Virtuous Ten Studio, vienkārši atveriet lietojumprogrammā APK failu un izpakojiet to, kuram izveidojiet projektu (Fails -> Jauns projekts), tad konteksta izvēlne atlasiet Importēt failu. Ja jūsu izvēle bija apktool, tad pietiek ar vienas komandas izpildi:

$ 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 apktool, lai izveidotu pakotni atpakaļ.

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

Kā jūs varētu nojaust, viņa ir atbildīga par atļaujas piešķiršanu lietojumprogrammai izmantot interneta savienojumu. Patiesībā, ja mēs vienkārši vēlamies atbrīvoties no reklāmām, mums, visticamāk, lietojumprogrammai būs jāatspējo internets. 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 kontrolsummas faili (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 satur vienu atslēgu pāri;
  • Parole un Apstiprināt- krātuves parole;
  • Alias- atslēgas nosaukums repozitorijā;
  • Alias ​​parole un Apstiprināt- slepenās atslēgas parole;
  • Derīgums- derīguma termiņš (gados). Noklusējums ir optimāls.

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 redakcija, ne autors nav atbildīgi par iespējamo kaitējumu, ko radījuši šī raksta materiāli.

Tagad varat parakstīt APK ar šo atslēgu. Cilnē APK parakstītājs atlasiet tikko ģenerēto failu, ievadiet tam paroli, atslēgas aizstājvārdu un paroli, pēc tam atrodiet APK failu un nospiediet pogu "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 uz / system / app / direktoriju, tās nav jāparaksta.

Pēc tam mēs nolaižam pakotni viedtālrunī, instalējam un palaižam to. Voila, reklāmas vairs nav! 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ņojums izskatās kaitinošs, un, godīgi sakot, mums vienkārši paveicās ar mēmu lietotni. Parasti rakstīta programmatūra, visticamāk, precizēs savas pilnvaras vai pārbaudīs interneta pieslēgumu un citādi vienkārši atsakās startēt. Kā būt šajā gadījumā? Protams, rediģējiet kodu.

Parasti lietojumprogrammu autori izveido īpašas klases reklāmu parādīšanai un šo klašu metožu izsaukšanai lietojumprogrammas palaišanas vai vienas no tās "aktivitātēm" (vienkāršāk sakot, lietojumprogrammu ekrāniem) laikā. Mēģināsim atrast šīs klases. Mēs ejam uz smali direktoriju, tad com (org satur tikai atvērto grafikas bibliotēku cocos2d), tad kauf (tieši tur, jo tas ir izstrādātāja vārds un viss viņa kods ir tur) - un šeit tas ir, mārketinga direktorijs. 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 ir viegli uzminēt, kas tieši tajā attēlo reklāmas.

Mēs varētu mainīt tās darbības loģiku, taču būtu daudz vienkāršāk 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 ir iestatī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. Mēs iebraucam rindā "Sludinājums" meklēšanā un atrodamies 25. rindā:

Lauka privātais sludinājums: Lcom / kauf / mārketings / Reklāma;

Šeit tiek izveidots reklāmas lauks, kurā atrodas Ad klases objekts. Komentējot, rindas priekšā novietojot zīmi ###. Turpinām meklēt. 423. rindiņa:

Jauna instance v3, Lcom / kauf / mārketings / Reklāma;

Šeit tiek izveidots objekts. Mēs komentējam. Turpinām meklēšanu un 433., 435., 466., 468., 738., 740., 800. un 802. rindā atrodam Ad klases metožu izsaukumus. Mēs komentējam. Izskatās, ka tas arī viss. Mēs ietaupām. Tagad jums atkal jāsaliek iepakojums un jāpārbauda tā veiktspēja un reklāmu klātbūtne. Eksperimenta tīrības labad mēs atgriežam no AndroidManifest.xml izdzēsto virkni, savācam pakotni, parakstām un instalējam.

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

Ak! 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 reklāmas pazuda, kamēr lietojumprogramma darbojās, bet palika galvenajā izvēlnē, tāpēc ieejas punkts ir atšķirīgs? Lai identificētu patieso ievades punktu, atkārtoti atveriet failu AndroidManifest.xml. Un jā, tajā ir šādas rindas:

Viņi mums norāda (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āpēc 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 vēlreiz meklējiet rindu "Ad", atrodiet 153. un 155. rindiņā pieminējumu par FirstAd klasi. Tas ir arī avota kodā un, spriežot pēc nosaukuma, ir precīzi atbildīgs par reklāmu rādīšanu galvenajā ekrānā. Mēs skatāmies tālāk, ir izveidota FirstAd klases instance un nolūks atbilstoši kontekstam, kas saistīts ar šo gadījumu, un pēc tam etiķete cond_10, nosacītā pāreja uz kuru tiek veikta tieši pirms klases gadījuma izveides. :

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

Visticamāk, programma kaut kā nejauši aprēķina, vai galvenajā ekrānā rādīt reklāmas, un, ja nē, pāriet tieši uz cond_10. Labi, vienkāršosim viņas uzdevumu un aizstāsim nosacījuma lēcienu ar beznosacījuma lēcienu:

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

Kodā vairs nav atsauces uz FirstAd, tāpēc aizveriet failu un no jauna salieciet mūsu virtuālo lāpu, izmantojot apktool. Kopējiet to viedtālrunī, instalējiet un palaidiet. Voila, visas reklāmas ir pazudušas, un apsveicam mūs visus.

Rezultāti

Šis raksts ir tikai īss ievads Android lietojumprogrammu uzlaušanas un modificēšanas paņēmieniem. 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 ar izmantojot Android NDK. Tomēr, ja ir pamatzināšanas, tas ir tikai laika jautājums, lai to izdomātu.

Apk editor pro, kuru varat lejupielādēt Android ierīcēm mūsu vietnē, ļaus uzlauzt / mainīt jebkuras lietojumprogrammas failu saturu. mobilās ierīces un pielāgojiet to atbilstoši savām vēlmēm.

Ī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ūra personālajiem datoriem.

Ko šī utilīta var darīt?

  1. Mainīt (tulkot) citu lietojumprogrammu nosaukumus.
  2. Mainiet arhitektūras izkārtojumus, krāsas, veidnes grafiskie iestatījumi(piemēram, ikonu lielums).
  3. Mainīt skaņas dizainu, multivides failus.
  4. Noņemt reklāmas.
  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āiet uz izvēlni. Tad jau izvēlieties kādu no tām instalēta lietojumprogramma operētājsistēmā Android vai tā apk failā. Pēc tam pēc noklusējuma tiks atvērti dati, kurus lietotājs var mainīt:

  • resursu rediģēšana;
  • failu nomaiņa;
  • vispārēja rediģēšana;
  • datu rediģēšana.

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

Programma ir atšķirīga 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 plašas iespējas lietojumprogrammu pielāgošanai lietotājam.
  2. Izvēlnē ir sadaļa Palīdzība, kurā vienkārši un detalizēti aprakstītas lielas redaktora 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ē.

Šīs utilītas izmantošana prasa zināmas prasmes un zināšanas. Nepieredzējuša lietotāja rokās rediģēšana var izraisīt integritātes pārkāpumus failu sistēma kas galu galā novedīs pie lietojumprogrammu avārijām. Palīdzības vienuma izvēlnē ir pārveidošanas piemēri ar attēliem un padomi, kā pareizi lietot apk editor pro Android ierīcēm. Tāpēc, ja ir vēlme tikt galā ar šo programmu, jums vienkārši jāievēro norādījumi.

Pietiek ar redaktoru 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.