VKontakte Facebook Twitter Mlisho wa RSS

Jinsi ya kutenganisha faili ya apk. Jinsi ya kufungua APK na jinsi ya kuhariri? Mpangilio wa vifurushi vya APK na kuvipokea

Nilitaja programu ya SmartAPKTool. Inaweza kutoa, zip na kusaini faili za apk zilizobadilishwa. Faida yake ni uwepo wa kiolesura cha picha. Hata hivyo, pia kuna drawback kubwa. SmartAPKTool haijasasishwa kwa muda mrefu, na programu haifungui na kufunga programu kwa usahihi matoleo ya hivi karibuni Android. Kwa hiyo, hapa nitajaribu kueleza jinsi ya kutumia maombi kwa madhumuni haya apktool.

Kumbuka 1.
Mpango wa SmartAPKTool bado ni rahisi kutumia kutia sahihi faili za apk zilizokusanywa.
Kumbuka 2.
Viungo kwa programu zilizotajwa katika makala ni ↓

Mpango apktool haina kiolesura cha picha. Hii ni hasara kwa wale ambao hawajatumiwa kufanya kazi na mstari wa amri. Lakini pia kuna nyongeza: tofauti na SmartAPKTool, tutaona makosa yote, ambayo inamaanisha tutajua nini cha kurekebisha.

Wacha tupakue kumbukumbu mbili: moja ya kawaida kwa mifumo yote, nyingine kwa mfumo wetu (Windows katika mfano):

Wacha tufungue kumbukumbu zote mbili kwenye folda moja tupu (kwa mfano wetu, C:\apktool\). Maudhui yake yanapaswa kuonekana kama hii:

Kuanzia sasa tunaweza kutumia programu apktool.

Kumbuka 3.
Watumiaji wa matoleo ya 64-bit ya Linux watahitaji kusakinisha kifurushi cha ia32-libs:

sudo apt-get install ia32-libs

Katika folda hiyo hiyo tunaweka faili ambayo tunahitaji kufuta. Kwa mfano, hebu iitwe orig.apk
Bonyeza na ushikilie kitufe cha Shift na ubonyeze kulia kwenye nafasi yoyote tupu kwenye folda (usibofye faili!). Baada ya hayo, chagua "Fungua dirisha la amri". Kwenye koni inayoonekana, chapa:

apktool kusimbua orig.apk

Faili itafunguliwa:

Sasa tunayo folda iliyo na programu isiyofunguliwa kwenye saraka ya C:\apktool\. Inaitwa sawa na faili ya chanzo, ukiondoa kiendelezi: C:\apktool\orig\ . Tunaweza kubadilisha faili za chanzo kama ilivyoelezewa katika kifungu cha Android: jinsi ya kusanikisha programu mbili zinazofanana kwenye simu moja. Baada ya kufanya mabadiliko, hebu tutengeneze nakala ya programu kwa kufunga faili za chanzo kwenye apk:

apktool kujenga orig result.apk

Hapa result.apk ni jina la faili ambalo tulikuja nalo kwa uundaji wa nakala. Ikiwa hakuna makosa, faili itakusanywa:

Mengine ni zaidi ya upeo wa makala:

  1. Ikiwa kuna makosa wakati wa kusanyiko, unahitaji kupata sababu yao na kurekebisha.
  2. Kilichobaki ni kusaini matokeo.apk faili. Hii inaweza kufanywa kwa kutumia SmartAPKTool kama ilivyotajwa hapo juu; Kila kitu kuhusu hilo ni angavu. Pia kuna njia zingine za kusaini faili ya apk.
  3. Hitilafu zinaweza pia kutokea wakati wa kufunga nakala, wakati wa kuanza au uendeshaji wake. Wanahitaji kunaswa kwa kutumia matumizi ya adb iliyojumuishwa kwenye SDK ya Android.

Lazima utie sahihi kwenye programu, vinginevyo haitasakinishwa. Hitilafu hazifanyiki mara nyingi, na matatizo ya kawaida yanayowasababisha yanaelezwa katika makala hiyo

Kutoka kwa makala hii utajifunza nini programu ya Android inajumuisha, jinsi ya kufungua faili ya APK na kwa programu gani.

Faili ya APK ni nini?

APK - muundo wa uendeshaji Mifumo ya Android, inayotumika kwa faili za programu zinazoweza kutekelezwa zilizohifadhiwa, na jina la faili yenyewe linaweza kuwa chochote, lakini kiendelezi kinapaswa kuonekana kama hii.apk. Analogi za APK katika mifumo mingine ya uendeshaji ni .msi katika Windows, .sis katika Symbian, .rpm au .deb katika Linux.

Hebu tuone kilicho ndani
Kimsingi .apk ni kumbukumbu ya ZIP, kwa hivyo angalia muundo wa ndani unaweza kutumia meneja wa faili yoyote au kumbukumbu, kwa mfano WinRAR au programu ya simu X-plore.




Inafaa kukumbuka kuwa unapata ufikiaji wa kuona kwa rasilimali za ndani tu;

Hebu tuangalie muundo
Ndani ya .apk tunaona idadi ya faili na folda, hebu tujue ni za nini:

  • AndroidManifest.xml ni aina ya "pasipoti" ya programu ambayo unaweza kupata pointi zote kuu, mahitaji, toleo, ruhusa, nk.
  • META-INF faili hii ina metadata, yaani, data kuhusu data, cheki, njia za data, njia na hesabu za rasilimali, vyeti. Unaweza kufungua faili hii na kihariri chochote cha maandishi, lakini inashauriwa kutumia Notepad++.
  • res folda ina rasilimali zote za programu, picha, kama vile ikoni, picha, maandishi, vipengele vya kiolesura cha picha. Unaweza pia kufikia folda kwa urahisi.
  • class.dex ni msimbo wa programu wa moja kwa moja, unaotekelezwa na mashine pepe ya Dalvik VM unaweza kuona kilicho ndani ya faili hii kwa kutenganisha .apk tutazungumza kuhusu hili katika makala nyingine. resources.arsc - faili ya XML iliyokusanywa, faili hii ina data kuhusu rasilimali zote zinazohusika katika programu.
  • lib - folda iliyo na maktaba ya asili, rasilimali ambazo zinaweza kupatikana tu wakati wa kutumia programu maalum. APK pia inaweza kuwa na faili na folda kama vile com, org, udk, lakini si mara zote.

Sasa hebu tufikirie muundo wa ndani kwa undani zaidi, kwa hili tunahitaji programu ya kutengana, Java na faili ya APK. Chombo kuu cha kutenganisha .apk ni Apktool, lakini programu hii Inafanya kazi tu kutoka kwa mstari, ambayo si rahisi sana. Kwa uchanganuzi wa haraka na rahisi zaidi, unaweza kutumia APKing, hii bado ni Apktool sawa, lakini kwa uwezo wa kufanya kazi kutoka kwa menyu ya muktadha.


Na kwa hivyo tunasakinisha APKing kama programu yoyote ya Windows na, baada ya kuchagua .apk, bonyeza juu yake na kitufe cha kulia cha kipanya na Shift kwa wakati mmoja, baada ya hapo tutaona yafuatayo:



Na chagua hatua inayohitajika, kwa mfano, kutengana kabisa, basi programu itakamilisha operesheni na kuunda folda yenye jina moja.



Kwa kufungua folda tutaweza kufikia rasilimali zote za faili ya APK.



Sasa faili zote za maandishi zinaweza kuhaririwa, huku ukizingatia sheria za msingi, unaweza kutumia programu maarufu ya Notepad++, kwa mfano, fikiria AndroidManifest.xml

Wakati mwingine baadhi ya programu kwenye Android haziendani na mtumiaji kwa namna fulani. Mfano ni matangazo ya kuvutia. Na pia hutokea kwamba programu ni nzuri kwa kila mtu, lakini tafsiri ndani yake ni ya kupotoka au haipo kabisa. Au, kwa mfano, mpango huo ni jaribio, lakini pata toleo kamili hakuna uwezekano. 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?

Kutengana kwa 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 haijajumuishwa 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 ya Java inayoweza kusomeka 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

Mfuko wa plastiki Programu za Android, kwa kweli, ni faili ya kawaida ya ZIP, hakuna zana maalum zinazohitajika kutazama yaliyomo na kuiondoa. 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, kwa mfano picha, maelezo ya kutangaza 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 zingine chache ambazo zinafaa 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 ya mchezo iliyoandikwa 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. Haina uhusiano wowote nayo 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 kwa saini ya kidijitali kifurushi kilichorekebishwa (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, hufanya nini? Inafungua mfumo maalum wa UI, ambao ni muhimu katika hali ambapo unachambua kifurushi chochote cha mfumo.

Wacha tuangalie chaguzi za kupendeza 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 tu 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 programu kutumia muunganisho wa Mtandao. Kwa kweli, ikiwa tunataka tu kuondokana na 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 kwenye 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 (Msaini wa APK) tunasaini. 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. Wahariri wala mwandishi hawawajibiki kwa lolote madhara iwezekanavyo iliyosababishwa na nyenzo za kifungu hiki.

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, itapingana 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. Nini cha kufanya 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. Hiyo inaonekana kuwa hivyo. 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. uhakika.

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 katika 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.

Katika mchakato wa kutumia firmware mbalimbali kwa vifaa vya Android, wakati mwingine inakuwa muhimu kubadili kwa njia moja au nyingine maombi ya mfumo yaliyojengwa kwenye mfumo wa uendeshaji. Katika nyenzo hii tutazingatia suala hili kwa undani.

Kwa kawaida, unahitaji kutenganisha na kuunganisha faili ya APK ya mfumo ili ifanye kazi vizuri na kwa utulivu. Wacha tujue hatua kwa hatua ni nini kifanyike kwa hili.

Kwanza, unahitaji kutekeleza mchakato wa deodexing faili za APK za mfumo. Tutakuambia jinsi ya kufanya hivyo ndani.

Kwa hivyo, faili ya .apk ilitolewa na kutenganishwa. Wacha tuchambue programu tunayopendezwa nayo, iwe na jina, kwa uwazi wa mfano, mfumo- res. apk. Tunaikumbuka katika vichwa vyetu kama matumizi ya asili.

Wacha tuseme tumefanya mabadiliko yote muhimu kwenye programu. Tutazungumza zaidi kuhusu vipengele vyote vya faili za APK ndani. Sasa unahitaji kuifunga tena. Wacha tukumbuke programu iliyokamilishwa katika akili zetu kama programu iliyorekebishwa 2.

Sasa tutaeleza kwa nini ilikuwa muhimu kukumbuka programu kiakili kama asili na zilizorekebishwa 2. Programu iliyokusanywa na programu ya ApkTool (au kutumia kiendelezi cha kiolesura cha picha kama SmartApkTool) haitafanya kazi, lakini hili si tatizo. Tunafanya vitendo vifuatavyo:

Kukusanya faili kama hizi kwenye APK ni rahisi sana. Ili kufanya hivyo, unahitaji kuendesha apktool na bendera inayofaa ya kujenga na kuipitisha njia ya folda na programu iliyoharibika ndani. Kwa mfano, ikiwa tunayo folda ya programu ambayo iko kwenye saraka sawa na apktool, basi amri ingeonekana kama hii:

Shell

programu ya java -jar apktool.jar b

java - jar apktool .jar b programu

Baada ya kusanyiko, faili ya APK iliyokamilishwa itapatikana kwenye saraka programu/jenga. Ifuatayo, unahitaji kusaini APK. Hii inafanywa ili kuhakikisha kuwa programu inafanya kazi kwenye vifaa ambavyo utatuzi umepigwa marufuku. Hiyo ni, kuzindua programu ambazo hazijasajiliwa kwenye vifaa vile ni marufuku. Unaweza kusoma zaidi kuhusu vyeti vya kidijitali na utaratibu wa kusaini faili hapa.

Kusaini faili ni rahisi sana: kuna matumizi maalum ya hii inayoitwa signapk. Lazima izinduliwe kwa kupitisha cheti kwanza kama hoja, kisha njia ya maombi, na mwishowe njia ya utumaji saini (matokeo, wapi kuihifadhi). Inaonekana kitu kama hiki:

Shell

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

Unaweza kupata wapi cheti kama hicho, unauliza? Vyeti vinaweza kupatikana kwenye mtandao. Au tengeneza mwenyewe. Maagizo ya kina kuhusu kuanzisha na kuzalisha faili zote muhimu zinaweza kupatikana, kwa mfano,.

Hitimisho

Kama unavyoona, kutenganisha na kukusanya faili za APK ni mchakato rahisi, ambao, kwa kuongeza, unaweza kujiendesha, na kufanya kazi ya mtafiti iwe rahisi. Mashine ya kawaida ya Dalvik yenyewe pia ni rahisi kujifunza na kufungua, ambayo, kwa upande mmoja, inapunguza kizuizi cha kuingia kwa watengenezaji, kwa upande mwingine, ndiyo sababu kuu ya asilimia kubwa ya uharamia kwenye jukwaa la Android. Hii ndiyo sababu wasanidi programu, kwa mfano, michezo kwa ujumla hawapendi kuichapisha michezo ya kuvutia na njama. Ni faida zaidi, kwa kuzingatia mtazamo wa sasa wa watumiaji, kupeana shamba na michango ambayo inafanana sana kwa kila mmoja. Kwa hiyo, tunununua maombi, watengenezaji wa msaada na, kwa sababu hiyo, kupata maudhui ya kuvutia. Lakini hakuna haja kabisa ya kuchangia!

Asanteni nyote, tuonane tena.



2024 Kuhusu starehe nyumbani. Mita za gesi. Mfumo wa joto. Ugavi wa maji. Mfumo wa uingizaji hewa