Jinsi ya kufungua muundo wa apk kwenye android. Faili ya apk ni nini, jinsi ya kuifungua na jinsi ya kufanya kazi nayo

Watumiaji wanakabiliwa na ukweli kwamba hakuna programu moja kwenye kompyuta zao inafungua faili hizo. Na hii ni ya kawaida kabisa, kwa sababu faili iliyo na ugani wa APK ni faili ya usakinishaji kwa mfumo wa uendeshaji wa Android na haiwezekani kuendesha faili kama hiyo kwenye Windows.

Ikiwa unajikuta katika hali kama hiyo na haujui jinsi ya kufungua faili ya APK, basi una chaguzi mbili:

  • Hamisha faili ya APK kwenye kifaa chako cha Android na uendeshe faili hapo. Katika kesi hii, utaweza kujitambulisha na programu iliyo kwenye faili hii.
  • Unaweza pia kutoa faili ya APK kwenye kompyuta yako ya Windows. Katika kesi hii, utaweza kujijulisha na muundo wa faili hii, pamoja na yaliyomo.,

Ikiwa unataka kuendesha faili ya APK na kufahamiana na programu iliyo ndani yake, basi jambo la kwanza unahitaji kufanya ni kuhamisha faili hii kwa kifaa chako cha Android. Hii inaweza kufanywa kwa njia yoyote inayofaa kwako. Kwa mfano, unaweza kuunganisha kifaa chako cha Android kwenye kompyuta yako kwa kutumia kebo ya USB au kiolesura kisichotumia waya cha Bluetooth.

Baadaye, kwenye kifaa cha mkononi na mfumo wa uendeshaji wa Android, unahitaji kuzindua. Ili kufanya hivyo, fungua meneja wa faili yoyote, pata faili ya APK kwenye kumbukumbu ya kifaa na uifungue. Baada ya hayo, sentensi iliyo katika faili hii itaonekana. Baada ya usakinishaji, njia ya mkato kwenye programu iliyosanikishwa itaonekana kwenye eneo-kazi la Android. Kwa hiyo, unaweza kufungua programu kutoka kwa faili yako ya APK.

Njia ya pili ni kufungua faili ya APK kwenye kompyuta ya Windows kwa kutumia kumbukumbu. Ukweli ni kwamba faili ya APK kwa kweli ni rahisi . Kwa hiyo, unaweza kuifungua kwa kutumia archiver yoyote. Kwa mfano, unaweza kutumia archiver maarufu ya WinRAR kwa madhumuni haya.

Kwa kufungua faili ya APK kama kumbukumbu, unaweza kuona inajumuisha nini. Mara nyingi, faili hii inajumuisha folda na faili zifuatazo:

    • MANIFEST.MF - faili yenye taarifa kuhusu faili nyingine zilizo katika faili hii ya APK (hundi za faili);
    • CERT.RSA - cheti ambacho maombi haya yametiwa saini;
    • CERT.SF - faili yenye taarifa kuhusu cheti na rasilimali;
  • lib - Maktaba za Linux kwa kila aina ya kichakataji inayotumika zimehifadhiwa hapa:

    • armeabi - kwa wasindikaji wa ARMv6 na wakubwa;
    • armeabi-v7a - kwa ARMv7 na wasindikaji wapya zaidi;
    • x86 - kwa wasindikaji wenye usanifu wa x86;
    • mips - kwa wasindikaji wa MIPS;
  • res - rasilimali ambazo hazipo kwenye faili katika resources.arsc (tazama hapa chini).
  • Mali - rasilimali za AssetManager.
  • AndroidManifest.xml - faili inayoelezea programu hii. Hii huhifadhi jina la programu, jina la kifurushi, toleo la programu na maelezo mengine ambayo yanafaa kwa programu hiyo.
  • class.dex - msimbo wa maombi unaoweza kutekelezwa katika muundo wa DEX;
  • resources.arsc - rasilimali zilizokusanywa muhimu kwa ajili ya maombi kufanya kazi;

Kufungua faili za ARK ni swali maarufu sana. Aina hii ya hati hutumiwa kwenye simu mahiri na kompyuta kibao. Wanakuwezesha kufunga programu kwenye vifaa. Kifurushi cha usakinishaji kinajumuisha faili na programu yenyewe.


Ikiwa swali linatokea kuhusu jinsi ya kufungua faili za APK kwenye kompyuta na jinsi ya kuzizindua, utahitaji kujua kwamba kuna simulators maalum za Android kwa hili. Hizi ni pamoja na YouWave na BlueStacks. Wanafanya iwezekanavyo kufanya vitendo vile. Katika kesi hii, inafaa kulipa kipaumbele kwa chombo kinachoitwa 7-Zip. Ni hifadhi ya bure. Interface Programu ina interface rahisi. Dirisha linajumuisha:

Menyu kuu;
meneja wa faili;
vipau vya zana.

Vifungo vinavyofanya kazi vilivyo na vidokezo kwa Kirusi huongeza urahisi wa kutumia. Chombo kinaweza kuunganishwa kwenye menyu ya OS moja kwa moja baada ya usakinishaji. Inawezekana kutumia mstari wa amri.

Jukwaa la Wasanidi Programu

Ikiwa unahitaji kufungua faili za APK kwenye kompyuta yako na kuzifanyia mabadiliko, unapaswa kuzingatia programu ya Eclipse. Inategemea msimbo wa chanzo wazi. Kusudi kuu la programu ni kuongeza tija katika mchakato wa ukuzaji wa programu. Jukwaa ni thabiti katika uendeshaji na mifumo mbalimbali ya uendeshaji.

WinRAR

Ni kumbukumbu inayoweza kufungua faili za APK kwenye kompyuta kwa madhumuni ya kuzihakiki. Huduma ina kasi ya juu ya usindikaji wa habari. WinRAR inakuwezesha kugawanya safu ya data katika idadi maalum ya kiasi cha ukubwa fulani. Programu pia inafanya uwezekano wa kuhakikisha usalama wa habari. Nenosiri linatumika kwa hili.

Ikiwa una swali kuhusu jinsi ya kufungua hati ya APK kwenye kompyuta yako, unapaswa kuzingatia programu ya WinZip. Hii ni programu iliyoundwa kukandamiza faili. Pia ina uwezo wa kufungua pakiti za data zinazohitajika. Programu ina zana nyingi tofauti zilizojengwa kwenye kiolesura angavu. Faida isiyoweza kuepukika ya matumizi ni mchawi maalum ambao hufanya kuchimba nyenzo iwe rahisi iwezekanavyo. Inatosha kufuata mlolongo wa vitendo, ikiwa ni pamoja na haja ya kulipa kipaumbele kwa maswali fulani ya kuongoza.

Programu inakuwezesha kurejesha data iliyoharibiwa. Kwa kuongeza, kuangalia kwa makosa katika faili na kusahihisha hufanywa moja kwa moja. Inawezekana kusambaza kifurushi kwa rafiki moja kwa moja kutoka kwa programu unapotumia barua pepe. Kazi hii imepewa zana zilizojengwa.

Vifunguo vya moto hukuruhusu kuchakata faili nyingi kwa wakati mmoja. Mpango huo unaweza kuunganishwa kwenye orodha ya mfumo, hivyo kutumia chombo ni rahisi sana. Kuna kituo cha usaidizi ambapo wako tayari kutoa msaada ikiwa ni lazima. Timu ya watengenezaji ni rahisi kuwasiliana kupitia barua pepe.

Huduma zingine

Inafaa pia kuzingatia programu zingine za kufungua faili ya APK kwenye kompyuta yako. Mmoja wao ni Hamster Bure. Kumbukumbu hii ni rahisi kutumia na inasaidia kikamilifu vichakataji vya msingi vingi. Programu ni bure kutumia, ina interface nzuri, na inasaidia lugha ya Kirusi. Shukrani kwa kuunganishwa kwenye menyu, unaweza kufikia mara moja kazi kuu, ikiwa ni pamoja na chaguo la kufuta vifurushi vya data.

Kuna programu nyingine inayoitwa Universal Extractor. Pia inasaidia kufanya kazi na aina ya data iliyowasilishwa. Programu hukuruhusu kutoa data kutoka kwa kifurushi. Pia inafaa kutaja ExtractNow, shirika ambalo litafanya kazi kikamilifu. Mpango huo ni ufasaha katika kufungua faili na kuzifungua.

Inawezekana kutoa data kutoka kwa vifurushi vingi kwa wakati mmoja. Programu ina interface rahisi. Ili kuchakata data, ihamishe tu na panya kwenye dirisha kuu. Kwa kuongeza, programu hutumia mfumo wa utafutaji wa data. Zana za usaidizi hutolewa ikiwa ni lazima. Ikiwa programu imepunguzwa, ikoni maalum itaonekana kwenye eneo la arifa ya mfumo. Pia kuna kazi inayoitwa "Juu ya madirisha yote". Shughuli zote zilizofanywa zinaonyeshwa kwenye ripoti.

Hatimaye, ningependa kusema maneno machache kuhusu programu ya YouWave. Inakuruhusu kuendesha mashine pepe kwenye kompyuta yako, ambayo unaweza kucheza nayo programu na michezo ya Android.

Kutoka kwa njia zilizowasilishwa za kufungua faili za ARK, unaweza kuchagua moja ambayo itaunda urahisi wa juu.

Katika makala hii tutazungumzia jinsi ya kufunga programu au michezo kutoka kwa * .apk faili kwenye Android. Hivi karibuni au baadaye, wamiliki wa vifaa vinavyoendesha Android wanakabiliwa na hali ambapo utendaji wa kawaida wa mfumo unakuwa wa kuchosha, na hamu isiyozuilika ya kupanua inaonekana.

Tofauti na iOS, ambapo usakinishaji wa programu unategemea kufanya kazi na Duka la iTunes, watengenezaji wa Google wametoa uwezo wa kusanikisha programu kwa kutumia zana za kawaida. Lakini ili kufanya hivyo, unahitaji kuruhusu usakinishaji wa programu kutoka kwa vyanzo visivyojulikana, nenda kwa Mipangilio -> Programu na angalia kisanduku karibu na Vyanzo Visivyojulikana.

Programu zote za mfumo wa uendeshaji wa Android huja na kiendelezi cha faili ya *.apk. Kuhusu muundo wa faili kama hizo, kimsingi faili ya apk ni kumbukumbu ya kawaida, yaliyomo ambayo unaweza kutazama na kumbukumbu yoyote. Mfumo wa uendeshaji wa Android hutambua kwa kujitegemea faili hizo na huelewa nini cha kufanya nao. Kwa hivyo, unaweza kusanikisha programu kwenye Android kwa njia kadhaa.

1. Sakinisha *.apk faili kwenye Android

Ya kwanza, na kwa maoni yetu, njia ya kawaida ni kufunga *.apk faili kwenye Android kwa kutumia meneja wa faili. Unachohitaji kufanya ili kufanya hivi ni kuhamisha faili ya *.apk kwenye kadi ya SD ya kifaa chako. Kisha tumia kidhibiti chochote cha faili kinachopatikana na uwezo wa kusakinisha programu. Tunapendekeza kutumia Kidhibiti Faili cha ASTRO au ES File Explorer.

Kisha uzindua kidhibiti faili, pata *.apk faili na usakinishe programu kwa kutumia kisakinishi cha kawaida cha Android.

Kwa kuongeza, unaweza kufunga programu bila kutumia wasimamizi wa faili, kwa kutumia kivinjari cha kawaida. Ingiza tu content://com.android.htmlfileprovider/sdcard/FileName.apk kwenye upau wa anwani na usakinishaji utaanza kiotomatiki. Katika mfano huu, faili ya *.apk iko kwenye folda ya mizizi ya kadi ya SD.

2. Ufungaji kwa kutumia meneja wa programu

Njia ya pili, rahisi zaidi ya kusakinisha faili za *.apk kwenye Android ni kutumia wasimamizi wa programu. Programu hizi ziliundwa ili kurahisisha usakinishaji wa programu kupitia *.apk faili nyingi iwezekanavyo. Na kweli ni! Tulijaribu programu inayoitwa SlideME Mobentoo App Installer, ambayo tunapendekeza kwako.

Kisakinishi cha Programu cha SlideME Mobentoo kitachanganua kadi ya SD ya kifaa chako haraka iwezekanavyo na kuonyesha orodha ya faili zote za *.apk zilizopatikana. Baada ya hapo unaweza kusanikisha programu zinazohitajika kwa urahisi katika mbofyo mmoja.

3. Ufungaji kupitia kompyuta na USB

Mbali na hayo hapo juu, tunajua moja zaidi, na labda njia rahisi zaidi - kufunga * .apk maombi kwa kuunganisha kifaa cha Android kwenye kompyuta kupitia cable USB. Tunapendekeza utumie programu ya InstallAPK na viendeshi vya USB.

Sakinisha tu InstallAPK kwenye kompyuta yako, kisha uunganishe simu mahiri yako kupitia kebo ya USB na ubofye mara mbili faili ya *.apk. Programu itatambua kwa kujitegemea faili ya *.apk na kuanza kusakinisha programu kwenye kifaa chako cha Android.

Sio tu watengenezaji wa programu za rununu za kitaalam, lakini wakati mwingine hata watumiaji wa kawaida wanavutiwa na programu gani wanayo ya kufungua faili za APK kwenye kompyuta zao. Na pia - ni ipi iliyo bora zaidi. Kwa kweli, haiwezekani kujibu swali hili bila utata. Yote inategemea madhumuni halisi ambayo unapanga kufungua faili ya ARC.

Faili ya ARK ni nini?

Kwa kweli, umbizo hili la faili si chochote zaidi ya kumbukumbu ya kawaida ya ZIP. Ndani yake kuna kila aina ya vipengele vya programu ambavyo ni muhimu kwa uendeshaji wa mafanikio wa programu kwenye mfumo wa uendeshaji wa simu ya Android. Na kwa ujumla, muundo wa ARK ni muundo wa "asili" wa mfumo huu wa uendeshaji. Ipasavyo, wanapozungumza juu ya kupakua faili ya APK ya programu fulani, wanachomaanisha ni kupakua tu programu ya Android.

Jinsi na kwa nini faili za ARK zinafunguliwa

Kurudi kwa swali, ni mpango gani bora wa faili za APK kwenye kompyuta, itakuwa wazo nzuri kuamua kwanza ni kwa madhumuni gani hii inapaswa kufanywa:

  1. Ili kuzindua tu programu ya simu kwenye kompyuta yako;
  2. Kufungua kumbukumbu ya ARK kwenye kompyuta yako;
  3. Au sio tu kuchapisha kumbukumbu hii, lakini pia kuweza kuifanyia mabadiliko.

Katika kesi ya kwanza, tunaweza kukushauri uzingatie wanaoitwa emulators. Hizi ni programu maalum zinazokuwezesha kuendesha maombi ya simu moja kwa moja kwenye kompyuta yako binafsi. Hivi sasa, kuna programu nyingi zinazofanana, na ni vigumu sana kupendekeza chochote maalum. Watumiaji wengi wanapendelea maarufu .. Hata hivyo, kuna emulators nyingine.

Ikiwa unahitaji tu kufungua kumbukumbu, basi kwa kuwa faili ya ARK, kama ilivyoonyeshwa tayari, ni kumbukumbu ya kawaida ya kompyuta, inaweza kuchapishwa kwa kutumia karibu kumbukumbu yoyote ya Windows. Kwa mfano, Win RAR maarufu itaweza kukabiliana na kazi hii kikamilifu.

Kwa wale ambao wana mfumo wa uendeshaji wa Apple kwenye kompyuta zao, tunaweza kupendekeza programu kama vile Hifadhi ya Huduma. Pia itawaruhusu wanaotamani kujua ni nini, kwa kweli, kiko ndani ya kumbukumbu ya ajabu ya ARK.

Kweli, ili kuwa na uwezo wa sio tu kufungua kumbukumbu, lakini pia kuchambua, na pia kuwa na uwezo wa kufanya mabadiliko nayo na kuikusanya tena, kuna programu tofauti za watengenezaji. Kwa mfano, programu inatolewa kwa ajili ya kusoma faili za APK kwenye kompyuta na kufanya kazi na miundo ya APK - . Hii ni zana ya kitaalam ya kweli iliyo na emulator yake nk.


Wakati mwingine baadhi ya programu kwenye Android haziendani na mtumiaji kwa namna fulani. Mfano ni matangazo ya kuvutia. Na pia hutokea kwamba mpango huo ni mzuri kwa kila mtu, lakini tafsiri ndani yake ni ya kupotoka au haipo kabisa. Au, kwa mfano, programu ni jaribio, lakini hakuna njia ya kupata toleo kamili. Jinsi ya kubadilisha hali hiyo?

Utangulizi

Katika nakala hii tutazungumza juu ya jinsi ya kutenganisha kifurushi cha APK na programu, angalia muundo wake wa ndani, kutenganisha na kutenganisha bytecode, na pia jaribu kufanya mabadiliko kadhaa kwa programu ambazo zinaweza kutuletea faida moja au nyingine.

Ili kufanya haya yote mwenyewe, utahitaji angalau maarifa ya kimsingi ya lugha ya Java, ambayo programu za Android zimeandikwa, na lugha ya XML, ambayo hutumiwa kila mahali kwenye Android - kutoka kwa kuelezea programu yenyewe na haki zake za ufikiaji hadi kuhifadhi kamba. itaonyeshwa kwenye skrini. Utahitaji pia uwezo wa kutumia programu maalum ya console.

Kwa hivyo, ni kifurushi gani cha APK ambacho programu zote za Android husambazwa?

Mtengano wa maombi

Katika nakala hii, tulifanya kazi tu na nambari ya programu iliyotenganishwa, lakini ikiwa mabadiliko makubwa zaidi yanafanywa kwa programu kubwa, kuelewa nambari ya smali itakuwa ngumu zaidi. Kwa bahati nzuri, tunaweza kutenganisha nambari ya dex katika msimbo wa Java, ambayo, ingawa sio asili na haijakusanywa nyuma, ni rahisi kusoma na kuelewa mantiki ya programu. Ili kufanya hivyo, tutahitaji zana mbili:

  • dex2jar ni mfasiri wa bytecode ya Dalvik katika bytecode ya JVM, kwa msingi ambao tunaweza kupata msimbo katika lugha ya Java;
  • jd-gui ni decompiler yenyewe ambayo hukuruhusu kupata nambari inayoweza kusomeka ya Java kutoka kwa bytecode ya JVM. Kama mbadala, unaweza kutumia Jad (www.varaneckas.com/jad); Ingawa ni ya zamani kabisa, katika hali zingine hutoa nambari inayoweza kusomeka zaidi kuliko Jd-gui.

Hivi ndivyo zinapaswa kutumiwa. Kwanza, tunazindua dex2jar, tukibainisha njia ya kifurushi cha apk kama hoja:

% dex2jar.sh mail.apk

Kama matokeo, kifurushi cha Java mail.jar kitaonekana kwenye saraka ya sasa, ambayo inaweza tayari kufunguliwa kwenye jd-gui ili kutazama msimbo wa Java.

Mpangilio wa vifurushi vya APK na kuvipokea

Kifurushi cha programu ya Android kimsingi ni faili ya kawaida ya ZIP ambayo haihitaji zana maalum ili kutazama yaliyomo au kuitoa. Inatosha kuwa na kumbukumbu - 7zip kwa Windows au console unzip kwenye Linux. Lakini hiyo ni kuhusu kanga. Kuna nini ndani? Kwa ujumla, tuna muundo ufuatao ndani:

  • META-INF/- ina cheti cha digital cha maombi, kutambua muumbaji wake, na hundi za faili za mfuko;
  • res/ - rasilimali mbalimbali ambazo programu hutumia katika kazi yake, kama vile picha, maelezo ya kutangaza ya interface, pamoja na data nyingine;
  • AndroidManifest.xml- maelezo ya maombi. Hii inajumuisha, kwa mfano, orodha ya ruhusa zinazohitajika, toleo la Android linalohitajika na azimio la skrini linalohitajika;
  • madarasa.dex- iliyoandaliwa bytecode ya maombi kwa mashine ya kawaida ya Dalvik;
  • rasilimali.arsc- pia rasilimali, lakini ya aina tofauti - hasa, masharti (ndiyo, faili hii inaweza kutumika kwa Russification!).

Faili na saraka zilizoorodheshwa ziko, ikiwa sio zote, basi, labda, katika APK nyingi. Walakini, kuna faili / saraka ambazo sio za kawaida zinazofaa kutajwa:

  • mali- analog ya rasilimali. Tofauti kuu ni kwamba ili kufikia rasilimali unahitaji kujua kitambulisho chake, lakini orodha ya mali inaweza kupatikana kwa nguvu kwa kutumia njia ya AssetManager.list() katika msimbo wa maombi;
  • lib- maktaba asilia za Linux zilizoandikwa kwa kutumia NDK (Native Development Kit).

Saraka hii inatumiwa na watayarishaji wa mchezo ambao huweka injini zao za mchezo zimeandikwa katika C/C++ hapo, na pia waundaji wa programu zenye utendaji wa juu (kwa mfano, Google Chrome). Tuligundua kifaa. Lakini unapataje faili ya kifurushi cha programu unayovutiwa nayo? Kwa kuwa haiwezekani kuchukua faili za APK kutoka kwa kifaa bila mzizi (ziko kwenye saraka /data/programu), na mizizi haifai kila wakati, kuna angalau njia tatu za kupata faili ya programu kwenye kompyuta yako:

  • Kiendelezi cha Upakuaji wa APK kwa Chrome;
  • Programu halisi ya APK Leecher;
  • mbalimbali faili hosting na Varezniks.

Ni ipi ya kutumia ni suala la ladha; tunapendelea kutumia programu tofauti, kwa hivyo tutaelezea matumizi ya Real APK Leecher, haswa kwa vile imeandikwa katika Java na, ipasavyo, itafanya kazi katika Windows au Nix.

Baada ya kuanza programu, unahitaji kujaza sehemu tatu: Barua pepe, Nenosiri na Kitambulisho cha Kifaa - na uchague lugha. Mbili za kwanza ni barua pepe na nenosiri la akaunti yako ya Google unayotumia kwenye kifaa. Ya tatu ni kitambulisho cha kifaa, na inaweza kupatikana kwa kuandika msimbo kwenye kipiga simu # #8255## na kisha kutafuta mstari wa Kitambulisho cha Kifaa. Wakati wa kujaza, unahitaji tu kuingiza kitambulisho bila kiambishi awali cha android.

Baada ya kujaza na kuhifadhi, ujumbe "Hitilafu wakati wa kuunganisha kwenye seva" mara nyingi hujitokeza. Haihusiani na Google Play, kwa hivyo jisikie huru kuipuuza na utafute vifurushi vinavyokuvutia.

Tazama na Urekebishe

Wacha tuseme umepata kifurushi ambacho kinakuvutia, ulikipakua, ukakifungua ... na ulipojaribu kutazama faili fulani ya XML, ulishangaa kugundua kuwa faili hiyo haikuwa maandishi. Jinsi ya kuitenganisha na jinsi ya kufanya kazi na vifurushi kwa ujumla? Je, ni muhimu kusakinisha SDK? Hapana, si lazima kusakinisha SDK hata kidogo. Kwa kweli, hatua zote za kutoa, kurekebisha na kufunga vifurushi vya APK zinahitaji zana zifuatazo:

  • Hifadhi ya ZIP kwa kufungua na kufunga;
  • smali- Dalvik virtual mashine bytecode assembler/disassembler (code.google.com/p/smali);
  • aapt- chombo cha rasilimali za ufungashaji (kwa chaguo-msingi, rasilimali huhifadhiwa katika fomu ya binary ili kuboresha utendaji wa programu). Imejumuishwa katika SDK ya Android, lakini inaweza kupatikana kando;
  • mwenye saini- chombo cha kusaini kidijitali kifurushi kilichobadilishwa (bit.ly/Rmrv4M).

Unaweza kutumia zana hizi zote tofauti, lakini hii haifai, kwa hivyo ni bora kutumia programu ya kiwango cha juu iliyojengwa kwa msingi wao. Ikiwa unafanya kazi kwenye Linux au Mac OS X, kuna chombo kinachoitwa apktool. Inakuruhusu kufungua rasilimali katika fomu yao ya asili (pamoja na faili za binary XML na arsc), uunda tena kifurushi na rasilimali zilizobadilishwa, lakini haijui jinsi ya kusaini vifurushi, kwa hivyo itabidi uendeshe matumizi ya saini kwa mikono. Licha ya ukweli kwamba matumizi imeandikwa katika Java, ufungaji wake sio wa kawaida kabisa. Kwanza unahitaji kupata faili ya jar yenyewe:

$ cd /tmp $ wget http://bit.ly/WC3OCz $ tar -xjf apktool1.5.1.tar.bz2

$ wget http://bit.ly/WRjEc7 $ tar -xjf apktool-install-linux-r05-ibot.tar.bz2

$ mv apktool.jar ~/bin $ mv apktool-install-linux-r05-ibot/* ~/bin $ export PATH=~/bin:$PATH

Ikiwa unafanya kazi kwenye Windows, basi kuna zana bora yake inayoitwa Virtuous Ten Studio, ambayo pia hujilimbikiza zana hizi zote (pamoja na apktool yenyewe), lakini badala ya kiolesura cha CLI kinampa mtumiaji kiolesura angavu cha picha ambacho unaweza nacho. kufanya shughuli kwa ajili ya unpacking, disassembling na decompiling katika clicks chache. Chombo hiki ni Donation-ware, yaani, wakati mwingine madirisha yanaonekana kukuuliza upate leseni, lakini mwishowe hii inaweza kuvumiliwa. Hakuna maana katika kuelezea, kwa sababu unaweza kuelewa interface katika dakika chache. Lakini apktool, kutokana na asili yake ya console, inapaswa kujadiliwa kwa undani zaidi.


Wacha tuangalie chaguzi za apktool. Kwa kifupi, kuna amri tatu za msingi: d (decode), b (jenga) na ikiwa (kufunga mfumo). Ikiwa kila kitu kiko wazi na amri mbili za kwanza, basi kauli ya tatu, yenye masharti, inafanya nini? Inafungua mfumo maalum wa UI, ambao ni muhimu katika hali ambapo unachambua kifurushi chochote cha mfumo.

Wacha tuangalie chaguzi za kuvutia zaidi za amri ya kwanza:

  • -s- usisambaze faili za dex;
  • -r- usifungue rasilimali;
  • -b- usiingize habari ya kufuta katika matokeo ya kutenganisha faili ya dex;
  • --fremu-njia- tumia mfumo maalum wa UI badala ya ule uliojengwa ndani ya apktool. Sasa hebu tuangalie chaguzi kadhaa za amri ya b:
  • -f- mkutano wa kulazimishwa bila kuangalia mabadiliko;
  • -a- onyesha njia ya aapt (zana ya kuunda kumbukumbu ya APK), ikiwa kwa sababu fulani unataka kuitumia kutoka kwa chanzo kingine.

Kutumia apktool ni rahisi sana; kufanya hivyo, taja moja ya amri na njia ya APK, kwa mfano:

$ apktool d mail.apk

Baada ya hayo, faili zote zilizotolewa na kutenganishwa za kifurushi zitaonekana kwenye saraka ya barua.

Maandalizi. Inalemaza utangazaji

Nadharia ni, bila shaka, nzuri, lakini kwa nini inahitajika ikiwa hatujui nini cha kufanya na mfuko usiowekwa? Wacha tujaribu kutumia nadharia kwa faida yetu, yaani, kurekebisha programu fulani ili isituonyeshe utangazaji. Kwa mfano, iwe Mwenge wa Virtual - tochi ya kawaida. Programu hii ni bora kwetu, kwa sababu imejazwa na uwezo na matangazo ya kukasirisha na, zaidi ya hayo, ni rahisi kutosha ili usipoteke kwenye jungle la kanuni.


Kwa hivyo, kwa kutumia moja ya njia zilizo hapo juu, pakua programu kutoka sokoni. Ukiamua kutumia Virtuous Ten Studio, fungua tu faili ya APK kwenye programu na uifungue, unda mradi (Faili -> Mradi mpya), kisha uchague Ingiza Faili kwenye menyu ya muktadha wa mradi. Ikiwa chaguo lako lilianguka kwenye apktool, basi endesha amri moja tu:

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

Baada ya hayo, mti wa faili sawa na ule ulioelezewa katika sehemu iliyotangulia utaonekana kwenye saraka ya com.kauf.particle.virtualtorch, lakini kwa saraka ya ziada ya smali badala ya faili za dex na faili ya apktool.yml. Ya kwanza ina msimbo uliotenganishwa wa faili ya dex inayoweza kutekelezwa, ya pili ina habari ya huduma muhimu kwa apktool kukusanya kifurushi nyuma.

Mahali pa kwanza tunapaswa kuangalia ni, bila shaka, AndroidManifest.xml. Na hapa tunakutana mara moja na mstari ufuatao:

Si vigumu kukisia kwamba ni wajibu wa kutoa vibali vya maombi ya kutumia muunganisho wa Mtandao. Kwa kweli, ikiwa tunataka tu kuondoa utangazaji, tutahitaji tu kuzuia programu kutoka kwa Mtandao. Hebu tujaribu kufanya hivi. Tunafuta laini iliyoainishwa na jaribu kuunda programu kwa kutumia apktool:

$ apktool b com.kauf.particle.virtualtorch

Faili ya APK itakayopatikana itaonekana katika saraka ya com.kauf.particle.virtualtorch/build/. Walakini, haitawezekana kuiweka, kwani haina saini ya dijiti na ukaguzi wa faili (haina saraka ya META-INF/). Ni lazima tutie sahihi kifurushi kwa kutumia matumizi ya apk-signer. Imezinduliwa. Kiolesura kina vichupo viwili - kwa kwanza (Jenereta ya Ufunguo) tunaunda funguo, kwa pili (Kisaini cha APK) tunachosaini. Ili kuunda ufunguo wetu wa kibinafsi, jaza sehemu zifuatazo:

  • Faili inayolengwa- faili ya pato la keystore; kawaida huhifadhi jozi moja ya funguo;
  • Nenosiri Na Thibitisha- nenosiri kwa uhifadhi;
  • Lakabu- jina la ufunguo katika hifadhi;
  • Nenosiri la jinai Na Thibitisha- nenosiri muhimu la siri;
  • Uhalali- kipindi cha uhalali (katika miaka). Thamani chaguo-msingi ni bora zaidi.

Sehemu zilizobaki ni, kwa ujumla, za hiari - lakini angalau moja lazima ijazwe.


ONYO

Ili kusaini programu kwa kutumia apk-signer, lazima usakinishe SDK ya Android na ubainishe njia kamili ya kuifikia katika mipangilio ya programu.

Taarifa zote hutolewa kwa madhumuni ya habari tu. Wala wahariri au mwandishi hawawajibiki kwa madhara yoyote yanayoweza kusababishwa na nyenzo za nakala hii.

Sasa unaweza kuambatisha cheti kwenye APK kwa kutumia ufunguo huu. Kwenye kichupo cha Sahihi ya APK, chagua faili mpya iliyotengenezwa, ingiza nenosiri, lakabu muhimu na nenosiri, kisha pata faili ya APK na ubofye kwa ujasiri kitufe cha "Ishara". Ikiwa kila kitu kitaenda vizuri, kifurushi kitasainiwa.

HABARI

Kwa kuwa tulitia saini kifurushi na ufunguo wetu wenyewe, kitapingana na programu ya awali, ambayo ina maana kwamba tunapojaribu kusasisha programu kupitia soko, tutapokea hitilafu.

Sahihi ya dijiti inahitajika tu kwa programu ya wahusika wengine, kwa hivyo ikiwa unarekebisha programu za mfumo ambazo zimesakinishwa kwa kunakili kwenye saraka ya /mfumo/app/, basi huhitaji kuzitia sahihi.

Baada ya hayo, pakua kifurushi kwa smartphone yako, usanikishe na uzindue. Voila, tangazo limetoweka! Badala yake, hata hivyo, ujumbe ulionekana kwamba hatuna Mtandao au hatuna ruhusa zinazofaa. Kwa nadharia, hii inaweza kuwa ya kutosha, lakini ujumbe unaonekana kukasirisha, na, kuwa waaminifu, tulipata bahati na programu ya kijinga. Programu inayoandikwa kwa kawaida itafafanua sifa zake au kuangalia muunganisho wa Mtandao na vinginevyo kukataa kuzinduliwa. Jinsi ya kuwa katika kesi hii? Bila shaka, hariri kanuni.

Kwa kawaida, waandishi wa maombi huunda madarasa maalum ya kuonyesha matangazo na mbinu za kupiga simu za madarasa haya wakati maombi au moja ya "shughuli" zake (kwa maneno rahisi, skrini za maombi) zinazinduliwa. Wacha tujaribu kutafuta madarasa haya. Tunaenda kwenye saraka ya smali, kisha com (org ina maktaba ya wazi ya picha ya cocos2d), kisha kauf (hapa ndipo ilipo, kwa sababu hili ndilo jina la msanidi programu na nambari yake yote iko) - na hii hapa, saraka ya uuzaji. Ndani tunapata rundo la faili zilizo na kiendelezi cha smali. Hizi ni madarasa, na mashuhuri zaidi kati yao ni darasa la Ad.smali, kutoka kwa jina ambalo ni rahisi kukisia kuwa ndilo linaloonyesha utangazaji.

Tunaweza kubadilisha mantiki ya utendakazi wake, lakini itakuwa rahisi zaidi kuondoa simu kwa njia zake zozote kutoka kwa programu yenyewe. Kwa hiyo, tunaacha saraka ya uuzaji na kwenda kwenye saraka ya chembe iliyo karibu, na kisha kwa virtualtorch. Faili ya MainActivity.smali inastahili uangalifu maalum hapa. Hili ni darasa la kawaida la Android ambalo huundwa na SDK ya Android na kusakinishwa kama kiingilio cha programu (sawa na kazi kuu katika C). Fungua faili kwa uhariri.

Ndani kuna msimbo wa smali (mkusanyaji wa ndani). Inachanganya na ni ngumu kusoma kwa sababu ya hali yake ya chini, kwa hivyo hatutaisoma, lakini tutapata marejeleo yote ya darasa la Tangazo kwenye msimbo na tutoe maoni yao. Tunaingiza mstari wa "Ad" katika utafutaji na kufikia mstari wa 25:

Tangazo la kibinafsi la shamba:Lcom/kauf/marketing/Ad;

Hapa sehemu ya tangazo imeundwa ili kuhifadhi kipengee cha daraja la Tangazo. Tunatoa maoni kwa kuweka ishara ### mbele ya mstari. Tunaendelea na utafutaji. Mstari wa 423:

Mfano mpya v3, Lcom/kauf/marketing/Ad;

Hapa ndipo uundaji wa kitu hutokea. Hebu toa maoni yako. Tunaendelea na utafutaji na kupata katika mistari 433, 435, 466, 468, 738, 740, 800 na 802 simu kwa mbinu za darasa la Tangazo. Hebu toa maoni yako. Angalia kama ndivyo. Hifadhi. Sasa kifurushi kinahitaji kuwekwa pamoja na kuangaliwa utendakazi na uwepo wa utangazaji. Kwa usahihi wa jaribio, tunarudisha laini iliyoondolewa kwenye AndroidManifest.xml, kukusanya kifurushi, kusaini na kusakinisha.

Nguruwe wetu wa Guinea. Matangazo yanaonekana

Lo! Matangazo yalipotea tu wakati programu inaendelea, lakini ilibaki kwenye menyu kuu, ambayo tunaona tunapozindua programu. Kwa hiyo, subiri, lakini hatua ya kuingia ni darasa la MainActivity, na tangazo lilipotea wakati programu inaendelea, lakini ilibaki kwenye orodha kuu, hivyo hatua ya kuingia ni tofauti? Ili kutambua mahali halisi pa kuingilia, fungua upya faili ya AndroidManifest.xml. Na ndio, ina mistari ifuatayo:

Wanatuambia (na, muhimu zaidi, android) kwamba shughuli inayoitwa Start inapaswa kuanzishwa ili kujibu utayarishaji wa kusudi (tukio) android.intent.action.MAIN kutoka kategoria ya android.intent.category.LAUNCHER. Tukio hili linatolewa unapogusa ikoni ya programu kwenye kizindua, kwa hivyo huamua mahali pa kuingilia, yaani darasa la Mwanzo. Uwezekano mkubwa zaidi, mtayarishaji aliandika kwanza programu bila menyu kuu, mahali pa kuingilia ambayo ilikuwa darasa la MainActivity, kisha akaongeza dirisha mpya (shughuli) iliyo na menyu na iliyoelezewa katika darasa la Mwanzo, na kuifanya iwe kiingilio. hatua.

Fungua faili ya Start.smali na tena utafute mstari wa "Ad", tunapata kwenye mstari wa 153 na 155 kutajwa kwa darasa la FirstAd. Pia iko kwenye msimbo wa chanzo na, kwa kuzingatia jina, inawajibika kwa kuonyesha matangazo kwenye skrini kuu. Wacha tuangalie zaidi, kuna uundaji wa mfano wa darasa la FirstAd na dhamira ambayo, kulingana na muktadha, inahusiana na mfano huu, na kisha lebo ya cond_10, mpito wa masharti ambao unafanywa haswa kabla ya kuunda mfano. wa darasa:

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

Uwezekano mkubwa zaidi, programu kwa njia fulani huhesabu kwa nasibu ikiwa utangazaji unapaswa kuonyeshwa kwenye skrini kuu, na, ikiwa sivyo, huruka moja kwa moja hadi cond_10. Sawa, wacha turahisishe kazi yake na tubadilishe mpito wa masharti na usio na masharti:

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

Hakuna kutajwa tena kwa FirstAd kwenye msimbo, kwa hivyo tunafunga faili na kukusanya tena tochi yetu pepe kwa kutumia apktool. Nakili kwa smartphone yako, isakinishe, uzindue. Voila, matangazo yote yametoweka, ambayo tunawapongeza sisi sote.

Matokeo

Nakala hii ni utangulizi mfupi tu wa njia za kuvinjari na kurekebisha programu za Android. Masuala mengi yalisalia pazia, kama vile kuondoa ulinzi, kuchanganua misimbo iliyofichwa, kutafsiri na kubadilisha rasilimali za programu, pamoja na kurekebisha programu zilizoandikwa kwa kutumia Android NDK. Walakini, kuwa na maarifa ya kimsingi, ni suala la wakati tu kujua yote.