Si të analizoni një skedar apk. Ne hapim, modifikojmë dhe paketojmë aplikacione Android. Çfarë është një skedar APK

Në këtë artikull, ju do të mësoni se nga përbëhet një aplikacion android, si të hapni një skedar APK dhe me cilat programe.

Çfarë është një skedar APK?

APK është një format i sistemit operativ Android që përdoret për skedarët e zbatueshëm të arkivuar të ekzekutueshëm, dhe vetë emri i skedarit mund të jetë gjithçka, por shtesa duhet të duket vetëm kështu .apk. Analogët e APK-së në sistemet e tjera operative janë në Windows .msi, në Symbian - .sis, në Linux - .rpm ose .deb.

Shihni se çfarë ka brenda
Në fakt, .apk është një arkiv ZIP, kështu që ju mund të shikoni në pajisjen e brendshme duke përdorur ndonjë menaxher skedari ose arkivues, për shembull WinRAR ose aplikacionin celular X-plore.




Duhet të mbahet mend se ju merrni vetëm qasje vizuale në burimet e brendshme, opsionet e redaktimit janë jashtëzakonisht të kufizuara.

Konsideroni strukturën
Brenda .apk shohim një numër skedarësh dhe dosjesh, le të zbulojmë se për çfarë shërbejnë:

  • AndroidManifest.xml është një lloj "pasaporte" e aplikacionit nga e cila mund të zbuloni të gjitha pikat kryesore, kërkesat, versionin, lejet etj.
  • META-INF kjo skedar përmban meta të dhëna, domethënë të dhëna rreth të dhënave, tabelave të kontrollit, shtigjeve të të dhënave, rrugëve të burimeve dhe tavolinave të kontrollit, çertifikatat. Ju mund ta hapni këtë skedar me çdo redaktues teksti, por rekomandohet të përdorni Notepad ++.
  • Dosja res përmban të gjitha burimet e programit, grafikë, siç janë ikonat, fotografitë, teksti, elementet grafike të ndërfaqes. Ju gjithashtu mund të përdorni lehtësisht dosjen.
  • class.dex - kodi direkt i programit, i ekzekutuar nga makina virtuale Dalvik VM, mund të shihni se brenda kësaj skedari mund të dekompiloni vetëm .apk, për këtë do të flasim në artikuj të tjerë. resources.arsc - skedar i përpiluar XML, ky skedar përmban të dhëna për të gjitha burimet e përdorura në program.
  • lib - një dosje me biblioteka vendase, në të cilat burimet mund të arrihen vetëm duke përdorur programe të specializuara. Gjithashtu, APK mund të përmbajë skedarë dhe dosje të tilla si com, org, udk, por jo gjithmonë.

Tani le të shohim strukturën e brendshme në më shumë detaje për këtë na duhet një program dekompilimi, Java dhe një skedar APK. Mjeti kryesor për çmontimin .apk është Apktool, por ky program funksionon vetëm nga linja, gjë që nuk është shumë e përshtatshme. Për analizë më të shpejtë dhe më të përshtatshme, mund të përdorni APKing, ky është i njëjti Apktool, por me aftësinë për të punuar nga menyja e kontekstit.


Dhe kështu që ne instalojmë APKing si çdo aplikacion për Windows dhe zgjedhim .apk, kliko me të djathtën mbi të dhe Shift në të njëjtën kohë, pas së cilës do të shohim sa vijon:



Dhe ne zgjedhim veprimin e kërkuar, për shembull, dekompilojmë plotësisht, atëherë programi do të përfundojë operacionin dhe do të krijojë një dosje me të njëjtin emër.



Duke hapur dosjen ne do të kemi qasje në të gjitha burimet e skedarit APK.



Tani të gjithë skedarët me tekst mund të redaktohen, ndërsa respektoni rregullat themelore, mund të përdorni programin popullor Notepad ++, për shembull, merrni parasysh AndroidManifest.xml

Përmenda aplikacionin SmartAPKTool. Mund të shpaketojë, paketojë dhe nënshkruajë skedarë të modifikuar apk. Përparësia e tij është prania e një ndërfaqe grafike. Sidoqoftë, ekziston edhe një pengesë serioze. SmartAPKTool nuk është azhurnuar për një kohë të gjatë dhe programi gabimisht shpaketon dhe paketon aplikacione për versione të reja të Android. Prandaj, këtu do të përpiqem të shpjegoj se si të përdorim aplikacionin për këto qëllime. apktool.

Vërejtje 1.
Programi SmartAPKTool është akoma i përshtatshëm për t'u përdorur për nënshkrimin e skedarëve apk të mbledhur.
Vërejtje 2.
Lidhjet për programet e përmendura në artikull janë

Programi apktool nuk ka një ndërfaqe grafike. Ky është një disavantazh për ata që nuk janë mësuar të punojnë me rreshtin e komandës. Por ka edhe një plus: ndryshe nga SmartAPKTool, ne do të shohim të gjitha gabimet, që do të thotë se do të dimë se çfarë të rregullojmë.

Shkarkoni dy arkiva: njëra e zakonshme për të gjitha sistemet, tjetra për sistemin tonë (në shembull - Windows):

Shpaketoni të dy arkivat në të njëjtën dosje bosh (në shembullin tonë, C: \\ apktool \\). Përmbajtja e saj duhet të duket si kjo:

Tani e tutje ne mund ta përdorim programin apktool.

Vërejtje 3.
Përdoruesit 64-bit të Linux do të duhet të instalojnë paketën ia32-libs:

sudo apt-get instalo ia32-libs

Në të njëjtën dosje, ne vendosim skedarin që duhet të shpaketojmë. Për shembull, le ta quajmë atë orig.apk
Shtypja e butonit Shift dhe mbajtja e tij, kliko me të djathtën në çdo hapësirë \u200b\u200bbosh në dosje (kliko jo në skedarë!) Pas kësaj, zgjidhni artikullin "Hap dritaren e komandës". Në tastierën që shfaqet, shtypni:

deshifroj apktool orig.apk

Skedari do të shpaketohet:

Tani kemi një dosje me aplikacionin e paketuar në drejtorinë C: \\ apktool \\. Emërtohet njësoj si skedari origjinal, minus shtesën: C: \\ apktool \\ orig \\. Ne mund të ndryshojmë skedarët burimorë siç përshkruhet në artikullin e Android: Si të instaloni dy aplikacione identike në një telefon. Pasi të kemi bërë ndryshimet, le të ndërtojmë një kopje të aplikacionit duke paketuar skedarët burimorë në apk:

rezultat i ndërtimit të apktool.apk

Këtu result.apk është emri i skedarit që kemi dalë për ndërtimin e kopjimit. Nëse nuk ka gabime, atëherë skedari do të ndërtohet:

Pjesa tjetër është përtej qëllimit të artikullit:

  1. Nëse ka gabime gjatë montimit, duhet të gjeni shkakun e tyre dhe ta rregulloni atë.
  2. Mbetet për të nënshkruar skedarin rezultues result.apk. Kjo mund të bëhet duke përdorur SmartAPKTool, siç u përmend më lart; gjithçka në të është intuitive. Ka edhe mënyra të tjera për të nënshkruar një skedar apk.
  3. Kur instaloni një kopje, kur ajo fillon ose ekzekutohet, mund të ndodhin edhe gabime. Ata duhet të kapen duke përdorur programin adb të përfshirë në Android SDK.

Necessaryshtë e nevojshme të nënshkruani aplikacionin, përndryshe nuk do të instalohet. Gabimet nuk janë aq të zakonshme dhe problemet më të zakonshme që i shkaktojnë ato përshkruhen në artikull.

Në procesin e përdorimit të firmware të ndryshëm për pajisjet Android, ndonjëherë bëhet e nevojshme të ndryshoni aplikacionet e sistemit të integruara në sistemin operativ në një mënyrë ose në një tjetër. Në këtë artikull, ne do ta shqyrtojmë këtë çështje në detaje.

Natyrisht, ju duhet të çmontoni dhe ribashkoni skedarin APK të sistemit në mënyrë që të funksionojë si duhet dhe në mënyrë të qëndrueshme. Le të kuptojmë hap pas hapi se çfarë duhet bërë për këtë.

Së pari, duhet të deodexoni skedarët APK të sistemit. Ne do t'ju tregojmë se si ta bëni këtë në.

Pra, skedari .apk është deodeksuar dhe dekompiluar. Ne e çmontojmë zbatimin me interes për ne, le të emërohet, për qartësi të shembullit, kornizë- rez. apk... Ne e kujtojmë atë në kokën tonë si një aplikacion origjinal.

Le të themi se kemi bërë të gjitha ndryshimet e nevojshme në aplikim. Ne do të flasim më shumë për të gjitha aspektet e APK-ve në. Tani duhet ta paketoni përsëri. Le të kujtojmë aplikacionin e përfunduar të paketuar si një aplikacion të modifikuar 2.

Tani do të shpjegojmë pse ishte e nevojshme të memorizoheshin mendërisht aplikacionet si origjinale dhe të modifikuara. 2. Një aplikacion i ndërtuar nga ApkTool (ose duke përdorur një shtrirje grafike të ndërfaqes së përdoruesit si SmartApkTool) nuk do të funksionojë, por ky nuk është një problem. Ne kryejmë veprimet e mëposhtme:

Vendosja e këtyre skedarëve përsëri në APK është mjaft e lehtë. Për ta bërë këtë, duhet të ekzekutoni apktool me flamurin e duhur të ndërtimit dhe ta kaloni atë në rrugën e dosjes me aplikacionin e dekompiluar brenda. Për shembull, nëse kemi një dosje aplikacioni që ndodhet në të njëjtin direktori si apktool, atëherë komanda do të duket kështu:

Guaskë

java -jar apktool.jar b app

java - jar apktool .jar app b

Pas montimit, skedari i përfunduar APK do të jetë në direktori aplikacion / ndërtim... Tjetra, duhet të nënshkruash APK. Kjo është bërë në mënyrë që aplikacioni të funksionojë në pajisjet ku korrigjimi i gabimeve është i ndaluar. Kjo është, lëshimi i aplikacioneve të nënshkruara në pajisje të tilla është i ndaluar. Lexoni më shumë rreth certifikatave dixhitale dhe procedurës së nënshkrimit të skedarëve këtu.

Nënshkrimi i një skedari është shumë i thjeshtë: ekziston një vegël e veçantë për këtë e quajtur signapk. Duhet filluar me kalimin e certifikatave të para si argumente, më pas shtegun për në aplikim dhe në fund rrugën për aplikacionin e nënshkruar (rezultati, ku mund të ruhet). Duket kështu:

Guaskë

java -jar signapk.jar testkey.x509.pem testkey.pk8 * .apk apk_signed.apk

java - jar signapk .jar testkey .x509 .pem testkey .pk8 * .apk apk_signed .apk

Ku ta merrni një çertifikatë të tillë, pyesni? Certifikatat mund të gjenden në internet. Ose gjenerojeni vetë. Udhëzime të hollësishme për vendosjen dhe gjenerimin e të gjitha skedarëve të nevojshëm mund të gjenden, për shembull ,.

Përfundim

Siç mund ta shihni, dekompilimi dhe montimi i skedarëve APK është një proces mjaft i thjeshtë, i cili mund të automatizohet, duke e bërë më të lehtë për studiuesin. Vetë makina virtuale Dalvik është gjithashtu e lehtë për t’u mësuar dhe hapur, e cila, nga njëra anë, ul pengesën e hyrjes për zhvilluesit, dhe nga ana tjetër, është arsyeja kryesore për një përqindje kaq të madhe të piraterisë në platformën Android. Kjo është pjesërisht arsyeja pse zhvilluesit e lojërave, për shembull, zakonisht nuk janë të interesuar të lëshojnë lojëra interesante me një histori. Muchshtë shumë më fitimprurëse me qëndrimin aktual të përdoruesve për të gozhduar ferma të ngjashme me donacione. Prandaj, ne blejmë aplikacione, mbështesim zhvilluesit dhe përfundojmë me përmbajtje interesante. Por nuk ka absolutisht nevojë për të dhuruar!

Faleminderit të gjithëve, shihemi përsëri.

Ndonjëherë disa aplikacione në Android nuk i përshtaten përdoruesit në një farë mënyre. Një shembull janë reklamat e bezdisshme. Dhe gjithashtu ndodh - të gjithë janë të mirë në program, por vetëm përkthimi në të është ose i shtrembër, ose mungon plotësisht. Ose, për shembull, programi është provë, por nuk është e mundur të merret versioni i plotë. Si mund të ndryshohet situata?

Prezantimi

Në këtë artikull, ne do të flasim për mënyrën e çmontimit të një pakete APK me një aplikacion, shikimin e strukturës së saj të brendshme, çmontimin dhe dekompilimin e kodit byt dhe gjithashtu përpiqemi të bëjmë disa ndryshime në aplikacion që mund të na sjellë një ose një përfitim tjetër.

Për t'i bërë të gjitha këto vetë, do t'ju duhet të paktën një njohuri themelore e gjuhës Java, në të cilën janë shkruar aplikacionet Android dhe gjuha XML, e cila përdoret kudo në Android - nga përshkrimi i vetë aplikacionit dhe të drejtat e tij të hyrjes deri në ruajtjen e vargjeve që do të shfaqen në ekran. Ju gjithashtu do të duhet të jeni në gjendje të trajtoni softuer të specializuar të konsolës.

Pra, çfarë është saktësisht paketa APK në të cilën shpërndahet absolutisht i gjithë programi kompjuterik për Android?

Çakompilimi i aplikacioneve

Në këtë artikull, ne kemi punuar vetëm me kodin e aplikacionit të çmontuar, megjithatë, nëse bëni ndryshime më serioze në aplikacione të mëdha, do të jetë shumë më e vështirë të kuptoni kodin smali. Për fat të mirë, ne mund ta dex kodin dex në kodin Java që, megjithëse nuk është origjinal dhe nuk është përpiluar përsëri, është shumë më e lehtë për të lexuar dhe kuptuar logjikën e aplikacionit. Për ta bërë këtë, na duhen dy mjete:

  • dex2jar - përkthyes i bytecode Dalvik në bytecode JVM, mbi bazën e të cilit mund të marrim kod në gjuhën Java;
  • jd-gui është vetë dekompiluesi që ju lejon të merrni kodin Java të lexueshëm nga bytecode JVM. Përndryshe, ju mund të përdorni Jad (www.varaneckas.com/jad); megjithëse është mjaft i vjetër, në disa raste gjeneron kod më të lexueshëm sesa Jd-gui.

Ato duhet të përdoren kështu. Së pari, ne ekzekutojmë dex2jar, duke specifikuar rrugën për në paketën apk si një argument:

% dex2jar.sh mail.apk

Si rezultat, paketa Java. mail.jar do të shfaqet në direktorinë aktuale, e cila tashmë mund të hapet në jd-gui për të parë kodin Java.

Pajisjet APK-paketat dhe marrja e tyre

Një paketë e aplikacioneve Android në thelb është një skedar zip i rregullt që nuk kërkon ndonjë mjet të veçantë për të parë dhe zbërthyer përmbajtjen e tij. Mjafton të keni një arkivues - 7zip për Windows ose zbërthimin e konsolës për Linux. Por kjo ka të bëjë me mbështjellësin. Çfarë ka brenda? Brenda, ne zakonisht kemi strukturën e mëposhtme:

  • META-INF / - përmban një certifikatë dixhitale të aplikacionit, duke konfirmuar krijuesin e saj dhe tabela kontrolli të skedarëve të paketës;
  • res / - burime të ndryshme që përdor aplikacioni në punën e tij, për shembull, imazhe, një përshkrim deklarativ të ndërfaqes dhe të dhëna të tjera;
  • AndroidManifest.xml - përshkrimi i aplikacionit. Kjo përfshin, për shembull, një listë të rezolucioneve të kërkuara, versionin e kërkuar të Android dhe rezolucionin e kërkuar të ekranit;
  • klasat.dex - përpiluar bytecode të aplikacionit për makinën virtuale Dalvik;
  • burimet.arsc - gjithashtu burime, por të një lloji tjetër - në veçanti, vargjet (po, kjo skedar mund të përdoret për Rusifikim!).

Skedarët dhe drejtoritë e listuara janë, nëse jo në të gjitha, atëherë mbase në shumicën dërrmuese të APK-ve. Sidoqoftë, ka disa skedarë / drejtori të tjera më pak të zakonshme që vlen të përmenden:

  • pasuritë - analog i burimeve. Dallimi kryesor është se për të hyrë në një aset duhet të dini identifikuesin e tij, ndërsa lista e pasurive mund të merret në mënyrë dinamike duke përdorur metodën AssetManager.list () në kodin e aplikimit;
  • lib - Bibliotekat Native Linux të shkruara me NDK (Native Development Kit).

Ky direktori përdoret nga krijuesit e lojërave për të pritur një motor lojëra të shkruar në C / C ++, si dhe krijues të aplikacioneve me performancë të lartë (të tilla si Google Chrome). Pajisja u rendit. Por si e merrni skedarin aktual të paketës së aplikimit me interes? Meqenëse nuk është e mundur të merren skedarët APK nga pajisja pa root (ato gjenden në drejtorinë / data / app) dhe root nuk është gjithmonë i këshillueshëm, ekzistojnë të paktën tre mënyra për ta çuar skedarin e aplikacionit në kompjuter:

  • shtesa APK Downloader për Chrome;
  • aplikimi i vërtetë APK Leecher;
  • ndarja e ndryshme e skedarëve dhe warezniki.

Cila të përdorësh është çështje shijeje; ne preferojmë të përdorim aplikacione të ndara, kështu që do të përshkruajmë përdorimin e Real APK Leecher, veçanërisht pasi që është shkruar në Java dhe, në përputhje me rrethanat, do të funksionojë edhe në Windows, madje edhe në nix.

Pas fillimit të programit, duhet të plotësoni tre fusha: Email, Fjalëkalim dhe ID e Pajisjes - dhe të zgjidhni një gjuhë. Dy të parat janë posta elektronike dhe fjalëkalimi i llogarisë suaj të Google që përdorni në pajisjen tuaj. E treta është identifikuesi i pajisjes dhe mund ta merrni duke thirrur kodin në dialer # #8255## dhe pastaj gjetja e linjës ID e pajisjes. Kur plotësoni, duhet të futni vetëm ID pa prefiksin android-.

Pas mbushjes dhe ruajtjes, shpesh shfaqet mesazhi "Gabim gjatë lidhjes me serverin". Nuk ka asnjë lidhje me Google Play, prandaj mos ngurroni ta injoroni dhe të kërkoni paketa që ju interesojnë.

Shikoni dhe modifikoni

Le të themi se keni gjetur një paketë për të cilën jeni të interesuar, të shkarkuar, të paketuar ... dhe ndërsa përpiqesha të shikoja një skedar XML, u befasova kur zbulova se skedari nuk është me tekst. Si ta dekompiloni atë dhe si të punoni me paketat në përgjithësi? A është vërtet e nevojshme të instaloni SDK? Jo, nuk keni pse të instaloni SDK. Në fakt, të gjitha hapat për të shpaketuar, modifikuar dhe paketuar paketat APK kërkojnë mjetet e mëposhtme:

  • arkivuesi ZIP për shpaketimin dhe paketimin;
  • smali - montuesi / çmontimi i bajt-kodit të makinës virtuale Dalvik (code.google.com/p/smali);
  • përshtaten - një mjet për paketimin e burimeve (si parazgjedhje, burimet ruhen në formë binare për të optimizuar performancën e aplikacionit). Përfshihet me Android SDK, por mund të merret veçmas;
  • nënshkrues - një mjet për nënshkrimin dixhital të një pakete të modifikuar (bit.ly/Rmrv4M).

Të gjitha këto mjete mund t’i përdorni veçmas, por kjo është e papërshtatshme, prandaj është më mirë të përdorni një program të nivelit më të lartë të ndërtuar mbi bazën e tyre. Nëse punoni në Linux ose Mac OS X, ekziston një mjet i quajtur apktool. Kjo ju lejon të shpaketoni burimet në formën e tyre origjinale (përfshirë skedarët binarë XML dhe arsc), të rindërtoni një paketë me burime të ndryshuara, por nuk mund të nënshkruajë paketa, kështu që do të duhet të ekzekutoni programin e nënshkruesit manualisht. Pavarësisht nga fakti që ndërmarrja është e shkruar në Java, instalimi i saj është mjaft jo standard. Së pari duhet të merrni vetë skedarin jar:

$ 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 $ PATH eksport \u003d ~ / bin: $ PATH

Nëse punoni në Windows, atëherë ka një mjet të shkëlqyeshëm të quajtur Virtual Ten Studio, i cili gjithashtu grumbullon të gjitha këto mjete (përfshirë vetë apktool), por në vend të ndërfaqes CLI, ai i siguron përdoruesit një ndërfaqe grafike intuitive me të cilën mund të kryeni operacione në shpaketimin, çmontimin dhe dekompilimin në disa klikime. Ky mjet është donacion, domethënë, ndonjëherë shfaqen dritare me një ofertë për të marrë një licencë, por kjo, në fund të fundit, mund të tolerohet. Nuk ka kuptim ta përshkruash, sepse mund ta kuptosh ndërfaqen brenda pak minutash. Por apktool, për shkak të natyrës së tij të konzollës, duhet të diskutohet në më shumë detaje.


Le të hedhim një vështrim në opsionet e apktool. Me pak fjalë, ekzistojnë tre komanda kryesore: d (dekodoj), b (ndërtoj), dhe nëse (instaloni kornizën). Nëse gjithçka është e qartë me dy komandat e para, atëherë çfarë bën operatori i tretë, me kusht? Ajo zbërthen kornizën e specifikuar të ndërfaqes së ndërhyrjes, e cila është e nevojshme në rastet kur ju copëtoni ndonjë paketë të sistemit.

Le të shqyrtojmë opsionet më interesante të komandës së parë:

  • -s - mos i çmontoni skedarët dex;
  • -r - mos shpaketoni burimet;
  • -b - mos futni informacione për korrigjimin e gabimeve në rezultatet e çmontimit të skedarit dex;
  • - shtegu i kornizës - përdorni kornizën e specifikuar të ndërfaqes së përdoruesit në vend të asaj të integruar në apktool. Tani le të shohim disa opsione për komandën b:
  • -f - montimi i detyruar pa kontrolluar ndryshimet;
  • -a - ne specifikojmë rrugën për në aapt (një mjet për ndërtimin e një arkivi APK), nëse për ndonjë arsye dëshironi ta përdorni atë nga një burim tjetër.

Përdorimi i apktool është shumë i thjeshtë, për këtë thjesht duhet të specifikoni një nga komandat dhe rrugën për në APK, për shembull:

$ apktool d mail.apk

Pas kësaj, të gjithë skedarët e paketës së nxjerrë dhe të çmontuar do të shfaqen në drejtorinë e postës.

Diseksioni. Çaktivizo reklamat

Teoria është, sigurisht, e mirë, por pse është e nevojshme nëse nuk dimë çfarë të bëjmë me paketën e paketuar? Le të përpiqemi të zbatojmë teorinë për përfitimet tona, përkatësisht, të modifikojmë disa softuerë në mënyrë që të mos na shfaqë reklama. Për shembull, le të jetë Pishtari Virtual - një pishtar virtual. Për ne, ky softuer është i përsosur sepse është i mbushur me bebe të syve me reklama të bezdisshme dhe, për më tepër, mjaft i thjeshtë për të mos u humbur në xhunglën e kodit.


Pra, duke përdorur një nga metodat e mësipërme, shkarkoni aplikacionin nga tregu. Nëse vendosni të përdorni Virtuous Ten Studio, thjesht hapni skedarin APK në aplikacion dhe shpaketoni atë, për të cilin krijoni një projekt (Skedari -\u003e Projekti i ri), pastaj zgjidhni Importo skedarin nga menyja e kontekstit të projektit. Nëse zgjedhja juaj ra në apktool, atëherë ekzekutoni vetëm një komandë:

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

Pas kësaj, një pemë skedari e ngjashme me atë të përshkruar në seksionin e mëparshëm do të shfaqet në drejtorinë com.kauf.particle.virtualtorch, por me një direktori shtesë smali në vend të skedarëve dex dhe një skedari apktool.yml. E para përmban kodin e zbërthyer të skedarit të ekzekutueshëm dex të aplikacionit, e dyta përmban informacionin e shërbimit të nevojshëm nga apktool për të ndërtuar përsëri paketën.

Vendi i parë që duhet të shikojmë është, sigurisht, AndroidManifest.xml. Dhe këtu menjëherë takojmë linjën vijuese:

Siç mund ta merrni me mend, ai është përgjegjës për dhënien e lejes së aplikimit për të përdorur lidhjen e Internetit. Në fakt, nëse thjesht duam të heqim qafe reklamat, ka shumë të ngjarë të kemi nevojë të çaktivizojmë internetin për aplikacionin. Le të përpiqemi ta bëjmë këtë. Ne fshijmë rreshtin e specifikuar dhe përpiqemi të ndërtojmë softuerin duke përdorur apktool:

$ apktool b com.kauf.particle.virtualtorch

Skedari që rezulton APK do të shfaqet në drejtorinë com.kauf.particle.virtualtorch / build /. Sidoqoftë, nuk do të jetë e mundur ta instaloni, pasi nuk ka një nënshkrim dixhital dhe skema kontrolli të skedarëve (thjesht nuk ka direktorinë META-INF). Ne duhet të nënshkruajmë paketën duke përdorur programin apk-signer. Nisur. Ndërfaqja përbëhet nga dy skeda - në të parën (Gjeneruesi i Çelësave) krijojmë çelësat, në të dytën (Nënshkruesi i APK) nënshkruajmë. Për të krijuar çelësin tonë privat, plotësoni fushat e mëposhtme:

  • Dosja e synuar - skedari i daljes në çelësin kryesor; zakonisht ruan një palë çelësash;
  • Fjalëkalimi dhe Konfirmo - fjalëkalimi për ruajtje;
  • Alias - emri i çelësit në depo;
  • Fjalëkalimi alias dhe Konfirmo - fjalëkalimin sekret të çelësit;
  • Vlefshmëria - periudha e vlefshmërisë (në vite). Parazgjedhja është optimale.

Fushat e tjera janë zakonisht opsionale - por të paktën një duhet të plotësohet.


KUJDES

Për të nënshkruar një aplikacion duke përdorur apk-nënshkruesin, duhet të instaloni Android SDK dhe të specifikoni rrugën e plotë për të në cilësimet e aplikacionit.

I gjithë informacioni sigurohet vetëm për qëllime informative. As bordi editorial dhe as autori nuk janë përgjegjës për ndonjë dëm të mundshëm të shkaktuar nga materialet e këtij artikulli.

Tani mund ta nënshkruani APK me këtë çelës. Në skedën Signer APK, zgjidhni skedarin e krijuar rishtas, futni fjalëkalimin, pseudonimin kryesor dhe fjalëkalimin për të, pastaj gjeni skedarin APK dhe shtypni me guxim butonin "Sign". Nëse gjithçka shkon mirë, paketa do të nënshkruhet.

INFO

Meqenëse kemi nënshkruar paketën me çelësin tonë, ajo do të bie ndesh me aplikacionin origjinal, që do të thotë se kur përpiqemi të azhurnojmë softuerin përmes tregut, do të marrim një gabim.

Një nënshkrim dixhital kërkohet vetëm për softuerin e palës së tretë, kështu që nëse jeni duke modifikuar aplikacionet e sistemit që janë instaluar duke i kopjuar në direktorinë / system / app /, atëherë nuk keni nevojë t'i nënshkruani ato.

Pas kësaj, ne e lëshojmë paketën në smartphone, instalojmë dhe lëshojmë në treg. Voila, reklamat janë zhdukur! Në vend të kësaj, megjithatë, u shfaq një mesazh që ne nuk kemi internet ose nuk kemi lejet e duhura. Në teori, kjo mund të jetë e mjaftueshme, por mesazhi duket i bezdisshëm dhe, të them të drejtën, ne ishim thjesht me fat me një aplikacion memec. Një softuer i shkruar normalisht ka shumë të ngjarë të sqarojë autoritetin e tij ose të kontrollojë praninë e një lidhje interneti dhe përndryshe thjesht refuzon të fillojë. Si të jesh në këtë rast? Sigurisht, redaktoni kodin.

Në mënyrë tipike, autorët e aplikacioneve krijojnë klasa të veçanta për shfaqjen e reklamave dhe metodat e thirrjeve të këtyre klasave gjatë fillimit të aplikacionit ose një prej "aktiviteteve" të tij (për ta thënë thjesht, ekranet e aplikacioneve). Le të përpiqemi t'i gjejmë këto klasa. Ne shkojmë në drejtorinë smali, pastaj com (org përmban vetëm bibliotekën e hapur grafike cocos2d), pastaj kauf (saktësisht atje, sepse ky është emri i zhvilluesit dhe i gjithë kodi i tij është atje) - dhe këtu është, drejtoria e marketingut. Brenda gjejmë një tufë skedarësh me shtrirjen smali. Këto janë klasa, dhe më e shquara prej tyre është klasa Ad.smali, me emrin e së cilës është e lehtë të gjesh se çfarë saktësisht shfaq reklamat.

Ne mund të ndryshojmë logjikën e funksionimit të tij, por do të ishte shumë më e lehtë të hiqnim thirrjet për ndonjë nga metodat e tij nga vetë aplikacioni. Prandaj, ne dalim nga drejtoria e marketingut dhe shkojmë në direktorinë e grimcave ngjitur, dhe pastaj te virtualtorch. Skedari MainActivity.smali meriton vëmendje të veçantë këtu. Kjo është një klasë standarde Android që krijohet nga Android SDK dhe vendoset si pikë hyrëse e aplikacionit (analoge me funksionin kryesor në C). Hapni skedarin për redaktim.

Brenda është kodi smali (montuesi lokal). Quiteshtë mjaft konfuze dhe e vështirë për t’u lexuar për shkak të natyrës së tij të nivelit të ulët, kështu që ne nuk do ta studiojmë atë, por thjesht gjejmë të gjitha referencat për klasën Ad në kod dhe t'i komentojmë ato. Ne vozisim në linjën "Ad" në kërkim dhe e gjejmë veten në linjën 25:

Reklama private në terren: Lcom / kauf / marketing / Shpallje;

Kjo krijon një fushë reklame për të mbajtur një objekt të klasit Ad. Ne komentojmë duke vendosur shenjën ### përpara vijës. Ne vazhdojmë të kërkojmë. Linja 423:

New-instance v3, Lcom / kauf / marketing / Ad;

Këtu krijohet objekti. Ne komentojmë. Ne vazhdojmë kërkimin dhe gjejmë në linjat 433, 435, 466, 468, 738, 740, 800 dhe 802 thirrjet për metodat e klasës Ad. Ne komentojmë. Duket sikur kjo është ajo. Ne kursejmë. Tani ju duhet ta vendosni përsëri paketën së bashku dhe të kontrolloni performancën e saj dhe praninë e reklamave. Për pastërtinë e eksperimentit, ne e kthejmë vargun e fshirë nga AndroidManifest.xml, mbledhim paketën, nënshkruajmë dhe instalojmë.

Derri ynë gini. Reklama e dukshme

Oops! Reklamat u zhdukën vetëm ndërsa aplikacioni po funksiononte, por mbeti në menunë kryesore, të cilën e shohim kur lëshojmë softuerin. Pra, prisni, por pika e hyrjes është klasa MainActivity dhe reklamat u zhdukën ndërsa aplikacioni po funksiononte, por mbetën në menunë kryesore, kështu që pika e hyrjes është e ndryshme? Për të identifikuar pikën e vërtetë të hyrjes, rihapni skedarin AndroidManifest.xml. Dhe po, ajo ka linjat e mëposhtme:

Ata na tregojnë (dhe më e rëndësishmja, android) se një aktivitet me emrin Start duhet të nisë në përgjigje të gjenerimit të një qëllimi (ngjarje) android.intent.action.MAIN nga kategoria android.intent.category.LAUNCHER. Kjo ngjarje gjenerohet kur trokitni lehtë mbi ikonën e aplikacionit në lëshues, kështu që përcakton pikën hyrëse, përkatësisht klasën Start. Më shumë gjasa, programuesi së pari shkroi një aplikacion pa menunë kryesore, pika e hyrjes në të cilën ishte klasa standarde MainActivity, dhe pastaj shtoi një dritare të re (aktivitet) që përmban menunë dhe përshkruhet në klasën Start, dhe manualisht e bëri atë pikë hyrëse.

Hapni skedarin Start.smali dhe përsëri shikoni për rreshtin "Ad", gjeni në rreshtat 153 dhe 155 përmendjen e klasës FirstAd. Isshtë gjithashtu në burim dhe, duke gjykuar nga emri, është saktësisht përgjegjës për shfaqjen e reklamave në ekranin kryesor. Ne shohim më tej, ekziston një krijim i një instance të klasës FirstAd dhe një qëllim, sipas kontekstit që lidhet me këtë shembull, dhe pastaj etiketën cond_10, tranzicioni i kushtëzuar në të cilin kryhet saktësisht para se të krijoni një shembull të klasës:

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

Më shumë gjasa, programi në një farë mënyre llogarit rastësisht nëse duhet të shfaqë reklama në ekranin kryesor, dhe nëse jo, ai hidhet drejt e në cond_10. Ok, le ta thjeshtojmë detyrën e saj dhe të zëvendësojmë kërcimin me kusht me një të pakushtëzuar:

# nëse-ne p1, v0 ,: cond_10 vazhdo: cond_10

Nuk ka më referenca për FirstAd në kod, prandaj mbyllni skedarin dhe ribashkoni pishtarin tonë virtual duke përdorur apktool. Kopjoni në smartphone, instaloni, lëshoni në treg. Voila, të gjitha reklamat janë zhdukur, dhe përgëzime për të gjithë ne.

Rezultati

Ky artikull është vetëm një prezantim i shkurtër i teknikave për thyerjen dhe modifikimin e aplikacioneve Android. Shumë çështje mbetën prapa skenave, të tilla si heqja e mbrojtjes, analizimi i kodit të ngatërruar, përkthimi dhe zëvendësimi i burimeve të aplikacionit, si dhe modifikimi i aplikacioneve të shkruara duke përdorur Android NDK. Sidoqoftë, duke pasur njohuri themelore, është vetëm çështje kohe për të kuptuar të gjitha këto.