apk dəyişdirmək üçün proqram. Android sistem proqramlarının redaktə edilməsinin əsasları (apk). APK paketlərinin təşkili və qəbulu

APK arxivləşdirilmiş icra edilə bilən proqram faylları üçün Android əməliyyat sistemində istifadə olunan formatdır. Analoq, məsələn, Windows-da .msi, Symbian-da - .sis, Linux-da - .rpm və ya .deb. Bu yazıda biz bu fayl formatı ilə bağlı bütün məsələləri mümkün qədər ətraflı başa düşəcəyik.

"Düzgün" sökülməsi, redaktə edilməsi və yığılması prosesi tərs mühəndislik adlanır. Bunun üçün nə lazımdır? Aşağıdakı alətlər tələb olunur:

Apktool. SmartApktool qabığı ilə istifadə etmək daha rahatdır; siz həmçinin hazır toplu fayllardan, məsələn, ApktoolBAT-dan istifadə edə bilərsiniz.

Notepad++ - tələb olunmur, lakin çox tövsiyə olunur.

7zip və ya WinRar və ya hər hansı digər arxiv proqramı, lakin bunlardan biri tövsiyə olunur.

Deodexed firmware.

Android əməliyyat sistemində tətbiqləri quraşdırmağın bir neçə yolu var. Birincisi, həm də əsası birbaşa keçir Google Play(Android Market), yəni Google hesabı tələb edən rəsmi mənbədən. Bir çox proqram ödənişlidir, əgər pirat saytlarda hack edilmiş versiyanı axtarmaq istəmirsinizsə, satınalma üçün pul ödəməli olacaqsınız. Ancaq bunu necə edəcəyimiz barədə danışacağıq. İkincisi, Google Play-dən başqa qeyri-rəsmi mənbələrdəndir, bunun üçün smartfon və ya planşetinizin parametrlərində “Qeyri-rəsmi mənbələrdən proqramların quraşdırılmasına icazə verin” seçimini aktiv etməli olacaqsınız, bundan sonra APK quraşdırma faylı yaddaşa yazılmalıdır. kart.

APK proqramlarını toplu şəkildə quraşdırmaq da mümkündür. Bunu etmək üçün sizə Astro File Manager - xüsusi fayl meneceri lazımdır. Quraşdırdıqdan sonra tətbiqləri köçürün:

Smartfondan/planşetdən: daxil mntsdcardackupsapp(başqa sözlə, yaddaş kartı, sonra ehtiyat qovluğu, proqram qovluğu)

Fərdi kompüterdən (sadə USB sürücü rejimində Android cihazının qoşulmasını aktivləşdirməyi unutmayın): sdcardehtiyat nüsxələriproqram

Sonra istədiyiniz tətbiqi açın kontekst menyusu"Tətbiq meneceri" ni seçin və "Yedəkləmələr" sekmesine keçin, burada "Uzun klikləyin və ya quraşdırmaq üçün proqramı yoxlayın" seçin. "Quraşdır" düyməsini basın - bütün proqramlar cihazınızda quraşdırılacaq.

APK faylının strukturunun nə olduğunu görmək olduqca asandır. Arxiv proqramı, məsələn, WinRar istifadə edərək istədiyiniz APK-nı açın. İçəridə gördüyümüz budur:

AndroidManifest.xmlərizədə olanları təsvir edən bir növ “pasport”dur, o cümlədən: sistem tələbləri proqrama, onun strukturuna və versiyasına.

META-INF– faylı ehtiva edən qovluq MANIFEST.MF(demək olar ki, hər kəs tərəfindən aça bilər mətn redaktoru, SHA-1 yoxlama məbləğlərini və məlumat yollarını, Manifest-Versiya standartının versiyasını, RSA və ya DSA sertifikat fayllarını görə biləcəyiniz açılışı olan Notepad++ istifadə etmək tövsiyə olunur, SF faylında müxtəlif mənbələrə yollar və onların yoxlama məbləğləri var. Ümumiyyətlə, META-INF metadata faylları, yəni verilənlər haqqında məlumatlardır.

res– alt qovluqlara çeşidlənmiş bütün “proqram təminatının doldurulması” resurslarını ehtiva edən qovluq. Məsələn, ~drawable~ qovluğunda proqramların qrafik elementləri (müxtəlif statuslar, nişanlar və s.), layout qovluğunda qrafik elementlərin yerləşdirilməsini göstərən XML faylları var. istifadəçi interfeysi(GUI).

siniflər.dex– Dalvik VM virtual maşını tərəfindən icra edilən proqram kodu. Xatırladaq ki, Android əməliyyat sistemi Linux nüvəsi və Java virtual maşınının qarışığıdır.

resurslar.arsc- tərtib edilmiş XML faylı. Proqramın istifadə etdiyi bütün resurslar haqqında məlumatları ehtiva edir.

aktivlər– müxtəlif resursları ehtiva edən qovluq, ümumiyyətlə APK-da olmaya bilər.

lib– “libs” və ya daha sadə desək, yerli kitabxanaları ehtiva edən qovluq, əgər proqram NDK-dan istifadə etməklə yazılıbsa, məsələn, C++ zamanı elementlərlə. Bu kataloq APK-də olmaya bilər.

com– APK-da olmaya bilər.

org– APK-da olmaya bilər.

udk– APK-da olmaya bilər.

APK tətbiqinin məzmunu ilə məşğul olduq, indi onun ətraflı sökülməsinə davam edək. Dekompilyasiya üçün sizə Apktool və Java, həmçinin APK faylının özü lazımdır. Apktool-u bir kataloqa çıxarmaq tövsiyə olunur C:WINDOWS(bu lazım deyil, amma daha rahat olacaq. Niyə – bir az aşağı oxuyun).

Apktool-u işə salmaq üçün kompüterinizin “Çalış” menyusuna daxil olmalısınız. Windows XP-də klikləyin Başlat -> Çalıştır, Windows 7-də: Tapşırıq Meneceri ( Ctrl+Alt+Del), açılan menyunun yuxarı hissəsində Fayl -> Yeni Tapşırıq (Çalış...), və ya sadəcə klaviatura qısayolu ilə zəng edin Win + R.

Zəng edir komanda xətti- Biz yazırıq cmd, bundan sonra Apktool-u işə salırıq - yazın apktool(bu məqsədlə onu yerləşdirmək lazım idi WINDOWS qovluğu). Bundan əlavə, bütün nəzarət parametrlərdən istifadə edərək əmr satırı vasitəsilə baş verir.

Daim mətn əmrləri daxil etməklə narahat olmaq istəmirsinizsə, istifadə edə bilərsiniz GUI– məsələn, qeyd olunan SmartApkTool. SmartApkTool.exe proqramını işə salın, sonra Paketdən Çıxar/Paket sekmesinde istədiyiniz APK proqramını seçin (fayl adında boşluqlar, kiril əlifbası, xüsusi simvollar və durğu işarələri olmaması vacibdir).

Paketi açdıqdan sonra proqram APK faylı ilə eyni adlı qovluq yaradacaq. Onun içərisində tətbiqin bütün məzmunu olacaq.

APK də lokallaşdırıla bilər. Bunu etməyə başlamazdan əvvəl əvvəlcədən quraşdırılmış Notepad++ proqramını işə salırıq və onu aşağıdakı kimi konfiqurasiya edirik. Açılış Parametrlər -> Konfiqurasiya -> Yeni Sənəd.

Bu addımlardan sonra paketdən çıxarılan (dekompilyasiya edilmiş) tətbiqi, qovluğu açın res/dəyərlər.

Bütün lokalizasiyalar çox vaxt faylda yerləşir simlər.xml, lakin bəzən bəziləri içərisində ola bilər massivlər.xml. Bu faylları kopyalayın və onları bir qovluqda yaradın res qovluq dəyərlər -ru və onları daxil edin.

İndi aça bilərsiniz simlər.xml Notepad++ istifadə edərək tərcüməni edin və dəyişdirilmiş faylı saxlayın.

Faylda AndroidManifest.xml APK proqramlarının harada quraşdırılacağını təyin edə bilərsiniz. Diqqət, bu, yalnız Android 2.2 və daha yeni versiyalara aiddir. Beləliklə, Notepad++ istifadə edərək göstərilən faylı açın. Demək olar ki, ən başlanğıcda parametri görə bilərsiniz:

Burada aşağıdakı seçimləri təyin edə bilərsiniz (“=” simvolundan sonra):

Yalnız daxili– proqram yalnız quraşdırılacaq daxili yaddaş cihazlar

avto– istifadəçiyə proqramı daxili yaddaşa və ya yaddaş kartına quraşdırmaq seçimini təmin edir

üstünlük Xarici– proqram yaddaş kartında quraşdırılacaq. Nəzərə almaq lazımdır ki, xarici sürücüyə quraşdırıldıqda bütün proqramlar düzgün işləməyəcək və ya ümumiyyətlə işləməyəcək. Bunlara daxildir:

Xidmətlər- yəni xidmətlər

Siqnal Xidmətləri– zəngli saatlar kimi vaxtdan istifadə edən xidmətlər

Daxiletmə metodu mühərrikləri– daxiletmə proqramları, o cümlədən müxtəlif klaviaturalar

Canlı divar kağızları- "canlı" cizgi divar kağızı

CanlıQovluqlar– müvafiq olaraq, animasiyalı kataloqlar

TətbiqVidjetlər- müxtəlif "vidjetlər"

HesabMenecerlər– müxtəlif hesabların menecerləri, o cümlədən ICQ müştəriləri, müştərilər üçün sosial şəbəkələr və s

Sinxronizasiya Adapterləri– daimi sinxronizasiya tələb edən proqramlar

QurğuAdministratorlar– idarəetmə üçün istifadə olunan proqramlar

Kopyalamadan qorunma– kopyalanmadan qorunan proqramlar.

Tətbiqdə siz istifadəçi interfeysinin müxtəlif nişanlarını və qrafik elementlərini özünüzlə redaktə edə və dəyişdirə bilərsiniz. Bunu etmək üçün qovluğu açın res dekompilyasiya edilmiş APK tətbiqi ilə qovluqda burada qovluqları görə bilərsiniz:

çəkilə bilən-hdpi

çəkilə bilən-ldpi

Bu qovluqlarda proqramın bütün nişanları və digər qrafik elementləri var. “dpi” hərfindən əvvəlki hərf müvafiq olaraq qrafik elementlərin ölçüsünü bildirir:

hdpi - düym başına yüksək sıxlıqlı nöqtələr, ölçüsü 72x72 piksel

mdpi - düym başına orta nöqtələr sıxlığı, ölçüsü 48x48 piksel

ldpi - düym sıxlığı üçün aşağı nöqtələr, ölçüsü 36x36 piksel

Məsələn, proqram simgesini dəyişdirmək üçün faylı açın AndroidManifest.xml Notepad++ proqramından istifadə edərək, işarənin göstərildiyi sətirə baxın, onun dəqiq adına baxın (qeyd edək ki, fayl uzantısı yazılmayıb, yalnız fayl adı).

Müvafiq qovluğu açın çəkilə bilən-*dpi, redaktə edilmiş birini yapışdırın və ya yeni ikona, orijinal başlığı iki dəfə yoxlamağı unutmayın AndroidManifest.xml. Şəkil .png formatında olmalı və mənbə faylı ilə tam olaraq eyni piksel sıxlığına malik olmalıdır, məsələn, hdpi 72x72 pikseldir.

Əgər ikonanın adını özünüzlə əvəz etmək istəyirsinizsə, şəkli istədiyiniz fayl adı ilə qeyd edin çəkilə bilən-*dpi, bundan sonra biz eyni adı göstəririk AndroidManifest.xml(Misal üçün android:icon=”@drawable/test"). Eyni şəkildə, hər hansı digər qrafik elementləri dəyişə bilərsiniz, lakin tələblər eynidir - genişləndirmə .png olmalıdır və hər düym sıxlığına nöqtələr mənbə faylı ilə eynidir.

Paketdən çıxarılan tətbiqdə onun hansı hüquqlara malik olduğunu iki dəfə yoxlaya bilərsiniz. Bu, APK naməlum mənbədən quraşdırılıbsa və fənər və ya gözəl təqvimin qəflətən pullu SMS göndərməyə başladığı vəziyyətin qarşısını almaq üçün faydalıdır. naməlum nömrə. Açılış AndroidManifest.xml Notepad++ proqramını işə salın və müvafiq sətirləri axtarın. Göndərmək üçün mətn mesajları məsələn, parametr cavab verir SEND_SMS. Tətbiq üçün mövcud ola biləcək bütün hüquqlar haqqında ətraflı oxuya bilərsiniz.

Quraşdırılmış APK proqramları sistemdən çıxarıla bilər. Bu bir neçə yolla edilə bilər. Əvvəlcə Astro Fayl menecerini quraşdıra bilərsiniz. Proqramı açın, sonra kontekst menyusundan "Tətbiq meneceri" seçin. axtarırlar tələb olunan tətbiq, işarəsi ilə qeyd edin və ehtiyat nüsxəsini çıxarın. İşləndikdən sonra seçilmiş proqram yol boyunca yerləşəcək:

mntsdcardackupsapp

sdcardacupsapp

Sonra, istifadə edə bilərsiniz Kök proqramı Silindirici. Tətbiqi işə saldıqdan sonra avtomatik olaraq hər şeyi təyin edəcək quraşdırılmış APK və avtomatik olaraq hamısının ehtiyat nüsxəsini çıxaracaq. Müvafiq olaraq, istəsəniz, sonrakı dekompilyasiya üçün bu ehtiyat nüsxələri kopyalaya bilərsiniz; onlar yol boyunca yerləşirlər:

mntsdcardRootUnistallerautobackups(birbaşa Android cihazından baxdıqda)

sdcardRootUnistallerautobackups(Android cihazı USB sürücüsü kimi qoşulduqda kompüter vasitəsilə baxıldıqda).

Başqa bir yol, Root Browser Lite istifadə etməkdir, əlbəttə ki, bunun üçün Kök hüquqlarına ehtiyacınız olacaq. Açılış bu proqram, yolu izləyirik:

sistemiproqram(sistem proqramları ilə maraqlanırsınızsa).

Lazımi proqramları yaddaş kartına kopyalayırıq, bundan sonra onlarla istənilən manipulyasiya edə bilərsiniz.

Siz həmçinin Google Play-dən (Android Market) maraqlandığınız APK proqramlarını birbaşa yükləyə bilərsiniz Şəxsi kompüter. Bunun üçün brauzerə ehtiyacınız olacaq Google Chrome(versiya 17-dən aşağı olmayan) və bunun üçün plagindir APK Yükləyicisi. Göstərilən plagini yüklədikdən və quraşdırdıqdan sonra qısayolun surətini yaradın Google brauzeri Boşluqdan sonra aşağıdakı sətri yazdığımız Chrome:

-sertifikat səhvlərinə məhəl qoyma

Standart brauzer quraşdırma yolu ilə xətt belə görünməlidir:

"C:Proqram FayllarıGoogleChromeApplicationchrome.exe" -iqnor-sertifikat xətaları

Bundan sonra smartfon yığıcısına daxil olun:

*#*#8255#*#*

16 simvoldan ibarət olan Cihaz ID-sini yenidən yazırıq. Göstərilən parametrlə yaradılmış qısayoldan istifadə edərək Google Chrome-u açın -sertifikat səhvlərinə məhəl qoyma, gəlin gedək Alətlər -> Genişləndirmələr(həmçinin ünvan çubuğuna “chrome://settings/extensions” daxil edə bilərsiniz), APK Downloader plagininin parametrlərini açın. Seçimlərdə e-poçt ünvanınızı və şifrənizi daxil edin hesab Google, eləcə də alınan Cihaz ID-si. İndi Google Play-ə (Android Market) gedin, səhifəni açın istədiyiniz tətbiq, tam yüklənməsini gözləyirik. APK Downloader işarəsi görünəcək - kliklədikdən sonra proqram kompüterinizə yüklənəcək.

Veb saytımızda Android üçün yükləyə biləcəyiniz Apk redaktor pro, istənilən proqramın fayllarının məzmununu sındırmağa/dəyişməyə imkan verəcəkdir. mobil cihazlar və zövqünüzə uyğunlaşdırın.

Xüsusiyyətlər

Proqram qabaqcıl istifadəçilərin əlində Android üçün proqramları redaktə etmək üçün güclü vasitəyə çevrilə bilən peşəkar bir yardım proqramıdır. Funksionallıq oxşardan praktiki olaraq fərqlənmir proqram təminatı fərdi kompüterlər üçün.

Bu yardım proqramı nə edə bilər?

  1. Digər proqramların adlarını dəyişdirin (tərcümə edin).
  2. Memarlıq planlarını, rəngləri, qrafik parametrləri şablonlarını dəyişdirin (məsələn, nişan ölçüsü).
  3. Səs dizaynını, media fayllarını dəyişdirin.
  4. Reklamları silin.
  5. Ödənişli məzmunun bloklanmasını keçin.
  6. Proqramı cihazın daxili yaddaşından SD karta köçürün.
  7. Qətnaməni dəyişdirin və daha çox.

Utilitydən necə istifadə edəcəyinizi başa düşmək üçün apk redaktoru pro yükləməlisiniz və menyuya keçməlisiniz. Sonra birini seçin quraşdırılmış proqram Android-də və ya onun apk faylı. Bundan sonra istifadəçinin dəyişə biləcəyi standart məlumatlar açılacaq:

  • redaktə resursları;
  • faylların dəyişdirilməsi;
  • ümumi redaktə;
  • məlumatların redaktəsi.

Proqram dəyişdirilmiş versiyanı quraşdırmağı təklif edəcək. Bu, bütün hallarda işləmir, yəni köhnə versiyaəl ilə çıxarılmalı və yenisi quraşdırılmalıdır. Sildikdən sonra Android-də proqramlar arasında apk redaktoru qovluğunu (rahatlıq üçün ES Explorer-dən istifadə edə bilərsiniz) seçməli və dəyişdirilmiş proqram faylını tapıb cihaza quraşdırmalısınız.

Proqram istifadəçi dostu interfeysə malikdir. Naviqasiya olduqca sadədir, lakin onu başa düşmək üçün istifadəçinin əsas ingilis dili biliyi olmalıdır.

Yaxşı və pis tərəfləri

  1. Proqram istifadəçiyə tətbiqləri fərdiləşdirmək üçün geniş seçimlər açır.
  2. Menyuda redaktor proqramının çoxlu sayda imkanlarını sadə və ətraflı təsvir edən Yardım bölməsi var. Buna görə də, proqramlaşdırmadan uzaq olan istifadəçilər üçüncü tərəfin resurslarında nümunələr və redaktə təlimatları axtarmaq məcburiyyətində qalmayacaqlar.
  3. Proqramı saytımızda pulsuz yükləyə bilərsiniz.

Bu yardım proqramından istifadə müəyyən bacarıq və bilik tələb edir. Təcrübəsiz istifadəçinin əlində redaktə fayl sisteminin bütövlüyünün pozulmasına gətirib çıxara bilər ki, bu da son nəticədə tətbiqin uğursuzluğuna səbəb olacaq. Yardım elementindəki menyuda şəkillərlə konvertasiya nümunələri və Android-də apk redaktoru pro-dan düzgün istifadə etmək üçün məsləhətlər var. Buna görə də, bu proqramı başa düşmək istəyirsinizsə, sadəcə təlimatları izləyin.

Redaktor - kifayətdir faydalı alətəlverişsiz tətbiq interfeysi ilə qarşılaşanlar üçün (rus dilinin olmaması, daimi reklam, bannerlər və s.). Əgər siz artıq bu proqramı istifadə etmisinizsə, aşağıdakı təəssüratlarınızı şərhlərdə paylaşın.

Bu yazıdan siz Android proqramının nədən ibarət olduğunu, APK faylının necə açılacağını və hansı proqramlarla öyrənəcəksiniz.

APK faylı nədir?

APK - əməliyyat formatı Android sistemləri, arxivləşdirilmiş icra edilə bilən proqram faylları üçün istifadə olunur və faylın adı hər hansı bir şey ola bilər, lakin genişləndirmə yalnız this.apk kimi görünməlidir. Digər əməliyyat sistemlərində APK analoqları Windows-da .msi, Symbian-da .sis, Linux-da .rpm və ya .deb-dir.

Görək içəridə nə var
Əslində, .apk ZIP arxividir, ona görə də hər hansı birini istifadə edərək daxili struktura baxa bilərsiniz fayl idarəedici və ya WinRAR və ya X-plore mobil proqramı kimi arxivator.





Yadda saxlamaq lazımdır ki, yalnız daxili resurslara vizual giriş əldə edirsiniz; redaktə imkanları son dərəcə məhduddur.
Quruluşa baxaq
.apk daxilində biz bir sıra fayl və qovluqları görürük, gəlin onların nə üçün olduğunu öyrənək:
  • AndroidManifest.xml bütün əsas məqamları, tələbləri, versiyanı, icazələri və s. öyrənə biləcəyiniz tətbiqin bir növ "pasportudur".
  • META-INF bu faylda metadata, yəni verilənlər, yoxlama məbləğləri, verilənlərə gedən yollar, resursların yolları və yoxlama məbləğləri, sertifikatlar haqqında məlumatlar var. Bu faylı istənilən mətn redaktoru ilə aça bilərsiniz, lakin Notepad++ proqramından istifadə etmək tövsiyə olunur.
  • Res qovluğunda proqramın bütün resursları, piktoqramlar, şəkillər, mətn və qrafik interfeys elementləri kimi qrafik var. Siz həmçinin qovluğa asanlıqla daxil ola bilərsiniz.
  • classes.dex Dalvik VM virtual maşını tərəfindən icra edilən birbaşa tətbiq proqram kodudur; siz bu faylın içərisində nə olduğunu yalnız .apk faylını dekompilyasiya etməklə görə bilərsiniz; bu barədə digər məqalələrdə danışacağıq. resources.arsc - tərtib edilmiş XML faylı, bu fayl proqramda iştirak edən bütün resurslar haqqında məlumatları ehtiva edir.
  • lib - yerli kitabxanaları olan bir qovluq, resurslarına yalnız xüsusi proqramlardan istifadə edərkən daxil olmaq mümkündür. APK-da com, org, udk kimi fayl və qovluqlar da ola bilər, lakin həmişə deyil.

İndi daxili quruluşa daha ətraflı baxaq, bunun üçün bizə dekompilyasiya proqramı, Java və APK faylı lazımdır. .apk-nin sökülməsi üçün əsas vasitə Apktooldur, lakin bu proqram Yalnız bir xəttdən işləyir, bu çox rahat deyil. Daha sürətli və daha rahat təhlil üçün APKing-dən istifadə edə bilərsiniz, bu hələ də eyni Apktooldur, lakin kontekst menyusundan işləmək imkanı ilə.
Beləliklə, biz Windows üçün hər hansı bir proqram kimi APKing-i quraşdırırıq və .apk seçərək, siçanın sağ düyməsi və Shift ilə eyni vaxtda vurun, bundan sonra aşağıdakıları görəcəyik:


Və seçin zəruri tədbir, məsələn, tamamilə dekompilyasiya edin, sonra proqram əməliyyatı tamamlayacaq və eyni adlı qovluq yaradacaq.


Qovluğu açmaqla APK faylının bütün resurslarına çıxışımız olacaq.


Bu belədir mətn faylları redaktə edilə bilər, əsas qaydalara riayət etməklə məşhur Notepad++ proqramından istifadə edə bilərsiniz, məsələn, AndroidManifest.xml-ni nəzərdən keçirin.

Yenə mənəm və çaydanlar və qəhvə qabları üçün təlimatlarım şəkillərlə.

Bu dəfə status çubuğu modifikasiyasının quraşdırılması nümunəsindən istifadə edərək Android OS-nin sistem komponentlərinin dəyişdirilməsi haqqında ətraflı danışacağam.

Android bir az Linuxdur. Telefonun bir kərpicə çevrilməməsi üçün faylları dəyişdirərkən bir sıra qaydalara riayət etmək lazımdır, bu, yalnız cihazın daxili yaddaşından bütün məlumatların itirilməsi ilə tam yanıb-sönmə ilə canlandırıla bilər. Daxili bölmələr formatlanır fayl sistemi flash sürücülərdəki FAT32-dən fərqlidir. Digər şeylər arasında, fayl xassələri müxtəlif istifadəçi qrupları (fayl sahibi, fayl sahibi qrupu, digər istifadəçilər) üçün icazələri saxlayır. ilə işləyərkən sistem faylları onlar saxlanmalıdır, çünki yükləyərkən sistem sadəcə onlara daxil ola bilməyəcək və normal yükləməyə də bilər.
Alətlərdən başlayaq.

Bizə lazım olacaq:

  • Kök hüquqları və fayl icazələri ilə işləyə bilən fayl meneceri. Root Explorer ən yaxşısıdır (Sən almısan, elə deyilmi?)
  • Sistemin yerinə qoymaq istədiyimiz dəyişdirilmiş faylın özü (məqalənin sonundakı keçid).

İndi biz Root Explorer-in rahat funksiyalarından birini istifadə edirik. Kontekst menyusunu açmaq üçün istədiyiniz fayla uzun bir toxunuş edək

Və elementə klikləyin " Bu faylı zip edin"faylı SD kartda zip arxivində saxlamaq üçün. Arxivləşdirdikdən sonra aşağıdakı mesajı alacağıq:

Düyməyə bas " Qal" qovluqda qalmaq və daha bir şey etmək.

İndi hər şey faylı əvəz etməyə hazırdır.
Artıq hər bir faylın giriş hüquqları haqqında danışmışam. Onları yeni faylda yenidən yaratmaq üçün əvvəlcə onlara köhnə fayldan baxmaq lazımdır. Onlar "rwxrwxrwx" bir sıra simvollarla təmsil olunur. 1-ci triada - sahib hüquqları, 2-ci - sahib qrupları, 3-cü - bütün digər istifadəçilər. Faylımızın "rw-r--r--" icazələri var.

İndi SD karta gedin, orada dəyişdirilmiş faylı tapın və onun kontekst menyusundan elementi seçin " Kopyalayın", lakin dərhal "/system/app" qovluğunu seçməyə tələsməyin, çünki biz dərhal sistemə zərər verəcəyik. Bunun əvəzinə faylı müvəqqəti fayllar üçün "/data/local/tmp" üçün xüsusi qovluğa köçürün. faylı sistemi alacaq bir forma çevirin.
Əvvəlcə faylın kontekst menyusuna zəng edin və " Adını dəyişdirin" və "SystemUI.apk" fayl adını daxil edin. Düzdür, çünki Linux-da addakı hərflərin vəziyyəti vacibdir, yəni "systemui.apk" və "SystemUI.apk" fərqli fayllardır.
Sonra, fayl icazələrini dəyişdirməlisiniz, çünki indi onlar demək olar ki, səhv qurulub. Bunu etmək üçün uzun bir toxunuşla yenidən faylın kontekst menyusuna zəng edin və elementi seçin " İcazələr". "rw-r--r--" dəyərimiz üçün qeyd qutuları bu şəkildə yerləşdirilməlidir:

" klikləyin tamam" və yenidən kontekst menyusuna zəng edin. İndi bu tətbiqin sahibini və qrupunu dəyişdirməlisiniz. Bunu etmək üçün " elementini seçin. Sahibini dəyişdirin". Faylın cari sahibi haqqında məlumat olan bir pəncərə görünəcək.
Burada kiçik bir sapma etmək lazımdır.
"/system/app" qovluğunda bütün fayllar "root" istifadəçisinə (uid=0) və "root" qrupuna (gid=0), "/system/framework" qovluğunda isə istifadəçi " sistem" (gid=1000) sahibidir. və "sistem" (gid=1000) qruplaşdırın.
Yuxarıda göstərilənlərə əsasən, tələb olunan dəyərləri təyin edin və " tamam".
Üçüncü dəfə fayl üçün kontekst menyusuna zəng edin və elementi seçin " Kopyalayın" və kopyalama dialoqunda "/system/app" qovluğuna keçin. İndi çekinmeyin " klikləyin. Yapışdır" və diqqətlə oxuyun.
Demək olar ki, dərhal sistem status çubuğu prosesinin qəfil başa çatdığını sizə xəbər verəcək və onu işə salmağı təklif edəcək. Bütün cəhdlər uğursuz olacaq. Pəncərələrin görünüşü arasında bir sıra hərəkətlər etmək üçün vaxtınız olmalıdır. Düyməni basmadan əvvəl cihazı söndürmək üçün menyunu çağırmalısınız, o, xəbərdarlıq altında görünəcək. İndi barmağınızı təxminən düymənin sol tərəfinə yerləşdirməlisiniz. İndi barmağınızı üç dəfə çox tez vurmalısınız ki, xəbərdarlığı bağlamaq, bağlama seçimini seçmək və niyyətlərinizi təsdiqləmək üçün vaxtınız olsun.
İndi biz telefonun sönməsini, yenidən başladın və nəticədən həzz almasını gözləyirik, ya da ondan həzz almırıq və səhvlər axtarırıq.

Bəzən Android-də bəzi proqramlar istifadəçiyə müəyyən mənada uyğun gəlmir. Buna misal olaraq intruziv reklamı göstərmək olar. Həm də olur ki, proqram hamı üçün yaxşıdır, amma içindəki tərcümə ya əyri, ya da tamamilə yoxdur. Və ya, məsələn, proqram sınaqdır, lakin tam versiyanı əldə etmək üçün heç bir yol yoxdur. Vəziyyəti necə dəyişdirmək olar?

Giriş

Bu yazıda APK paketini proqramla necə sökmək, onun daxili strukturuna baxmaq, bayt kodunu sökmək və dekompilyasiya etmək, həmçinin bizə bu və ya digər fayda gətirə biləcək tətbiqlərdə bir neçə dəyişiklik etməyə çalışacağıq.

Bütün bunları özünüz etmək üçün sizə Android proqramlarının yazıldığı Java dili və Android-də hər yerdə istifadə olunan XML dili haqqında ən azı əsas biliklərə ehtiyacınız olacaq - tətbiqin özünü və onun giriş hüquqlarını təsvir etməkdən tutmuş sətirləri saxlamağa qədər. ekranda görünəcək. Siz həmçinin xüsusi konsol proqram təminatından istifadə etmək bacarığına ehtiyacınız olacaq.

Beləliklə, tamamilə bütün Android proqramının paylandığı APK paketi nədir?

Tətbiqin dekompilyasiyası

Bu yazıda biz yalnız sökülən proqram kodu ilə işlədik, lakin böyük proqramlarda daha ciddi dəyişikliklər edilərsə, smali kodunu anlamaq çox çətin olacaq. Xoşbəxtlikdən, dex kodunu Java koduna dekompilyasiya edə bilərik, bu, orijinal olmasa da və geri tərtib edilməsə də, tətbiqin məntiqini oxumaq və başa düşmək daha asandır. Bunu etmək üçün bizə iki vasitə lazımdır:

  • dex2jar Dalvik bayt kodunun JVM bayt koduna tərcüməçisidir, bunun əsasında Java dilində kod əldə edə bilərik;
  • jd-gui, JVM bayt kodundan oxunaqlı Java kodu əldə etməyə imkan verən dekompilyatorun özüdür. Alternativ olaraq siz Jad (www.varaneckas.com/jad) istifadə edə bilərsiniz; Olduqca köhnə olmasına baxmayaraq, bəzi hallarda Jd-gui-dən daha oxunaqlı kod yaradır.

Onlardan belə istifadə edilməlidir. Əvvəlcə apk paketinə gedən yolu arqument kimi göstərərək dex2jar-ı işə salırıq:

% dex2jar.sh mail.apk

Nəticədə, Java koduna baxmaq üçün jd-gui-də artıq açıla bilən cari kataloqda mail.jar Java paketi görünəcək.

APK paketlərinin təşkili və qəbulu

Plastik torba Android proqramları, əslində adi ZIP faylıdır, məzmuna baxmaq və onu çıxarmaq üçün heç bir xüsusi alət tələb olunmur. Arxivatorun olması kifayətdir - Windows üçün 7zip və ya Linux-da konsol unzip. Ancaq bu, sarğı haqqındadır. İçində nə var? Ümumiyyətlə, içəridə aşağıdakı quruluşumuz var:

  • META-INF/- proqramın yaradıcısını müəyyən edən rəqəmsal sertifikatı və paket fayllarının yoxlama məbləğlərini ehtiva edir;
  • res/ - tətbiqin öz işində istifadə etdiyi müxtəlif resurslar, məsələn, şəkillər, interfeysin deklarativ təsviri, həmçinin digər məlumatlar;
  • AndroidManifest.xml- tətbiqin təsviri. Buraya, məsələn, tələb olunan icazələrin siyahısı daxildir Android versiyasıtələb olunan icazə ekran;
  • siniflər.dex- üçün tərtib edilmiş proqram bayt kodu virtual maşın Dalvik;
  • resurslar.arsc- həm də resurslar, lakin fərqli bir növ - xüsusən də sətirlər (bəli, bu fayl Ruslaşdırma üçün istifadə edilə bilər!).

Sadalanan fayllar və qovluqlar, ümumiyyətlə, olmasa da, bəlkə də APK-lərin böyük əksəriyyətindədir. Bununla belə, qeyd etməyə dəyər daha bir neçə o qədər də ümumi olmayan fayl/kataloq var:

  • aktivlər- resursların analoqu. Əsas fərq ondan ibarətdir ki, resursa daxil olmaq üçün onun identifikatorunu bilmək lazımdır, lakin aktivlərin siyahısı tətbiq kodunda AssetManager.list() metodundan istifadə etməklə dinamik şəkildə əldə edilə bilər;
  • lib- NDK (Native Development Kit) istifadə edərək yazılmış doğma Linux kitabxanaları.

Bu kataloqdan C/C++ dilində yazılmış oyun mühərriklərini orada yerləşdirən oyun istehsalçıları, həmçinin yüksək performanslı proqramların yaradıcıları (məsələn, Google Chrome) tərəfindən istifadə olunur. Cihazı tapdıq. Bəs sizi maraqlandıran tətbiqin paket faylını necə əldə etmək olar? Kök olmadan APK fayllarını cihazdan götürmək mümkün olmadığından (onlar /data/app qovluğunda yerləşir) və kökləmə həmişə məsləhət görülmədiyi üçün proqram faylını kompüterinizə çatdırmağın ən azı üç yolu var:

  • Chrome üçün APK Downloader uzantısı;
  • Real APK Leecher proqramı;
  • müxtəlif fayl hosting və Varezniks.

Hansından istifadə etmək zövq məsələsidir; biz ayrı-ayrı proqramlardan istifadə etməyi üstün tuturuq, ona görə də Real APK Leecher-in istifadəsini təsvir edəcəyik, xüsusən də o, Java-da yazılmışdır və müvafiq olaraq Windows və ya Nix-də işləyəcəkdir.

Proqramı işə saldıqdan sonra üç sahəni doldurmalısınız: E-poçt, Parol və Cihaz ID - və dil seçin. İlk ikisi cihazda istifadə etdiyiniz Google hesabınızın e-poçtu və paroludur. Üçüncüsü, cihazın identifikatorudur və kodu yığan cihaza yazmaqla əldə edilə bilər # #8255## və sonra Cihaz ID xəttini tapın. Doldurarkən, yalnız android- prefiksi olmadan ID-ni daxil etməlisiniz.

Doldurub saxladıqdan sonra tez-tez “Serverə qoşulma zamanı xəta” mesajı görünür. Bunun Google Play ilə heç bir əlaqəsi yoxdur, ona görə də ona məhəl qoymayın və sizi maraqlandıran paketləri axtarın.

Baxın və dəyişdirin

Deyək ki, sizi maraqlandıran paket tapdınız, onu yüklədiniz, paketdən çıxartdınız... və bəzi XML faylına baxmaq istəyərkən, faylın mətn olmadığını görəndə təəccübləndiniz. Onu necə dekompilyasiya etmək və ümumiyyətlə paketlərlə necə işləmək olar? SDK quraşdırmaq həqiqətən lazımdırmı? Xeyr, ümumiyyətlə SDK quraşdırmaq lazım deyil. Əslində, APK paketlərini çıxarmaq, dəyişdirmək və paketləmək üçün bütün addımlar aşağıdakı alətləri tələb edir:

  • ZIP arxivi qablaşdırma və qablaşdırma üçün;
  • smali- Dalvik virtual maşın bayt kodu montajçısı/sökücü (code.google.com/p/smali);
  • aapt- resursların qablaşdırılması üçün alət (standart olaraq, tətbiqin işini optimallaşdırmaq üçün resurslar ikili formada saxlanılır). Android SDK-ya daxildir, lakin ayrıca əldə edilə bilər;
  • imzalayan- üçün alət rəqəmsal imza dəyişdirilmiş paket (bit.ly/Rmrv4M).

Bütün bu vasitələrdən ayrıca istifadə edə bilərsiniz, lakin bu əlverişsizdir, ona görə də onların əsasında qurulmuş daha yüksək səviyyəli proqram təminatından istifadə etmək daha yaxşıdır. Linux və ya Mac OS X üzərində işləyirsinizsə, apktool adlı bir alət var. O, resursları orijinal formada (ikili XML və arsc faylları daxil olmaqla) paketdən çıxarmağa, dəyişdirilmiş resurslarla paketi yenidən qurmağa imkan verir, lakin o, paketləri necə imzalamağı bilmir, ona görə də imzalayan yardım proqramını əl ilə işə salmalı olacaqsınız. Yardımçı proqramın Java-da yazılmasına baxmayaraq, onun quraşdırılması olduqca qeyri-standartdır. Əvvəlcə jar faylının özünü əldə etməlisiniz:

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

Əgər siz Windows-da işləyirsinizsə, onda onun üçün Virtuous Ten Studio adlı əla alət var ki, o da bütün bu vasitələri (apktoolun özü də daxil olmaqla) özündə cəmləşdirir, lakin CLI interfeysi əvəzinə istifadəçiyə intuitiv qrafik interfeys təqdim edir. bir neçə kliklə qabların açılması, sökülməsi və dekompilyasiyası üçün əməliyyatları yerinə yetirin. Bu alət Donation-ware-dir, yəni bəzən lisenziya almağı xahiş edən pəncərələr görünür, lakin sonda buna dözmək olar. Bunu təsvir etməyin mənası yoxdur, çünki interfeysi bir neçə dəqiqə ərzində başa düşə bilərsiniz. Lakin apktool, konsol xarakterinə görə, daha ətraflı müzakirə edilməlidir.


Gəlin apktool seçimlərinə baxaq. Bir sözlə, üç əsas əmr var: d (deşifrə), b (qurmaq) və if (quraşdırma çərçivəsi). Əgər ilk iki əmrlə hər şey aydındırsa, onda üçüncü, şərti ifadə nə edir? O, hər hansı bir sistem paketini parçaladığınız hallarda lazım olan müəyyən edilmiş UI çərçivəsini açır.

Birinci əmrin ən maraqlı variantlarına baxaq:

  • -s- dex fayllarını sökməyin;
  • -r- resursları qablaşdırmadan çıxarmayın;
  • -b- daxil etməyin sazlama məlumatları dex faylının sökülməsinin nəticələrinə;
  • --çərçivə yolu- apktool-da quraşdırılmış interfeys əvəzinə müəyyən edilmiş UI çərçivəsini istifadə edin. İndi b əmri üçün bir neçə varianta baxaq:
  • -f- dəyişiklikləri yoxlamadan məcburi montaj;
  • -a- nədənsə başqa mənbədən istifadə etmək istəsəniz, aapt-a (APK arxivi yaratmaq üçün alət) yolunu göstərin.

apktool-dan istifadə etmək çox sadədir, bunun üçün sadəcə əmrlərdən birini və APK-ya gedən yolu göstərin, məsələn:

$ apktool d mail.apk

Bundan sonra paketin bütün çıxarılan və sökülən faylları poçt kataloqunda görünəcək.

Hazırlıq. Reklamın deaktiv edilməsi

Nəzəriyyə, əlbəttə ki, yaxşıdır, amma qablaşdırılmamış paketlə nə edəcəyimizi bilmiriksə, nəyə ehtiyac var? Gəlin nəzəriyyəni öz xeyrimizə tətbiq etməyə çalışaq, yəni bəzi proqram təminatını elə dəyişdirək ki, o, bizə reklam göstərməsin. Məsələn, Virtual Məşəl olsun - virtual məşəl. Bu proqram bizim üçün idealdır, çünki o, zəhlətökən reklamlarla doludur və üstəlik, kod cəngəlliyində itməmək üçün kifayət qədər sadədir.


Beləliklə, yuxarıda göstərilən üsullardan birini istifadə edərək, proqramı bazardan yükləyin. Virtuous Ten Studio-dan istifadə etmək qərarına gəlsəniz, sadəcə olaraq tətbiqdə APK faylını açın və onu açın, layihə yaradın (Fayl -> Yeni layihə), sonra layihənin kontekst menyusunda Faylı İmport et seçin. Seçiminiz apktool-a düşdüsə, sadəcə bir əmri yerinə yetirin:

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

Bundan sonra, com.kauf.particle.virtualtorch kataloqunda əvvəlki bölmədə təsvir edilənə bənzər bir fayl ağacı görünəcək, lakin dex faylları və apktool.yml faylı əvəzinə əlavə smali kataloqu ilə. Birincisi proqramın icra edilə bilən dex faylının sökülən kodunu, ikincisi apktool-un paketi geri yığması üçün lazım olan xidmət məlumatlarını ehtiva edir.

Baxmalı olduğumuz ilk yer, əlbəttə ki, AndroidManifest.xml-dir. Və burada dərhal aşağıdakı sətirlə qarşılaşırıq:

Tətbiqə İnternet bağlantısından istifadə üçün icazələrin verilməsindən məsul olduğunu təxmin etmək çətin deyil. Əslində, sadəcə reklamdan xilas olmaq istəyiriksə, çox güman ki, sadəcə tətbiqi İnternetdən bloklamalıyıq. Gəlin bunu etməyə çalışaq. Göstərilən xətti silirik və apktool istifadə edərək proqramı qurmağa çalışırıq:

$ apktool b com.kauf.particle.virtualtorch

Nəticədə yaranan APK faylı com.kauf.particle.virtualtorch/build/ kataloqunda görünəcək. Bununla birlikdə, rəqəmsal imzalanmadığından və onu quraşdırmaq mümkün olmayacaq yoxlama məbləğləri faylları (orada sadəcə META-INF/ kataloqu yoxdur). Biz apk-signer yardım proqramından istifadə edərək paketi imzalamalıyıq. Başladı. İnterfeys iki nişandan ibarətdir - birincidə (Açar Generator) açarlar yaradırıq, ikincisində (APK Signer) imzalayırıq. Şəxsi açarımızı yaratmaq üçün aşağıdakı sahələri doldurun:

  • Hədəf Faylı- açar anbarının çıxış faylı; adətən bir cüt açarı saxlayır;
  • parolTəsdiq edin- saxlama üçün parol;
  • ləqəb- anbarda olan açarın adı;
  • ləqəb parolTəsdiq edin- gizli açar parol;
  • Etibarlılıq- etibarlılıq müddəti (illərlə). Varsayılan dəyər optimaldır.

Qalan sahələr, ümumiyyətlə, isteğe bağlıdır - lakin ən azı biri doldurulmalıdır.


XƏBƏRDARLIQ

apk-signer istifadə edərək proqram imzalamaq üçün siz Android SDK quraşdırmalı və müəyyən etməlisiniz tam yol proqram parametrlərində ondan əvvəl.

Bütün məlumatlar yalnız məlumat məqsədləri üçün verilir. Nə redaktorlar, nə də müəllif bu məqalənin materiallarının vurduğu hər hansı mümkün zərərə görə məsuliyyət daşımır.

İndi bu açarla APK-nı imzalaya bilərsiniz. APK İmzalayan sekmesinde, yeni yaradılan faylı seçin, parol, əsas ləqəbi və parolu daxil edin, sonra APK faylını tapın və cəsarətlə "İmzala" düyməsini basın. Hər şey yaxşı olarsa, paket imzalanacaq.

MƏLUMAT

Paketi öz açarımızla imzaladığımız üçün o, orijinal proqramla ziddiyyət təşkil edəcək, yəni proqram təminatını bazar vasitəsilə yeniləməyə çalışdığımız zaman xəta alacağıq.

Rəqəmsal imza yalnız üçüncü tərəf proqram təminatı üçün tələb olunur, buna görə də dəyişiklik edirsinizsə sistem tətbiqləri, /system/app/ qovluğuna kopyalanaraq quraşdırılır, onları imzalamağa ehtiyac yoxdur.

Bundan sonra paketi smartfonunuza endirin, quraşdırın və işə salın. Voila, reklam getdi! Bunun əvəzinə, İnternetin olmadığı və ya müvafiq icazələrin olmadığı mesajı ortaya çıxdı. Teorik olaraq, bu kifayət ola bilər, lakin mesaj zəhlətökən görünür və düzünü desəm, axmaq bir tətbiqlə bəxtimiz gətirdi. Normalda yazılmış proqram təminatı çox güman ki, öz etimadnaməsini aydınlaşdıracaq və ya İnternet bağlantısını yoxlayacaq və əks halda sadəcə işə salmaqdan imtina edəcək. Bu vəziyyətdə necə olmaq olar? Əlbəttə ki, kodu redaktə edin.

Tipik olaraq, proqram müəllifləri proqram və ya onun "fəaliyyətlərindən" biri (sadə dillə desək, proqram ekranları) işə salındıqda reklamların nümayişi və bu siniflərin çağırış metodları üçün xüsusi siniflər yaradırlar. Gəlin bu sinifləri tapmağa çalışaq. Biz smali kataloquna gedirik, sonra com (org-da yalnız cocos2d açıq qrafik kitabxanası var), sonra kauf (buradadır, çünki bu, tərtibatçının adıdır və bütün kodu oradadır) - və budur, marketinq kataloqu. İçəridə biz smali uzantılı bir dəstə fayl tapırıq. Bunlar siniflərdir və onlardan ən diqqət çəkəni Ad.smali sinfidir ki, adından asanlıqla təxmin etmək olar ki, bu, reklam nümayiş etdirən sinifdir.

Biz onun işinin məntiqini dəyişə bilərdik, lakin onun hər hansı metoduna edilən zəngləri proqramın özündən sadəcə silmək daha asan olardı. Buna görə də, biz marketinq kataloqunu tərk edirik və bitişik hissəciklər kataloquna, sonra isə virtual məşələ gedirik. MainActivity.smali faylı burada xüsusi diqqətə layiqdir. Bu, Android SDK tərəfindən yaradılmış və proqrama giriş nöqtəsi kimi quraşdırılmış standart Android sinfidir (C-də əsas funksiyanın analoqu). Faylı redaktə etmək üçün açın.

İçərisində smali kodu (yerli assembler) var. Aşağı səviyyəli xarakterinə görə olduqca çaşdırıcı və oxunması çətindir, ona görə də biz onu öyrənməyəcəyik, sadəcə olaraq kodda Reklam sinfinə aid bütün istinadları tapıb şərh edəcəyik. Axtarışda "Elan" sətirini daxil edirik və 25-ci sətirə keçirik:

Sahə özəl reklamı:Lcom/kauf/marketing/Ad;

Burada Reklam sinfi obyektini saxlamaq üçün reklam sahəsi yaradılır. Xəttin qarşısına ### işarəsi qoyaraq şərh edirik. Axtarışa davam edirik. Sətir 423:

Yeni instansiya v3, Lcom/kauf/marketing/Ad;

Burada obyektin yaradılması baş verir. Şərh edək. Axtarışı davam etdiririk və 433, 435, 466, 468, 738, 740, 800 və 802-ci sətirlərdə Elan sinfinin metodlarına zənglər tapırıq. Şərh edək. Bax belədir. Yadda saxla. İndi paketi yenidən bir yerə yığmaq və funksionallığı və reklamın olub-olmamasını yoxlamaq lazımdır. Təcrübənin təmizliyi üçün AndroidManifest.xml-dən çıxarılan xətti qaytarırıq, paketi yığırıq, imzalayırıq və quraşdırırıq.

Bizim qvineya donuzumuz. Reklam görünür

Vay! Reklam yalnız proqram işləyərkən yox oldu, lakin proqram təminatını işə saldıqda gördüyümüz əsas menyuda qaldı. Beləliklə, gözləyin, amma giriş nöqtəsi MainActivity sinfidir və proqram işləyərkən reklam yoxa çıxdı, lakin əsas menyuda qaldı, buna görə giriş nöqtəsi fərqlidir? Həqiqi giriş nöqtəsini müəyyən etmək üçün AndroidManifest.xml faylını yenidən açın. Və bəli, aşağıdakı sətirləri ehtiva edir:

Onlar bizə (və daha da vacibi, androidə) android.intent.category.LAUNCHER kateqoriyasından android.intent.action.MAIN niyyətinin (hadisəsinin) yaradılmasına cavab olaraq Start adlı fəaliyyətin işə salınmalı olduğunu bildirirlər. Bu hadisə başlatma qurğusunda proqram ikonasına toxunduqda yaradılır, beləliklə, o, giriş nöqtəsini, yəni Başlanğıc sinfini təyin edir. Çox güman ki, proqramçı əvvəlcə giriş nöqtəsi standart MainActivity sinfi olan əsas menyusu olmayan bir proqram yazdı, sonra menyudan ibarət və Başlanğıc sinfində təsvir olunan yeni bir pəncərə (fəaliyyət) əlavə etdi və onu əl ilə giriş etdi. nöqtə.

Start.smali faylını açın və yenidən “Elan” xəttini axtarın, 153 və 155-ci sətirlərdə FirstAd sinfinin qeydini tapırıq. O, həm də mənbə kodundadır və adına görə əsas ekranda reklamların nümayişinə cavabdehdir. Gəlin daha da nəzər salaq, FirstAd sinfinin nümunəsinin yaradılması və kontekstə uyğun olaraq bu instansiya ilə əlaqəli niyyət, daha sonra isə şərti keçid nümunə yaratmazdan əvvəl həyata keçirilən cond_10 etiketi var. sinifdən:

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

Çox güman ki, proqram birtəhər təsadüfi olaraq reklamın əsas ekranda göstərilib-göstərilmədiyini hesablayır və əks halda birbaşa cond_10-a keçir. Yaxşı, gəlin onun tapşırığını sadələşdirək və şərti keçidi şərtsiz bir keçidlə əvəz edək:

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

Kodda FirstAd haqqında daha heç bir qeyd yoxdur, ona görə də biz faylı bağlayırıq və apktool istifadə edərək virtual məşəlimizi yenidən yığırıq. Onu smartfonunuza köçürün, quraşdırın, işə salın. Voila, bütün reklamlar itdi, buna görə hamımızı təbrik edirik.

Nəticələr

Bu məqalə yalnız Android proqramlarını sındırmaq və dəyişdirmək üsullarına qısa bir girişdir. Qorunmanın aradan qaldırılması, anlaşılmaz kodun təhlili, tətbiq resurslarının tərcüməsi və dəyişdirilməsi, eləcə də ilə yazılmış proqramların dəyişdirilməsi kimi bir çox məsələlər pərdə arxasında qaldı. Android istifadə edərək NDK. Bununla belə, əsas biliyə sahib olmaqla, hər şeyi başa düşmək yalnız vaxt məsələsidir.




Üst