Pats redaguokite apk programą. Kaip pakeisti sistemos APK failus „Android“? APK paketų išdėstymas ir gavimas

Pats redaguokite apk programą.  Kaip pakeisti sistemos APK failus „Android“?  APK paketų išdėstymas ir gavimas
Pats redaguokite apk programą. Kaip pakeisti sistemos APK failus „Android“? APK paketų išdėstymas ir gavimas

„Android“ sistemos programų redagavimas dažniausiai atliekamas tada, kai išmaniojo telefono, planšetinio kompiuterio ar kito šios operacinės sistemos valdomo įrenginio vartotojo nebetenkina dabartinė gamintojo ar pardavėjo įrenginyje įdiegtų programų išvaizda. Kita priežastis gali būti poreikis keisti ne tik Android programų grafinį dizainą, bet ir turėti įtakos įvairių elementų išsidėstymui bei pagrindinių funkcijų veikimui.

Norint pakeisti kodą, reikalingi pagrindiniai programavimo įgūdžiai beveik bet kuria kalba (geriausia Java ir C++). Norint pakeisti grafiką, tiks tiesios rankos ir galimybė dirbti grafikos rengyklėje.

Visų pirma reikia apsispręsti, ar tiesiog reikia pakeisti grafiką Android programose, ar keisti elementų išdėstymą sistemoje ir atlikti gilesnius kodo pakeitimus. Nuo to priklauso tolesni veiksmai, apimantys arba darbą su programa kaip archyvu, arba visišką jos išardymą ir redagavimą.

Grafikos keitimas Android sistemos programose

Norint tiesiog pakeisti ar modifikuoti originalią grafiką (pakeisti mygtukų spalvas, perbraižyti paveikslėlius ir pan.), pakanka turėti standartinį WinRAR archyvatorių kompiuteryje. Įrenginyje vartotojas turi turėti „root“ teises (analogiškas administratoriaus paskyrai sistemoje „Windows“), taip pat patartina turėti alternatyvų atkūrimą (CWM) ir root naršyklę (norint pasiekti „Android“ failų sistemą tiesiai įrenginyje). pats).

Visų pirma, įrenginyje turite įjungti „USB derinimą“, tada USB laidu prijungti jį prie kompiuterio ir įdiegti reikiamas tvarkykles. Paprastai jie yra virtualiame diske, kuris pasirodo prisijungus prie kompiuterio.

Tada taip pat reikia atsisiųsti failų tvarkyklės ADB papildinį iš interneto. Šis papildinys leidžia matyti visą Android sistemą kaip prijungtą diską su aplankais. Visos sistemos programos yra / system/app, taip pat /system/framework. Suradę reikiamą programą, tiesiog nukopijuokite ją į savo kompiuterį. Jei papildinys neįdiegtas, galite naudoti root naršyklę, kad nukopijuotumėte programą su apk plėtiniu į išimamą SD kortelę, o tada iš jos į kompiuterį.

Nukopijavę norimą programą, galite pradėti redaguoti grafiką. Beje, visos nuotraukos Android programose išsaugomos png formatu, kurį nesunkiai galima atidaryti naudojant bet kurį grafikos rengyklę. Kai atidarote programos failą naudodami WinRAR, galite pamatyti aplankų seriją. Mus domina tik res aplankas, kuriame savo ruožtu rasime daug įvairių aplankų. Iš jų reikia tik tų, kurių pavadinime yra žodis „piešti“.

Dabar prisiminkime savo įrenginio tipą ir jo ekrano skiriamąją gebą. Jei tai išmanusis telefonas, o skiriamoji geba yra 240x320, tada mus daugiausia domins braižymo ir braižomo ldpi aplankai. Jei skiriamoji geba yra 320 x 480 – atitinkamai braižomas ir braižomas mdpi aplankai, o 480 x 800 raiška – braižomas ir braižomas HDpi aplankai. Be jų, dažniausiai būna ir aplankų, kurių pavadinimuose yra žodis „žemė“ – tai portreto režimo grafika, t.y. kai prietaisas pakreipiamas.

Jei jūsų rankose yra planšetinis kompiuteris, mus domins tik braižomas ir braižomas-mdpi aplankai esant bet kokiai ekrano raiškai.

Nukopijavę pasirinktus aplankus į kompiuterį, originalius vaizdus galite pakeisti arba perspalvinti tokiais, kurie jums reikalingi ir džiugina akį. Ypatingą dėmesį turėtumėte atkreipti į nuotraukas, kurių raiška yra 9.png. Faktas yra tas, kad išilgai tokio vaizdo perimetro yra specialus vieno pikselio pločio rėmelis su specialiais ženklais, kurių vientisumo pažeidimas sukels programos gedimą. Todėl redaguojant tokius failus reikia būti labai atsargiems.

Redagavus aplanką, jį reikia įkelti atgal į archyvą, kuris yra pati programa su apk plėtiniu. Tokiu atveju WinRAR reikia pasirinkti parinktį „be suspaudimo“.

Pataisyta programa atsisiunčiama atgal į įrenginį naudojant root naršyklę (pirmiausia failas nukopijuojamas į SD kortelę, o iš jos į įrenginį), arba išėjus į atkūrimo režimą - tiesiai iš kompiuterio į /sistema/programą arba /. sistemos / karkaso aplankas . Tada turite nustatyti failo teises naudodami atitinkamas šakninio naršyklės arba ADB papildinio parinktis. Jie turi būti 644 formato Paleidę įrenginį iš naujo, galite pamatyti atnaujintos programos rezultatą.

Sistemos programų šaltinio kodo redagavimas

Norint redaguoti sistemos programų šaltinio kodą, reikia šiek tiek daugiau pastangų. Norėdami išardyti ir vėl surinkti programą atlikę pakeitimus, turėsite atlikti kelis toliau nurodytus veiksmus.

1) Įdiekite savo kompiuteryje reikiamą programinės įrangos paketą naujausiomis versijomis: Java SE Runtime Environment ir Android SDK Windows (programos, skirtos darbui su programomis ir jų komponentais), APKtool arba APKManager arba Firmware_tool (viena iš trijų programų, skirtų sistemos programoms išardyti ir dekompiliuoti ), NotePad++ redaktorius (skirtas Android sistemos programų šaltinio kodo pakeitimams).

2) Įrenginyje įjunkite „USB derinimą“, prijunkite jį prie kompiuterio USB kabeliu, įdiekite reikiamas tvarkykles darbui su įrenginiu.

3) Naudodami vieną iš aukščiau paminėtų programų, kad galėtumėte dirbti su programos kodu, iš telefono / system/app aplanko (visiškai) ir sistemos programas reikia ištraukti į atitinkamą programos aplanką. Pavyzdžiui, programai Firmware_tool failai iš telefono turi būti nukopijuoti į aplanką C:Firmwaretoolfw_project1_source2_system.img_unpacked, esantį atitinkamuose poaplankiuose (programos – į programėlės aplanką, failai iš karkaso – į karkaso aplanką). Naudodami ir šią, ir kitas programas būtinai perskaitykite joms skirtas instrukcijas.

4) Įdiegti „palaikymo karkasą“, t.y. taisyklių rinkinys, pagal kurį bus vykdomas programų dekompiliavimas (t.y. kodo išardymas) ir kompiliavimas (t.y. kodo surinkimas).

Tai užbaigia pasiruošimą darbui su sistemos programomis.

Programų iškrovimas iš įrenginio ir įkėlimas atgal vyksta panašiai kaip aprašyta skyriuje „Grafikos keitimas Android sistemos programose“.

Android programų kodo redagavimas dažniausiai atliekamas naudojant NotePad++ redaktorių – vieną patogiausių teksto redaktorių, turintį pasirinktos programavimo kalbos sintaksės paryškinimo galimybę. Paprastai redaguodami grafiką taip pat galite keisti naudodami pasirinktą grafikos rengyklę.

Baigus redaguoti, pakeista programa atsisiunčiama atgal į įrenginį, o patį įrenginį reikia paleisti iš naujo. Pažangesni redaktoriai naudoja įvairius emuliatorius, pvz., „Eclipse“ iš „Google“, kad derintų programas prieš atsisiunčiant jas į įrenginį.

Kartais kai kurios „Android“ programos tam tikru būdu netinka vartotojui. Pavyzdys – įkyri reklama. Taip pat atsitinka, kad programa tinka visiems, bet vertimas joje yra kreivas arba jo visai nėra. Arba, pavyzdžiui, programa yra bandomoji, bet nėra galimybės gauti pilnos versijos. Kaip pakeisti situaciją?

Įvadas

Šiame straipsnyje mes kalbėsime apie tai, kaip išardyti APK paketą su programa, pažvelgti į jo vidinę struktūrą, išardyti ir dekompiliuoti baito kodą, taip pat pabandysime atlikti keletą programų pakeitimų, kurie gali mums atnešti vienokios ar kitokios naudos.

Norėdami visa tai padaryti patys, jums reikės bent jau pagrindinių Java kalbos, kuria rašomos Android programos, ir XML kalbos, kuri naudojama visur Android – nuo ​​pačios programos aprašymo ir jos prieigos teisių iki eilučių saugojimo žinių. bus rodomas ekrane. Taip pat reikės mokėti naudotis specializuota konsolės programine įranga.

Taigi, kas yra APK paketas, kuriame platinama absoliučiai visa „Android“ programinė įranga?

Programos dekompiliavimas

Šiame straipsnyje mes dirbome tik su išardytu programos kodu, tačiau jei didelėse programose bus atlikti rimtesni pakeitimai, suprasti smali kodą bus daug sunkiau. Laimei, mes galime dekompiliuoti dex kodą į Java kodą, kuris, nors ir nėra originalus ir nesukompiliuotas atgal, yra daug lengviau skaitomas ir suprantamas programos logika. Norėdami tai padaryti, mums reikės dviejų įrankių:

  • dex2jar yra Dalvik baito kodo vertėjas į JVM baitinį kodą, kurio pagrindu galime gauti kodą Java kalba;
  • jd-gui yra pats dekompiliatorius, leidžiantis gauti skaitomą Java kodą iš JVM baito kodo. Kaip alternatyvą galite naudoti Jad (www.varaneckas.com/jad); Nors jis yra gana senas, kai kuriais atvejais jis sukuria skaitomesnį kodą nei Jd-gui.

Taip jie turėtų būti naudojami. Pirmiausia paleidžiame dex2jar, kaip argumentą nurodydami kelią į apk paketą:

% dex2jar.sh mail.apk

Dėl to Java paketas mail.jar atsiras dabartiniame kataloge, kurį jau galima atidaryti jd-gui, kad būtų galima peržiūrėti Java kodą.

APK paketų išdėstymas ir jų gavimas

„Android“ programos paketas iš esmės yra įprastas ZIP failas, kurio turiniui peržiūrėti ar išgauti nereikia jokių specialių įrankių. Pakanka turėti archyvatorių - 7zip Windows arba konsolės išpakavimas Linux. Bet tai apie įvyniojimą. Kas viduje? Apskritai viduje turime tokią struktūrą:

  • META-INF/- yra skaitmeninis programos sertifikatas, identifikuojantis jos kūrėją, ir paketo failų kontrolinės sumos;
  • res/ - įvairūs ištekliai, kuriuos programa naudoja savo darbe, pavyzdžiui, vaizdai, deklaratyvus sąsajos aprašymas, taip pat kiti duomenys;
  • AndroidManifest.xml- paraiškos aprašymas. Tai apima, pavyzdžiui, reikalingų leidimų sąrašą, reikiamą Android versiją ir reikiamą ekrano skiriamąją gebą;
  • klases.dex- sukompiliuotas programos baito kodas Dalvik virtualiajai mašinai;
  • ištekliai.arsc- taip pat ištekliai, bet kitokio pobūdžio - ypač eilutės (taip, šis failas gali būti naudojamas rusifikacijai!).

Išvardyti failai ir katalogai yra, jei ne visuose, tai galbūt daugumoje APK. Tačiau verta paminėti dar kelis ne tokius įprastus failus / katalogus:

  • turto- išteklių analogas. Pagrindinis skirtumas yra tas, kad norint pasiekti išteklius reikia žinoti jo identifikatorių, tačiau turto sąrašą galima gauti dinamiškai naudojant AssetManager.list() metodą programos kode;
  • lib- savosios Linux bibliotekos, parašytos naudojant NDK (Native Development Kit).

Šį katalogą naudoja žaidimų gamintojai, kurie ten talpina savo žaidimų variklius, parašytus C/C++, taip pat didelio našumo programų (pvz., Google Chrome) kūrėjai. Mes išsiaiškinome įrenginį. Bet kaip gauti jus dominančios programos paketo failą? Kadangi neįmanoma pasiimti APK failų iš įrenginio be root (jie yra /data/app kataloge), o įsišaknijimas ne visada patartinas, yra bent trys būdai, kaip gauti programos failą į kompiuterį:

  • APK Downloader plėtinys, skirtas Chrome;
  • Tikra APK Leecher programa;
  • įvairių failų talpinimas ir Varezniks.

Kurį naudoti – skonio reikalas; mes norime naudoti atskiras programas, todėl apibūdinsime „Real APK Leecher“ naudojimą, ypač todėl, kad jis parašytas „Java“ ir atitinkamai veiks „Windows“ arba „Nix“.

Paleidus programą, reikia užpildyti tris laukus: El. paštas, Slaptažodis ir Įrenginio ID – ir pasirinkti kalbą. Pirmieji du yra jūsų „Google“ paskyros, kurią naudojate įrenginyje, el. paštas ir slaptažodis. Trečias yra įrenginio identifikatorius, kurį galima gauti įvedus kodą rinkiklyje # #8255## tada suraskite įrenginio ID eilutę. Pildant tereikia įvesti ID be android priešdėlio.

Užpildžius ir išsaugojus dažnai pasirodo pranešimas „Klaida jungiantis prie serverio“. Tai neturi nieko bendra su „Google Play“, todėl drąsiai nekreipkite dėmesio į tai ir ieškokite jus dominančių paketų.

Peržiūrėti ir keisti

Tarkime, radote jus dominantį paketą, atsisiuntėte jį, išpakavote... o kai bandėte peržiūrėti kokį nors XML failą, nustebote sužinoję, kad failas nėra tekstas. Kaip jį dekompiliuoti ir kaip apskritai dirbti su paketais? Ar tikrai būtina įdiegti SDK? Ne, SDK diegti visai nebūtina. Tiesą sakant, visiems APK paketų išskleidimo, modifikavimo ir pakavimo veiksmams reikalingi šie įrankiai:

  • ZIP archyvatorius išpakavimui ir pakavimui;
  • smali- Dalvik virtualios mašinos baitinių kodų surinkėjas/disassembleris (code.google.com/p/smali);
  • aapt- išteklių pakavimo įrankis (pagal numatytuosius nustatymus ištekliai saugomi dvejetaine forma, siekiant optimizuoti programos veikimą). Įtraukta į Android SDK, bet galima įsigyti atskirai;
  • signataras- modifikuoto paketo skaitmeninio pasirašymo įrankis (bit.ly/Rmrv4M).

Visus šiuos įrankius galite naudoti atskirai, tačiau tai nepatogu, todėl geriau naudoti aukštesnio lygio programinę įrangą, sukurtą jų pagrindu. Jei dirbate su Linux arba Mac OS X, yra įrankis, vadinamas apktool. Tai leidžia išpakuoti išteklius pradine forma (įskaitant dvejetainius XML ir arsc failus), atkurti paketą su pakeistais ištekliais, tačiau jis nežino, kaip pasirašyti paketus, todėl pasirašymo programą turėsite paleisti rankiniu būdu. Nepaisant to, kad programa yra parašyta Java, jos diegimas yra gana nestandartinis. Pirmiausia turite gauti patį jar failą:

$ 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 $ eksportuoti PATH=~/bin:$PATH

Jei dirbate su Windows, tada yra puikus įrankis, pavadintas Virtuous Ten Studio, kuris taip pat kaupia visus šiuos įrankius (įskaitant patį apktool), tačiau vietoj CLI sąsajos suteikia vartotojui intuityvią grafinę sąsają, su kuria galite atlikti išpakavimo, išmontavimo ir dekompiliavimo operacijas keliais paspaudimais. Šis įrankis yra Donation-ware, tai yra, kartais pasirodo langai, kuriuose prašoma gauti licenciją, bet galiausiai tai gali būti toleruojama. Nėra prasmės to apibūdinti, nes sąsają galite suprasti per kelias minutes. Tačiau apktool dėl savo konsolinio pobūdžio turėtų būti aptartas išsamiau.


Pažvelkime į apktool parinktis. Trumpai tariant, yra trys pagrindinės komandos: d (dekodavimas), b (build) ir if (diegti sistemą). Jei su pirmomis dviem komandomis viskas aišku, tai ką daro trečiasis sąlyginis teiginys? Jis išpakuoja nurodytą vartotojo sąsajos sistemą, kuri reikalinga tais atvejais, kai išardote bet kurį sistemos paketą.

Pažvelkime į įdomiausias pirmosios komandos parinktis:

  • -s- neišardykite dex failų;
  • -r- neišpakuokite išteklių;
  • -b- neįterpti derinimo informacijos į dex failo išardymo rezultatus;
  • --rėmo kelias- naudokite nurodytą vartotojo sąsajos sistemą, o ne įmontuotą apktool. Dabar pažvelkime į keletą b komandos parinkčių:
  • -f- priverstinis surinkimas be pakeitimų tikrinimo;
  • -a- nurodykite kelią į aapt (APK archyvo kūrimo įrankį), jei dėl kokių nors priežasčių norite jį naudoti iš kito šaltinio.

Naudoti apktool yra labai paprasta, tiesiog nurodykite vieną iš komandų ir kelią į APK, pavyzdžiui:

$ apktool d mail.apk

Po to visi išskleisti ir išardyti paketo failai bus rodomi pašto kataloge.

Paruošimas. Reklamos išjungimas

Teorija, žinoma, gera, bet kam to reikia, jei nežinome, ką daryti su išpakuota pakuote? Pabandykime pritaikyti teoriją savo naudai, ty modifikuoti kokią nors programinę įrangą, kad ji mums nerodytų reklamos. Pavyzdžiui, tebūnie Virtualus žibintuvėlis – virtualus žibintuvėlis. Ši programinė įranga mums idealiai tinka, nes pilna erzinančios reklamos ir, be to, pakankamai paprasta, kad nepasiklystų kodo džiunglėse.


Taigi, naudodami vieną iš aukščiau pateiktų metodų, atsisiųskite programą iš rinkos. Jei nuspręsite naudoti Virtuous Ten Studio, tiesiog atidarykite APK failą programoje ir išpakuokite jį, sukurkite projektą (Failas -> Naujas projektas), tada projekto kontekstiniame meniu pasirinkite Importuoti failą. Jei jūsų pasirinkimas buvo apktool, tiesiog paleiskite vieną komandą:

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

Po to kataloge com.kauf.particle.virtualtorch atsiras failų medis, panašus į aprašytą ankstesniame skyriuje, tačiau vietoj dex failų ir apktool.yml failo bus papildomas Smali katalogas. Pirmajame yra išardytas programos vykdomojo dex failo kodas, antrajame yra paslaugų informacija, reikalinga apktool surinkti paketą atgal.

Žinoma, pirmiausia turėtume ieškoti AndroidManifest.xml. Ir čia iškart susiduriame su tokia eilute:

Nesunku atspėti, kad ji yra atsakinga už programos leidimų naudotis interneto ryšiu suteikimą. Tiesą sakant, jei norime tiesiog atsikratyti reklamos, greičiausiai tiesiog užblokuosime programą iš interneto. Pabandykime tai padaryti. Ištriname nurodytą eilutę ir bandome sukurti programinę įrangą naudodami apktool:

$ apktool b com.kauf.particle.virtualtorch

Gautas APK failas bus rodomas com.kauf.particle.virtualtorch/build/ kataloge. Tačiau jo įdiegti nepavyks, nes jame nėra skaitmeninio parašo ir failų kontrolinių sumų (paprasčiausiai nėra META-INF/ katalogo). Turime pasirašyti paketą naudodami apk-signer įrankį. paleistas. Sąsaja susideda iš dviejų skirtukų – pirmame (Key Generator) kuriame raktus, antrajame (APK Signer) pasirašome. Norėdami sukurti mūsų privatų raktą, užpildykite šiuos laukus:

  • Tikslinis failas- raktų saugyklos išvesties failas; jame paprastai saugoma viena raktų pora;
  • Slaptažodis Ir Patvirtinti- saugyklos slaptažodis;
  • Pseudonimas- rakto pavadinimas saugykloje;
  • Alias ​​slaptažodis Ir Patvirtinti- slapto rakto slaptažodis;
  • Galiojimas- galiojimo laikas (metais). Numatytoji vertė yra optimali.

Likę laukai paprastai yra neprivalomi, tačiau turite užpildyti bent vieną.


ĮSPĖJIMAS

Norėdami pasirašyti programą naudodami apk-signer, turite įdiegti Android SDK ir programos nustatymuose nurodyti visą kelią iki jos.

Visa informacija pateikiama tik informaciniais tikslais. Nei redaktoriai, nei autorius neatsako už bet kokią galimą žalą, padarytą dėl šio straipsnio medžiagos.

Dabar galite pasirašyti APK naudodami šį raktą. Skirtuke APK Signer pasirinkite naujai sugeneruotą failą, įveskite slaptažodį, rakto slapyvardį ir slaptažodį, tada suraskite APK failą ir drąsiai spustelėkite mygtuką „Sign“. Jei viskas bus gerai, paketas bus pasirašytas.

INFORMACIJA

Kadangi paketą pasirašėme savo raktu, jis prieštaraus pradinei programai, o tai reiškia, kad bandydami atnaujinti programinę įrangą per rinką gausime klaidą.

Skaitmeninis parašas reikalingas tik trečiosios šalies programinei įrangai, taigi, jei modifikuojate įdiegtas sistemos programas nukopijuodami jas į /system/app/ katalogą, jų pasirašyti nereikia.

Po to atsisiųskite paketą į savo išmanųjį telefoną, įdiekite jį ir paleiskite. Voila, skelbimo nebėra! Tačiau vietoj to pasirodė pranešimas, kad mes neturime interneto arba neturime atitinkamų leidimų. Teoriškai to gali pakakti, tačiau pranešimas atrodo erzinantis ir, tiesą sakant, mums tiesiog pasisekė su kvaila programa. Paprastai parašyta programinė įranga greičiausiai išaiškins savo kredencialus arba patikrins, ar yra interneto ryšys, o kitaip tiesiog atsisako paleisti. Kaip tokiu atveju būti? Žinoma, redaguokite kodą.

Paprastai programų autoriai sukuria specialias klases reklamoms rodyti ir šių klasių metodams iškviesti, kai paleidžiama programa arba viena iš jos „veiklų“ (paprasčiau tariant, programų ekranai). Pabandykime surasti šias klases. Mes einame į smali katalogą, tada com (org yra tik atvira grafinė biblioteka cocos2d), tada kauf (čia ji yra, nes čia yra kūrėjo vardas ir visas jo kodas) - ir štai, rinkodaros katalogą. Viduje randame krūvą failų su smali plėtiniu. Tai yra klasės, o žymiausia iš jų – Ad.smali klasė, iš kurios pavadinimo nesunku atspėti, kad būtent joje rodoma reklama.

Galėtume pakeisti jos veikimo logiką, tačiau būtų daug paprasčiau paprasčiausiai pašalinti bet kurio metodo iškvietimus iš pačios programos. Todėl paliekame rinkodaros katalogą ir einame į gretimą dalelių katalogą, o tada į virtualitorch. Čia ypatingo dėmesio nusipelno failas MainActivity.smali. Tai yra standartinė „Android“ klasė, sukurta „Android SDK“ ir įdiegta kaip programos įėjimo taškas (analogiškai pagrindinei funkcijai C). Atidarykite failą redaguoti.

Viduje yra smali kodas (vietinis surinkėjas). Jis gana painus ir sunkiai skaitomas dėl savo žemo lygio pobūdžio, todėl jo nenagrinėsime, o tiesiog kode surasime visas nuorodas į Reklamos klasę ir jas pakomentuosime. Paieškoje įvedame eilutę „Skelbimas“ ir patenkame į 25 eilutę:

Lauko privatus skelbimas:Lcom/kauf/marketing/Ad;

Čia sukuriamas skelbimo laukas, kuriame saugomas skelbimų klasės objektas. Komentuojame prieš eilutę padėdami ženklą ###. Tęsiame paieškas. 423 eilutė:

Naujos instancijos v3, Lcom/kauf/marketing/Ad;

Čia vyksta objekto kūrimas. Komentuokime. Tęsiame paiešką ir 433, 435, 466, 468, 738, 740, 800 ir 802 eilutėse randame skelbimų klasės metodų iškvietimus. Komentuokime. Atrodo, kad viskas. Sutaupyti. Dabar paketą reikia vėl sudėti ir patikrinti, ar jis veikia ir ar nėra reklamos. Eksperimento grynumo sumetimais grąžiname iš AndroidManifest.xml pašalintą eilutę, surenkame paketą, pasirašome ir įdiegiame.

Mūsų jūrų kiaulytė. Matosi reklama

Oi! Reklama dingo tik veikiant programai, bet liko pagrindiniame meniu, kurį matome paleidę programinę įrangą. Taigi, palaukite, bet įėjimo taškas yra MainActivity klasė, o reklama dingo programai veikiant, bet liko pagrindiniame meniu, taigi įėjimo taškas skiriasi? Norėdami nustatyti tikrąjį įvesties tašką, iš naujo atidarykite failą AndroidManifest.xml. Ir taip, jame yra šios eilutės:

Jie nurodo mums (ir, dar svarbiau, „Android“), kad veikla, pavadinta Pradėti, turėtų būti pradėta reaguojant į ketinimo (įvykio) android.intent.action.MAIN generavimą iš kategorijos android.intent.category.LAUNCHER. Šis įvykis sugeneruojamas, kai paleidimo priemonėje paliečiate programos piktogramą, todėl jis nustato įėjimo tašką, būtent pradžios klasę. Labiausiai tikėtina, kad programuotojas pirmiausia parašė programą be pagrindinio meniu, kurios įėjimo taškas buvo standartinė MainActivity klasė, o tada pridėjo naują langą (veiklą), kuriame yra meniu ir aprašyta klasėje Pradėti, ir rankiniu būdu padarė jį įrašu. tašką.

Atidarykite failą Start.smali ir vėl ieškokite eilutės „Ad“, 153 ir 155 eilutėse randame „FirstAd“ klasės paminėjimą. Jis taip pat yra šaltinio kode ir, sprendžiant iš pavadinimo, yra atsakingas už skelbimų rodymą pagrindiniame ekrane. Pažiūrėkime toliau, yra FirstAd klasės egzemplioriaus sukūrimas ir ketinimas, kuris, atsižvelgiant į kontekstą, yra susijęs su šiuo atveju, o tada etiketė cond_10, į kurią sąlyginis perėjimas atliekamas tiksliai prieš sukuriant egzempliorių. iš klasės:

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

Greičiausiai programa kažkaip atsitiktinai apskaičiuoja, ar reklama turi būti rodoma pagrindiniame ekrane, o jei ne, peršoka tiesiai į cond_10. Gerai, supaprastinkime jos užduotį ir pakeiskime sąlyginį perėjimą besąlyginiu:

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

Kode nebėra paminėjimų apie FirstAd, todėl uždarome failą ir iš naujo surenkame virtualų žibintuvėlį naudodami apktool. Nukopijuokite jį į savo išmanųjį telefoną, įdiekite, paleiskite. Voila, dingo visa reklama, su kuo mes visus sveikiname.

Rezultatai

Šis straipsnis yra tik trumpas Android programų įsilaužimo ir modifikavimo metodų įvadas. Daugelis problemų liko užkulisiuose, pvz., apsaugos pašalinimas, užmaskuoto kodo analizavimas, programų išteklių vertimas ir pakeitimas, taip pat programų, parašytų naudojant „Android NDK“, keitimas. Tačiau turint pagrindines žinias, tik laiko klausimas viską išsiaiškinti.

„Android“ platformos programos yra vienas failas su apk plėtiniu, o tai labai patogu. Tiesą sakant, bet kurios programos įdiegimas išmaniajame telefone ar planšetiniame kompiuteryje yra tiesiog nukopijuotas į savo programėlę. Kas yra apk failas ir kaip galite pamatyti, kas yra jo viduje?

Kas yra APK failas?

Santrumpa APK reiškia Android Package Kit – vykdomąjį failų paketą, skirtą Android programoms. Tai archyvas, kuriame yra sukompiliuoti ir paleisti paruošti kodai bei kiti ištekliai. apk failai saugomi interneto svetainėse, pvz., „Google Play“, iš kur juos galima atsisiųsti ir įdiegti į savo programėlę. Jie nėra užšifruoti.

Jos struktūrą kūrėjas paruošia veikti Dalvik arba ART virtualiosios mašinos aplinkoje. Šie įrenginiai yra integruoti į „Android“ OS ir juose veikia visos jūsų įrenginyje esančios programos.

Pats apk failas yra įprastas archyvas, kurį galite atidaryti naudodami bet kurį „Windows“ archyvatorių. Pavyzdžiui, WinRAR arba failų tvarkyklė, kuri atidaro ZIP archyvus. Pažiūrėkime, kas yra viduje.

  • Vykdomasis failas su plėtiniu dex (pavadinimas gali būti bet koks), kuris yra būtent programos kodas.
  • Šalia yra resources.arsc – tai išteklių, kuriuos programa turėtų naudoti, registras. Tai XML formato struktūra.
  • AndroidManifest.xml yra privalomas bet kurios programos failas, aprašas, kuriame yra pagrindinė informacija apie ją. Čia, pavyzdžiui, galima įrašyti programos versiją, reikiamą Android versiją, informaciją apie kūrėją, reikalingas ekrano raiškas ir pan.
  • Res kataloge yra vidinių išteklių, kurių reikia programai. Čia gali būti visos nuotraukos, piktogramos, piktogramos, žemėlapiai ir pan.
  • Lib katalogas – vietinės bibliotekos, skirtos programai paleisti, pavyzdžiui, C++ kodas. Šio katalogo gali nebūti, jei bibliotekos nenaudojamos.
  • Turto katalogas yra papildomi programos ištekliai, kurių kartais gali trūkti. Kokie ištekliai turėtų būti naudojami, aprašyti faile resources.arsc.
  • META-INF katalogas – programos metaduomenys. Pavyzdžiui, failas MANIFEST.MF, kuriame gali būti duomenų keliai ir jų kontrolinės sumos. Čia galima saugoti RSA sertifikato failus, manifesto versijos informaciją ir panašią paslaugų informaciją.

Populiarių ARK failų redaktorių apžvalga

Kaip jau minėta, apk failą galite išpakuoti naudodami bet kurį ZIP archyvatorių. Po to galėsite peržiūrėti ten saugomus išteklius.

Su vaizdais nebus jokių problemų, juos galima atidaryti bet kurioje atitinkamoje programoje. XML formatą galima atidaryti bet kuriuo teksto redaktoriumi, pavyzdžiui, Notepad++. Jei žinote, kaip veikia šis formatas, jau galite juos redaguoti. Tačiau sukompiliuotiems vykdomiesiems failams turėsite naudoti specialius įrankius.

Eclipse redaktorius. Tai visapusiška kelių platformų aplinka programuotojui. Galite kurti bet kuria šiuolaikine kalba ir paruošti vykdomuosius failus, įskaitant „Android“. Aplinką galima lanksčiai pritaikyti naudojant daugybę papildinių.

Android SDK. Kaip rodo pavadinimas, tai yra specializuotas įrankis, skirtas kurti mobiliąsias programas, skirtas specialiai „Android“. Su jo pagalba galite lengvai dekompiliuoti kažkieno programos vykdomuosius failus arba parašyti savo nuo nulio. Jis skiriasi tuo, kad pasirinktinai jungia įvairius modulius, skirtus derinimui ir jūsų kodo testavimui, programų suderinamumo su įvairiomis programėlėmis testavimui ir pan.

APK parsisiuntimo programa. Tai „Chrome“ naršyklės papildinys, leidžiantis labai lengvai atsisiųsti apk programas iš bet kurios svetainės ir peržiūrėti jų struktūrą. Norėdami tai padaryti, jums net nereikia prisiregistruoti „Google Play“.

APK redaktorius. Redagavimo priemonė, leidžianti dirbti su ištekliais apk paketuose. Ne tokia galinga kaip „Eclipse“, tačiau ji išsprendžia daugybę paprastų problemų. Pavyzdžiui, galite pašalinti reklamos blokus iš programos, rusifikuoti sąsają, pakeisti piktogramas ar tekstūras savomis ir dar daugiau.

„Apk editor pro“, kurį galite atsisiųsti „Android“ iš mūsų svetainės, leis nulaužti / pakeisti bet kurios programos, skirtos mobiliesiems įrenginiams, failų turinį ir pritaikyti jį savo nuožiūra.

Ypatumai

Programa yra profesionali priemonė, kuri pažengusių vartotojų rankose gali tapti galingu „Android“ programų redagavimo įrankiu. Funkcionalumas praktiškai nesiskiria nuo panašios programinės įrangos asmeniniams kompiuteriams.

Ką gali padaryti ši programa?

  1. Pakeiskite (išverskite) kitų programų pavadinimus.
  2. Keisti architektūros maketus, spalvas, grafinių nustatymų šablonus (pavyzdžiui, piktogramos dydį).
  3. Keisti garso dizainą, medijos failus.
  4. Pašalinti reklamą.
  5. Apeiti mokamo turinio blokavimą.
  6. Perkelkite programą iš įrenginio vidinės atminties į SD kortelę.
  7. Pakeiskite skiriamąją gebą ir dar daugiau.

Norėdami suprasti, kaip naudotis programa, turite atsisiųsti apk editor pro ir eiti į meniu. Tada pasirinkite „Android“ jau įdiegtą programą arba jos apk failą. Po to atsidarys numatytieji duomenys, kuriuos vartotojas gali pakeisti:

  • redaguoti išteklius;
  • failų pakeitimas;
  • bendras redagavimas;
  • duomenų redagavimas.

Programa pasiūlys įdiegti pakeistą versiją. Tai veikia ne visais atvejais, todėl seną versiją reikia pašalinti rankiniu būdu ir įdiegti naują. Išdiegę tarp „Android“ esančių programų turėtumėte pasirinkti apk redaktoriaus aplanką (patogumui galite naudoti ES Explorer) ir rasti pakeistą programos failą bei įdiegti jį įrenginyje.

Programa turi patogią sąsają. Navigacija yra gana paprasta, tačiau vartotojas turi turėti pagrindinių anglų kalbos žinių, kad ją suprastų.

Privalumai ir trūkumai

  1. Programa vartotojui atveria daugybę galimybių pritaikyti programas.
  2. Meniu yra pagalbos skyrius, kuriame paprastai ir išsamiai aprašomos daugybės redaktoriaus programos galimybių. Todėl vartotojams, kurie yra toli nuo programavimo, nereikės ieškoti pavyzdžių ir redagavimo instrukcijų trečiųjų šalių šaltiniuose.
  3. Galite nemokamai atsisiųsti programą mūsų svetainėje.

Norint naudotis šia programa, reikia tam tikrų įgūdžių ir žinių. Nepatyrusio vartotojo rankose redagavimas gali sukelti failų sistemos vientisumo pažeidimus, o tai galiausiai sukels programų gedimus. Pagalbos elemento meniu yra konversijų pavyzdžių su nuotraukomis ir patarimais, kaip tinkamai naudoti apk editor pro „Android“. Todėl, jei norite suprasti šią programą, tiesiog vadovaukitės instrukcijomis.

Redaktorius yra gana naudingas įrankis tiems, kurie susiduria su nepatogia programos sąsaja (rusų kalbos trūkumas, nuolatinė reklama, reklamjuostės ir kt.). Jei jau naudojote šią programą, pasidalykite savo įspūdžiais žemiau komentaruose.

Tai vėl aš ir mano instrukcijos arbatinukams ir kavos puodams su nuotraukomis.

Šį kartą išsamiai papasakosiu apie „Android“ OS sistemos komponentų pakeitimą, naudodamas būsenos juostos modifikacijos diegimo pavyzdį.

Android yra šiek tiek Linux. Keičiant failus būtina laikytis kelių taisyklių, kad telefonas netaptų plyta, kurią atgaivintų tik visiškas mirksėjimas, praradus visus duomenis iš vidinės įrenginio atminties. Vidiniai skaidiniai suformatuojami kitoje failų sistemoje nei FAT32 „flash drives“. Be kita ko, failų ypatybėse saugomi skirtingų vartotojų grupių (failo savininko, failo savininkų grupės, kitų vartotojų) leidimai. Dirbant su sisteminiais failais, jie turi būti išsaugoti, nes kraunant sistema gali tiesiog nepasiekti jų ir gali nepasileisti normaliai.
Pradėkime nuo įrankių.

Mums reikės:

  • Failų tvarkyklė, galinti dirbti su root teisėmis ir failų leidimais. „Root Explorer“ yra geriausias (jūs nusipirkote, tiesa?)
  • Pats modifikuotas failas, kurį norime įdėti vietoj sisteminio (nuoroda straipsnio pabaigoje).

Dabar naudojame vieną iš patogių Root Explorer funkcijų. Norėdami atidaryti kontekstinį meniu, ilgai bakstelėkite norimą failą

Ir spustelėkite elementą " Supakuokite šį failą Norėdami išsaugoti failą SD kortelės ZIP archyve. Po archyvavimo gausime tokį pranešimą:

Paspausk mygtuką " Likti“ pasilikti aplanke ir padaryti dar vieną dalyką.

Dabar viskas yra paruošta pakeisti failą.
Aš jau kalbėjau apie kiekvieno failo prieigos teises. Norėdami juos atkurti naujame faile, pirmiausia turite pažvelgti į juos iš senojo. Jie vaizduojami simbolių serija „rwxrwxrwx“. 1-oji triada - savininko teisės, 2-oji - savininkų grupės, 3-oji - visi kiti vartotojai. Mūsų failas turi leidimus „rw-r--r--“.

Dabar eikite į SD kortelę, suraskite ten pakeistą failą ir kontekstiniame meniu pasirinkite elementą " Kopijuoti", bet neskubėkite iš karto pasirinkti aplanko "/system/app", nes tuoj pat sugadinsime sistemą. Vietoj to nukopijuokite failą į specialų aplanką laikiniesiems failams "/data/local/tmp", kad atneštumėte failą į formą, kuri imsis sistemos.
Pirmiausia iškvieskite failo kontekstinį meniu ir pasirinkite " Pervardyti“ ir įveskite failo pavadinimą „SystemUI.apk“. Taip, nes „Linux“ pavadinime turi reikšmės raidžių didžiosios ir mažosios raidės, t. y. „systemui.apk“ ir „SystemUI.apk“ yra skirtingi failai.
Tada turite pakeisti failų teises, nes dabar jie beveik neabejotinai nustatyti neteisingai. Norėdami tai padaryti, dar kartą iškvieskite kontekstinį failo meniu ilgai bakstelėdami ir pasirinkite elementą " Leidimai". Mūsų vertės "rw-r--r--" žymimieji laukeliai turėtų būti išdėstyti taip:

spustelėkite " Gerai" ir dar kartą iškvieskite kontekstinį meniu. Dabar turite pakeisti šios programos savininką ir grupę. Norėdami tai padaryti, pasirinkite elementą " Keisti savininką Pasirodys langas su informacija apie dabartinį failo savininką.
Čia reikia padaryti nedidelį nukrypimą.
Aplanke „/system/app“ visi failai priklauso vartotojui „root“ (uid=0) ir grupei „root“ (gid=0), o aplanke „/system/framework“ vartotojui „ sistema“ (gid=1000) priklauso. ir grupė „sistema“ (gid=1000).
Remdamiesi tuo, kas išdėstyta aukščiau, nustatykite reikiamas reikšmes ir spustelėkite " Gerai".
Ir trečią kartą paskambinkite į kontekstinį failo meniu ir pasirinkite elementą " Kopijuoti“ ir kopijavimo dialogo lange eikite į aplanką „/system/app“. Dabar nedvejodami spustelėkite „ Įklijuoti“ ir atidžiai perskaitykite toliau.
Beveik iš karto sistema praneš, kad būsenos juostos procesas staiga baigėsi ir pasiūlys jį pradėti. Visi bandymai bus nesėkmingi. Tarp langų atsiradimo turite turėti laiko atlikti keletą veiksmų. Prieš paspausdami mygtuką, turite iškviesti meniu, kad išjungtumėte įrenginį, jis pasirodys po įspėjimu. Dabar reikia uždėti pirštą maždaug kairėje mygtuko pusėje. Dabar reikia labai greitai tris kartus spustelėti pirštu, kad spėtumėte uždaryti įspėjimą, pasirinkti išjungimo parinktį ir patvirtinti savo ketinimus.
Dabar laukiame, kol telefonas išsijungs, perkrauname jį ir džiaugiamės rezultatu arba nesimėgaujame ir ieškome klaidų.