Програма за промена на apk. Основи на уредување на системски апликации на Android (apk). Уредување на АПК пакети и нивно примање

APK е формат што се користи во оперативниот систем Андроид за архивирани извршни датотеки со апликации. Аналогот, на пример, во Windows е .msi, во Symbian - .sis, во Linux - .rpm или .deb. Во оваа статија ќе ги разбереме колку што е можно подетално сите прашања во врска со овој формат на датотека.

Процесот на расклопување, уредување и склопување „правилно“ се нарекува обратно инженерство. Што е потребно за ова? Потребни се следните алатки:

Apktool. Поудобно е да се користи со школката SmartApktool; можете да користите и готови сериски датотеки, на пример ApktoolBAT.

Notepad++ - не е потребен, но многу се препорачува.

7zip или WinRar, или која било друга програма за архивирање, но се препорачува една од овие.

Деодексиран фирмвер.

Постојат неколку начини да инсталирате апликации на оперативниот систем Андроид. Првиот, исто така главниот, е директно преку Google Play(Android Market), односно од официјален извор, за кој е потребна сметка на Google. Многу апликации се платени, ако не сакате да барате хакирана верзија на пиратски сајтови, ќе мора да платите за купувањето. Но, ние ќе разговараме за тоа како да го направиме тоа во. Вториот е од неофицијални извори освен Google Play, за кој ќе треба да ја овозможите опцијата „Дозволи инсталација на апликации од неофицијални извори“ во поставките на вашиот паметен телефон или таблет, по што датотеката за инсталација на APK мора да се запише во меморијата картичка.

Исто така, можно е да се инсталираат APK апликации на големо. За да го направите ова, ќе ви треба Astro File Manager - специјален менаџер на датотеки. Откако ќе го инсталирате, преместете ги апликациите:

Од паметен телефон/таблет: во mntsdcardackupsapp(со други зборови, мемориска картичка, потоа папка за резервни копии, папка со апликации)

Од персонален компјутер (не заборавајте да го овозможите поврзувањето на уредот со Android во режим на едноставен USB уред): СД картичкарезервни копииапликација

Потоа отворете ја саканата апликација, во контекстното мениизберете „Управник со апликации“ и одете во табулаторот „Резервни копии“, каде што избираме „Долго кликнете или проверете ја апликацијата за инсталирање“. Кликнете на копчето „Инсталирај“ - сите апликации ќе се инсталираат на вашиот уред.

Сосема е лесно да се види каква е структурата на датотеката АПК. Отворете ја саканата АПК користејќи програма за архивирање, на пример, WinRar. Еве што гледаме внатре:

AndroidManifest.xmlе еден вид „пасош“ кој опишува што има во апликацијата, вклучувајќи: системски барањана апликацијата, нејзината структура и верзија.

МЕТА-ИНФ– папка што ја содржи датотеката МАНИФЕСТ.MF(Може да го отвори речиси секој уредувач на текст, се препорачува да се користи Notepad++), со отворање на кое можете да ги видите контролните суми и патеките на податоци SHA-1, верзијата на стандардот Manifest-Version, датотеките со сертификати RSA или DSA, датотеката SF содржи патеки до различни ресурси и нивните контролни суми. Општо земено, META-INF се датотеки со метаподатоци, односно податоци за податоци.

рез– папка која ги содржи сите ресурси за „софтверско полнење“, подредени во подпапки. На пример, во папката ~drawable~ има графички елементи на апликации (различни статуси, икони итн.), во директориумот за распоред има XML-датотеки кои укажуваат на поставување на графички елементи кориснички интерфејс(GUI).

часови.dex– програмски код извршен од виртуелната машина Dalvik VM. Да потсетиме дека оперативниот систем Андроид е мешавина од кернелот Линукс и виртуелната машина Јава.

ресурси.arsc– компајлирана XML датотека. Содржи податоци за сите ресурси што ги користи програмата.

средства– папка која содржи и различни ресурси; можеби воопшто ја нема во АПК.

lib– папка која содржи „libs“ или, поедноставно, природни библиотеки, ако програмата е напишана со помош на NDK, на пример со елементи кога C++. Овој директориум можеби не е во АПК.

com– можеби не е во АПК.

org– можеби не е во АПК.

удк– можеби не е во АПК.

Се занимававме со содржината на апликацијата APK, сега да продолжиме со неговото детално расклопување. За декомпилација ќе ви требаат Apktool и Java, како и самата APK-датотека. Apktool се препорачува да се отпакува во директориум В:ПРОЗОРЦИ(ова не е потребно, но ќе биде поудобно. Зошто – прочитајте малку подолу).

За да го стартувате Apktool, треба да го внесете менито „Run“ на вашиот компјутер. На Windows XP кликнете Стартувај -> Стартувај, на Windows 7: Task Manager ( Ctrl+Alt+Дел), на врвот во опаѓачкото мени Датотека -> Нова задача (Изврши...), или едноставно повикајте го со кратенка на тастатурата Win+R.

Повикувајќи се командна линија- ние пишуваме cmd, по што стартуваме Apktool - пишува apktool(за таа цел беше неопходно да се стави во Папка WINDOWS). Понатаму, целата контрола се случува преку командната линија користејќи параметри.

Ако не сакате да се мачите со постојано внесување текстуални команди, можете да користите GUI– на пример, споменатиот SmartApkTool. Стартувајте го SmartApkTool.exe, а потоа изберете ја саканата апликација APK во картичката Отпакувајте/Пакувајте (важно е името на датотеката да не содржи празни места, кирилица, специјални знаци и интерпункциски знаци).

По распакувањето, програмата ќе создаде папка со исто име како и датотеката APK. Внатре во неа ќе биде целата содржина на апликацијата.

АПК исто така може да се локализира. Пред да почнеме да го правиме ова, го стартуваме претходно инсталираниот Notepad++ и го конфигурираме на следниов начин. Отворање Поставки -> Конфигурација -> Нов документ.

По овие чекори, отворете ја неотпакуваната (декомпилирана) апликација, папка res/вредности.

Сите локализации често се наоѓаат во датотеката жици.xml, но понекогаш некои од нив може да бидат содржани во низи.xml. Копирајте ги овие датотеки и креирајте ги во папка резпапка вредности-ruи вметнете ги во неа.

Сега можете да отворите жици.xmlкористејќи Notepad++, направете го преводот и зачувајте ја променетата датотека.

Во датотека AndroidManifest.xmlМожете да одредите каде да инсталирате APK апликации. Внимание, ова е релевантно само за Android верзија 2.2 и понова. Значи, отворете ја наведената датотека користејќи Notepad ++. Речиси на самиот почеток можете да го видите параметарот:

Овде можете да ги наведете следните опции (по симболот „=“):

Само внатрешно– апликацијата ќе се инсталира само во внатрешна меморијауреди

автоматско– му овозможува на корисникот избор да ја инсталира апликацијата во внатрешна меморија или на мемориска картичка

претпочитаат Надворешен– програмата ќе се инсталира на мемориската картичка. Треба да се земе предвид дека сите апликации нема да работат правилно ако се инсталираат на надворешен диск или воопшто нема да работат. Тие вклучуваат:

Услуги- односно услуги

Аларм услуги– услуги кои користат време, како што се будилници

Мотори со метод на внесување– внесете апликации, вклучувајќи различни тастатури

Позадини во живо– „жива“ анимирана позадина

Во живоПапки– соодветно, анимирани директориуми

АпликацијаДодатоци- разни „виџети“

СметкаМенаџери– менаџери на различни сметки, вклучително и ICQ клиенти, клиенти за социјалните мрежии така натаму

Синхронизирај адаптери– програми кои бараат постојана синхронизација

УредАдминистраторите– апликации кои се користат за администрација

Заштита од копирање– апликации кои се заштитени од копирање.

Во апликацијата, можете да уредувате и замените различни икони и графички елементи на корисничкиот интерфејс со свои. За да го направите ова, отворете ја папката резво папката со декомпилирана АПК апликација, тука можете да ги видите папките:

drawable-hdpi

цртеж-ldpi

Овие папки ги содржат сите икони и други графички елементи на програмата. Буквата пред „dpi“ ја означува големината на графичките елементи, соодветно:

hdpi -Точки со висока густина по инч, големина 72x72 пиксели

mdpi -просечна густина на точки по инч, големина 48x48 пиксели

лdpi -мала густина на точки по инч, големина 36x36 пиксели

За да ја промените, на пример, иконата на апликацијата, отворете ја датотеката AndroidManifest.xmlкористејќи ја програмата Notepad++, побарајте ја линијата во која е означена иконата, погледнете го нејзиното точно име (забележете дека наставката на датотеката не е запишана, туку само името на датотеката).

Отворете ја соодветната папка цртање-*dpi,залепете го изменетото или нова икона, не заборавајте повторно да го проверите оригиналниот наслов AndroidManifest.xml. Сликата мора да биде во формат .png и да има точно иста густина на пиксели како изворната датотека, на пример за hdpiтоа е 72x72 пиксели.

Ако сакате да го замените името на иконата со свое, тогаш зачувајте ја сликата со саканото име на датотеката цртање-*dpi, по што го означуваме точно истото име во AndroidManifest.xml(На пример android:icon="@drawable/тест"). На ист начин, можете да ги промените сите други графички елементи, но барањата се исти - наставката мора да биде .png, а густината на точките по инч е иста како и изворната датотека.

Во неотпакуваната апликација, можете повторно да проверите какви права има. Ова е корисно ако АПК е инсталирана од непознат извор и за да се избегне ситуација кога батериска ламба или убав календар одеднаш почнуваат да испраќаат платени СМС пораки до непознат број. Отворање AndroidManifest.xmlПрограмирајте Notepad++ и побарајте ги соодветните линии. За испраќање текстуални пораки, на пример, параметарот реагира SEND_SMS. Можете да прочитате повеќе за сите права што може да бидат достапни на апликацијата во.

Инсталираните АПК апликации може да се извлечат од системот. Ова може да се направи на неколку начини. Прво, можете да инсталирате Astro File Manager. Отворете ја апликацијата, а потоа изберете „Управник со апликации“ од контекстното мени. Се бараат потребна апликација, означете го со штиклирање и направете резервна копија. По обработката, избраната апликација ќе се наоѓа по патеката:

mntsdcardackupsapp

sdcardackupsapp

Следно, можете да го користите Root програмаДеинсталирање. По стартувањето на апликацијата, таа автоматски ќе одреди сè инсталирани АПКи автоматски ќе направи резервна копија на сите нив. Според тоа, можете, ако сакате, да ги копирате овие резервни копии за понатамошна декомпилација; тие се наоѓаат по патеката:

mntsdcardRootUnistallerautobackups(кога се гледа директно од уред со Android)

sdcardRootUnistallerautobackups(кога се гледа преку компјутер, додека уредот со Android е поврзан како USB-уред).

Друг начин е да користите Root Browser Lite, секако дека ќе ви требаат права на Root за ова. Отворање оваа апликација, ја следиме патеката:

системапликација(ако сте заинтересирани за системски апликации).

Ние ги копираме потребните апликации на мемориската картичка, по што можете да извршите какви било манипулации со нив.

Можете исто така да преземате APK апликации за кои сте заинтересирани директно од Google Play (Android Market). Личен компјутер. За ова ќе ви треба прелистувач Гугл хром(верзија не пониска од 17), а приклучокот за тоа е Преземач на АПК. Откако ќе го преземете и инсталирате наведениот приклучок, креирајте копија од кратенката Google прелистувачХром, каде што ја пишуваме следната линија по празно место:

-игнорирај-сертификат-грешки

Со стандардната патека за инсталација на прелистувачот, линијата треба да изгледа вака:

„C:Program FilesGoogleChromeApplicationchrome.exe“ -ignore-certificate-errors

После тоа, внесете во бирачот на паметниот телефон:

*#*#8255#*#*

Ние го препишуваме ID на уредот, кој се состои од 16 знаци. Отворете го Google Chrome користејќи ја креираната кратенка со наведениот параметар -игнорирај-сертификат-грешки, ајде да одиме на Алатки -> Екстензии(исто така можете да внесете „chrome://settings/extensions“ во лентата за адреси), отворете ги поставките на приклучокот APK Downloader. Во опциите, внесете ја вашата е-адреса и лозинка сметка Google, како и примениот ID на уред. Сега одете на Google Play (Android Market), отворете ја страницата со саканата апликација, чекаме целосно да се вчита. Ќе се појави иконата APK Downloader - откако ќе ја кликнете, апликацијата ќе се преземе на вашиот компјутер.

Apk editor pro, кој можете да го преземете за Android на нашата веб-страница, ќе ви овозможи да ја хакирате/промените содржината на датотеките на која било апликација за Мобилни уредии прилагодете го по ваш вкус.

Особености

Програмата е професионална алатка која, во рацете на напредните корисници, може да стане моќна алатка за уредување апликации за Android. Функционалноста практично не се разликува од сличната софтверза персонални компјутери.

Што може да направи оваа алатка?

  1. Променете ги (преведете) имињата на другите апликации.
  2. Променете ги распоредите на архитектурата, боите, шаблоните за графички поставки (на пример, големината на иконата).
  3. Променете го дизајнот на звукот, медиумските датотеки.
  4. Отстранете ги рекламите.
  5. Заобиколете го блокирањето на платената содржина.
  6. Префрлете апликација од внатрешната меморија на уредот на SD-картичка.
  7. Променете ја резолуцијата и многу повеќе.

За да разберете како да ја користите алатката, треба да преземете apk editor pro и да отидете во менито. Потоа изберете или инсталирана апликацијана Андроид или неговата apk-датотека. После ова, ќе се отворат стандардните податоци, кои корисникот може да ги промени:

  • ресурси за уредување;
  • замена на датотеки;
  • општо уредување;
  • уредување на податоци.

Програмата ќе понуди да ја инсталира изменетата верзија. Ова не функционира во сите случаи, затоа стара верзијамора да се отстрани рачно и да се инсталира нов. По бришењето, треба да ја изберете папката за уредување apk (за погодност, можете да го користите ES Explorer) меѓу програмите на Android и да ја пронајдете изменетата датотека на апликацијата и да ја инсталирате на уредот.

Програмата има кориснички интерфејс. Навигацијата е прилично едноставна, но корисникот треба да има основно познавање на англискиот јазик за да го разбере.

Предности и недостатоци

  1. Програмата му отвора на корисникот широк опсег на опции за прилагодување на апликациите.
  2. Менито содржи дел за помош, кој едноставно и детално опишува голем број на можности на програмата за уредување. Затоа, корисниците кои се далеку од програмирање нема да мора да бараат примери и упатства за уредување на ресурси од трети страни.
  3. Програмата можете да ја преземете бесплатно на нашата веб-страница.

Користењето на оваа алатка бара одредени вештини и знаења. Во рацете на неискусен корисник, уредувањето може да доведе до нарушување на интегритетот на датотечниот систем, што на крајот ќе доведе до неуспеси на апликацијата. Во менито во ставката Помош има примери за конверзија со слики и совети за тоа како правилно да го користите apk editor pro на Android. Затоа, ако сакате да ја разберете оваа програма, само следете ги упатствата.

Уредник - доволно корисна алатказа оние кои се соочуваат со незгоден интерфејс за апликација (недостаток на руски јазик, постојано рекламирање, банери итн.). Ако веќе сте ја користеле оваа програма, споделете ги вашите впечатоци подолу во коментарите.

Од оваа статија ќе научите од што се состои апликацијата Android, како да отворите APK-датотека и со кои програми.

Што е APK-датотека?

APK - оперативен формат Андроид системи, се користи за архивирани извршни апликациски датотеки, а името на самата датотека може да биде што било, но наставката треба да изгледа само вака.apk. АПК аналози во другите оперативни системи се .msi во Windows, .sis во Symbian, .rpm или .deb во Linux.

Ајде да видиме што има внатре
Всушност, .apk е ZIP архива, така што можете да ја погледнете внатрешната структура користејќи која било менаџер на датотекиили архивер како што е WinRAR или мобилната апликација X-plore.





Вреди да се запамети дека добивате само визуелен пристап до внатрешните ресурси; можностите за уредување се исклучително ограничени.
Ајде да ја погледнеме структурата
Внатре во .apk гледаме голем број датотеки и папки, ајде да дознаеме за што се тие:
  • AndroidManifest.xml е еден вид „пасош“ на апликацијата од кој можете да ги дознаете сите главни точки, барања, верзија, дозволи итн.
  • META-INF оваа датотека содржи метаподатоци, односно податоци за податоци, контролни суми, патеки до податоци, патеки и контролни суми на ресурси, сертификати. Можете да ја отворите оваа датотека со кој било уредувач на текст, но се препорачува да користите Notepad++.
  • Папката res ги содржи сите програмски ресурси, графички, како што се икони, слики, текст и елементи на графичкиот интерфејс. Можете исто така лесно да пристапите до папката.
  • classes.dex е директен програмски код за апликација што го извршува виртуелната машина Dalvik VM; можете да видите што има во оваа датотека само со декомпајлирање на .apk, за ова ќе зборуваме во други написи. resources.arsc - компајлирана XML-датотека, оваа датотека содржи податоци за сите ресурси вклучени во програмата.
  • lib - папка со природни библиотеки, до чии ресурси може да се пристапи само кога се користат специјализирани програми. АПК може да содржи и датотеки и папки како што се com, org, udk, но не секогаш.

Сега да ја разгледаме внатрешната структура подетално; за ова ни треба програма за декомпилација, Java и датотека APK. Главната алатка за расклопување на .apk е Apktool, но оваа програмаРаботи само од линија, што не е многу погодно. За побрза и поудобна анализа, можете да користите APKing, ова е сепак истиот Apktool, но со можност за работа од контекстното мени.
И така, инсталираме APKing како и секоја апликација за Windows и, откако избравме .apk, кликнете на неа со десното копче на глувчето и истовремено Shift, по што ќе го видиме следново:


И изберете неопходна акција, на пример, целосно декомпајлирајте, а потоа програмата ќе ја заврши операцијата и ќе создаде папка со истото име.


Со отворање на папката ќе имаме пристап до сите ресурси на датотеката APK.


Тоа е тоа текстуални датотекиможе да се уредува, додека ги почитувате основните правила, можете да ја користите популарната програма Notepad++, на пример, размислете за AndroidManifest.xml

Повторно сум јас и моите упатства за чајници и лончиња за кафе со слики.

Овој пат ќе зборувам детално за замена на системските компоненти на оперативниот систем Android користејќи го примерот за инсталирање модификација на статусната лента.

Андроид е мал Линукс. Неопходно е да се следат голем број правила при замена на датотеки за телефонот да не се претвори во тула, што може да се оживее само со целосно трепкање со губење на сите податоци од внатрешната меморија на уредот. Внатрешните партиции се форматирани во датотечен системразличен од FAT32 на флеш драјвови. Меѓу другото, својствата на датотеките складираат дозволи за различни кориснички групи (сопственик на датотека, група на сопственици на датотеки, други корисници). Кога работите со системски датотекитие треба да се зачуваат, бидејќи при вчитување, системот едноставно нема да може да пристапи до нив и може да не се подигне нормално.
Да почнеме со алатките.

Ќе ни требаат:

  • Управувач со датотеки што може да работи со права на root и дозволи за датотеки. Root Explorer е најдобар (го купивте, нели?)
  • Самата изменета датотека, која сакаме да ја ставиме на местото на системската (врска на крајот од статијата).

Сега користиме една од погодните функции на Root Explorer. Ајде да направиме долго допирање на саканата датотека за да се појави контекстното мени

И кликнете на ставката " Зпирајте ја оваа датотекаЗа да ја зачувате датотеката во zip архива на SD-картичката. По архивирањето, ќе ја добиеме следнава порака:

Притисни го копчето " Остани„ да останете во папката и да направите уште една работа.

Сега сè е подготвено за замена на датотеката.
Веќе зборував за правата за пристап на секоја датотека. За да ги рекреирате на нова датотека, прво мора да ги погледнете од старата. Тие се претставени со низа симболи "rwxrwxrwx". 1. тријада - сопственички права, 2. - сопственички групи, 3. - сите други корисници. Нашата датотека има дозволи "rw-r--r--".

Сега одете на SD-картичката, пронајдете ја изменетата датотека таму и од неговото контекстно мени изберете ја ставката " Копирај", но не брзајте веднаш да ја изберете папката "/system/app", бидејќи веднаш ќе го оштетиме системот. Наместо тоа, копирајте ја датотеката во посебна папка за привремени датотеки "/data/local/tmp" за да ја донесете датотека во форма што ќе го земе системот.
Прво, повикајте го контекстното мени на датотеката и изберете " Преименувај" и внесете го името на датотеката "SystemUI.apk". Така е, бидејќи во Linux случајот на буквите во името е важен, т.е. "systemui.apk" и "SystemUI.apk" се различни датотеки.
Следно, треба да ги промените дозволите за датотеки, бидејќи сега тие се речиси сигурно поставени погрешно. За да го направите ова, повторно повикајте го контекстното мени на датотеката со долг допир и изберете ја ставката " Дозволи". За нашата вредност "rw-r--r--" полињата за избор треба да бидат поставени вака:

Кликнете на " добро" и повторно повикајте го контекстното мени. Сега треба да го промените сопственикот и групата за оваа апликација. За да го направите ова, изберете ја ставката " Променете го сопственикот". Ќе се појави прозорец со информации за тековниот сопственик на датотеката.
Тука треба да направиме мала дигресија.
Во папката „/system/app“, сите датотеки се во сопственост на корисникот „root“ (uid=0) и групата „root“ (gid=0), а во папката „/system/framework“ корисникот“ систем" (gid=1000) е во сопственост. а групата "system" (gid=1000).
Врз основа на горенаведеното, поставете ги потребните вредности и кликнете " добро".
И по трет пат, повикајте го контекстното мени за датотеката и изберете ја ставката " Копирај" и во дијалогот за копирање одете во папката "/system/app". Сега слободно кликнете на " Залепи“ и прочитајте понатаму внимателно.
Речиси веднаш, системот ќе ве информира дека процесот на статусната лента ненадејно заврши и ќе понуди да го започнете. Сите обиди ќе бидат неуспешни. Помеѓу изгледот на прозорците, треба да имате време да направите голем број дејства. Пред да го притиснете копчето, мора да го повикате менито за да го исклучите уредот; тој ќе се појави под предупредување. Сега треба да го ставите прстот приближно на левата страна на копчето. Сега треба многу брзо да кликнете три пати со прстот за да имате време да го затворите предупредувањето, да ја изберете опцијата за исклучување и да ги потврдите вашите намери.
Сега чекаме телефонот да се исклучи, да го рестартираме и да уживаме во резултатот или да не уживаме и да бараме грешки.

Понекогаш некои апликации на Андроид не му одговараат на корисникот на некој начин. Пример е наметливото рекламирање. И, исто така, се случува програмата да е добра за сите, но преводот во неа е или искривен или целосно отсутен. Или, на пример, програмата е пробна, но не постои начин да се добие целосната верзија. Како да се промени ситуацијата?

Вовед

Во оваа статија ќе разговараме за тоа како да го расклопите пакетот APK со апликација, да ја разгледаме неговата внатрешна структура, да го расклопите и декомпајлираме бајтекодот, а исто така да се обидеме да направиме неколку промени во апликациите што можат да ни донесат една или друга корист.

За да го направите сето ова сами, ќе ви треба барем основно познавање на јазикот Java, на кој се напишани апликациите за Android, и јазикот XML, кој се користи насекаде во Android - од опишување на самата апликација и нејзините права за пристап до складирање низи кои ќе се прикаже на екранот. Ќе ви треба и способност да користите специјализиран софтвер за конзоли.

Значи, што е APK пакет во кој е дистрибуиран апсолутно целиот софтвер за Android?

Декомпилација на апликација

Во овој напис, работевме само со расклопен код за апликација, но ако се направат посериозни промени во големите апликации, разбирањето на кодот за мали ќе биде многу потешко. За среќа, dex кодот можеме да го декомпајлираме во Java код, кој иако не е оригинален и не е компајлиран, многу полесно се чита и разбира логиката на апликацијата. За да го направите ова, ќе ни требаат две алатки:

  • dex2jar е преведувач на Dalvik bytecode во JVM bytecode, врз основа на кој можеме да добиеме код на јазикот Java;
  • jd-gui е самиот декомпајлер кој ви овозможува да добиете читлив Java-код од JVM bytecode. Како алтернатива, можете да го користите Jad (www.varaneckas.com/jad); Иако е доста стар, во некои случаи генерира почитлив код од Jd-gui.

Вака треба да се користат. Прво, стартуваме dex2jar, наведувајќи ја патеката до пакетот apk како аргумент:

% dex2jar.sh mail.apk

Како резултат на тоа, Java пакетот mail.jar ќе се појави во тековниот директориум, кој веќе може да се отвори во jd-gui за да се види кодот на Java.

Уредување на АПК пакети и нивно примање

Пластична кеса Андроид апликации, всушност, е обична ZIP-датотека, не се потребни посебни алатки за да се прегледа содржината и да се извлече. Доволно е да имате архивар - 7zip за Windows или отпакување на конзола на Linux. Но, тоа е за обвивката. Што има внатре? Општо земено, внатре ја имаме следната структура:

  • МЕТА-ИНФ/- содржи дигитален сертификат на апликацијата, кој го идентификува нејзиниот креатор и контролни суми на датотеките на пакетот;
  • res/ - различни ресурси кои апликацијата ги користи во својата работа, како што се слики, декларативен опис на интерфејсот, како и други податоци;
  • AndroidManifest.xml- опис на апликацијата. Ова вклучува, на пример, листа на потребни дозволи, потребни Андроид верзијаИ потребна дозволаекран;
  • часови.dex- компајлиран бајтекод на апликација за Виртуелна машинаДалвик;
  • ресурси.arsc- исто така ресурси, но од различен вид - особено, жици (да, оваа датотека може да се користи за русификација!).

Наведените датотеки и директориуми се, ако не во сите, тогаш, можеби, во огромното мнозинство на АПК. Сепак, има уште неколку не толку вообичаени датотеки/директориуми кои вреди да се споменат:

  • средства- аналог на ресурси. Главната разлика е во тоа што за да пристапите до ресурс треба да го знаете неговиот идентификатор, но листата на средства може да се добие динамички со помош на методот AssetManager.list() во кодот на апликацијата;
  • lib- мајчин Линукс библиотеки напишани со помош на NDK (Native Development Kit).

Овој директориум го користат производителите на игри кои таму ги ставаат своите мотори за игра напишани во C/C++, како и креаторите на апликации со високи перформанси (на пример, Google Chrome). Го сфативме уредот. Но, како ја добивате датотеката на пакетот на апликацијата за која сте заинтересирани? Бидејќи не е можно да се подигнат APK-датотеки од уредот без root (тие се наоѓаат во директориумот /data/app) и не е секогаш препорачливо искоренувањето, постојат најмалку три начини да ја пренесете датотеката со апликација на вашиот компјутер:

  • Екстензија за преземање на АПК за Chrome;
  • Реална APK Leecher апликација;
  • разни хостинг датотеки и Varezniks.

Која да се користи е прашање на вкус; претпочитаме да користиме посебни апликации, па затоа ќе ја опишеме употребата на Real APK Leecher, особено затоа што е напишана на Java и, соодветно, ќе работи или во Windows или во Nix.

Откако ќе ја стартувате програмата, треба да пополните три полиња: е-пошта, лозинка и ID на уред - и изберете јазик. Првите две се е-поштата и лозинката на вашата сметка на Google што ги користите на уредот. Третиот е идентификаторот на уредот, а може да се добие со впишување на кодот на бирачот # #8255## а потоа наоѓање на линијата Device ID. При пополнување, треба само да го внесете ID без префиксот android-.

По пополнувањето и зачувувањето, често се појавува пораката „Грешка при поврзување со серверот“. Нема врска со Google Play, затоа слободно игнорирајте го и барајте пакети што ве интересираат.

Погледнете и изменете

Да речеме дека најдовте пакет што ве интересира, го преземавте, го отпакувавте... и кога се обидовте да прегледате некоја XML датотека, бевте изненадени кога откривте дека датотеката не е текст. Како да се декомпајлира и како воопшто да се работи со пакети? Дали е навистина потребно да се инсталира SDK? Не, воопшто не е неопходно да се инсталира SDK. Всушност, сите чекори за извлекување, менување и пакување на АПК пакетите ги бараат следните алатки:

  • ZIP архиверза распакување и пакување;
  • мали- Dalvik виртуелна машина бајтекод склопувач/расклопувач (code.google.com/p/smali);
  • aapt- алатка за пакување ресурси (по дифолт, ресурсите се складираат во бинарна форма за да се оптимизираат перформансите на апликацијата). Вклучено во Android SDK, но може да се добие одделно;
  • потписник- алатка за дигитален потписмодифициран пакет (bit.ly/Rmrv4M).

Можете да ги користите сите овие алатки одделно, но ова е незгодно, па затоа е подобро да користите софтвер од повисоко ниво изграден на нивна основа. Ако работите на Linux или Mac OS X, постои алатка наречена apktool. Тоа ви овозможува да ги отпакувате ресурсите во нивната оригинална форма (вклучувајќи бинарни XML и arsc датотеки), повторно да изградите пакет со променети ресурси, но не знае како да потпишува пакети, па затоа ќе мора рачно да ја стартувате алатката за потписници. И покрај фактот дека алатката е напишана во Java, нејзината инсталација е прилично нестандардна. Прво треба да ја добиете самата датотека jar:

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

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

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

Ако работите на Windows, тогаш за него постои одлична алатка наречена Virtuous Ten Studio, која исто така ги акумулира сите овие алатки (вклучувајќи го и самиот apktool), но наместо CLI интерфејс му обезбедува на корисникот интуитивен графички интерфејс со кој можете да изведувајте операции за распакување, расклопување и декомпајлирање со неколку кликања. Оваа алатка е Donation-ware, односно понекогаш се појавуваат прозорци со барање да добиете лиценца, но на крајот тоа може да се толерира. Нема смисла да се опишува, бидејќи интерфејсот можете да го разберете за неколку минути. Но, apktool, поради неговата конзолна природа, треба да се дискутира подетално.


Ајде да ги погледнеме опциите на apktool. Накратко, постојат три основни команди: d (декодира), b (изградба) и if (инсталирај рамка). Ако сè е јасно со првите две наредби, тогаш што прави третата, условна изјава? Ја отпакува наведената рамка за интерфејс, која е неопходна во случаите кога сецирате кој било системски пакет.

Ајде да ги погледнеме најинтересните опции на првата команда:

  • - не расклопувајте декс-датотеки;
  • - не распакувајте ресурси;
  • - не вметнувајте информации за дебагирањедо резултатите од расклопување на датотеката dex;
  • -- рамка-пат- користете ја наведената рамка за интерфејс наместо вградената во apktool. Сега да погледнеме неколку опции за командата b:
  • - принудно склопување без проверка на промените;
  • - наведете ја патеката до aapt (алатка за градење архива на APK), ако поради некоја причина сакате да ја користите од друг извор.

Користењето на apktool е многу едноставно; за да го направите ова, само наведете една од командите и патеката до АПК, на пример:

$ apktool d mail.apk

После ова, сите извлечени и расклопени датотеки од пакетот ќе се појават во директориумот за пошта.

Подготовка. Оневозможување на рекламирање

Теоријата е, се разбира, добра, но зошто е потребна ако не знаеме што да правиме со неотпакуваниот пакет? Да се ​​обидеме да ја примениме теоријата во наша корист, имено, да измениме некој софтвер за да не ни прикажува рекламирање. На пример, нека биде Virtual Torch - виртуелен факел. Овој софтвер е идеален за нас, бидејќи е исполнет до крај со досадни реклами и, згора на тоа, е доволно едноставен за да не се изгуби во џунглата на кодот.


Значи, користејќи еден од горенаведените методи, преземете ја апликацијата од пазарот. Ако одлучите да користите Virtuous Ten Studio, едноставно отворете ја APK-датотеката во апликацијата и отпакувајте ја, креирајте проект (Датотека -> Нов проект), а потоа изберете Import File во контекстното мени на проектот. Ако вашиот избор падна на apktool, тогаш само извршете една команда:

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

После ова, стебло на датотеки слично на она опишано во претходниот дел ќе се појави во директориумот com.kauf.particle.virtualtorch, но со дополнителен именик smali наместо датотеки со dex и датотека apktool.yml. Првата содржи расклопен код на извршната датотека dex на апликацијата, втората содржи информации за услугата неопходни за apktool да го состави пакетот назад.

Првото место што треба да го погледнеме е, се разбира, AndroidManifest.xml. И тука веднаш се среќаваме со следнава линија:

Не е тешко да се погоди дека таа е одговорна за доделување дозволи на апликацијата за користење на интернет конекцијата. Всушност, ако сакаме само да се ослободиме од рекламирањето, најверојатно ќе треба само да ја блокираме апликацијата од Интернет. Ајде да се обидеме да го направиме ова. Ја бришеме наведената линија и се обидуваме да го изградиме софтверот користејќи apktool:

$ apktool b com.kauf.particle.virtualtorch

Добиената APK-датотека ќе се појави во директориумот com.kauf.particle.virtualtorch/build/. Сепак, нема да може да се инсталира, бидејќи не е дигитално потпишан и контролни сумидатотеки (едноставно нема META-INF/ директориум во него). Мора да го потпишеме пакетот користејќи ја алатката apk-signer. Лансиран. Интерфејсот се состои од две јазичиња - на првата (Key Generator) создаваме клучеви, на втората (APK Signer) потпишуваме. За да го креирате нашиот приватен клуч, пополнете ги следните полиња:

  • Целна датотека- излезна датотека во продавницата за клучеви; обично складира еден пар клучеви;
  • ЛозинкаИ Потврди- лозинка за складирање;
  • Алијас- име на клучот во складиштето;
  • Лозинка за алијасИ Потврди- лозинка за таен клуч;
  • Валидност- рок на важност (во години). Стандардната вредност е оптимална.

Останатите полиња се генерално опционални - но мора да се пополни барем едно.


ПРЕДУПРЕДУВАЊЕ

За да потпишете апликација користејќи apk-signer, мора да ја инсталирате Android SDK и да наведете целосна патекапред него во поставките на апликацијата.

Сите информации се дадени само за информативни цели. Ниту уредниците ниту авторот не се одговорни за каква било можна штета предизвикана од материјалите на овој напис.

Сега можете да ја потпишете АПК со овој клуч. На картичката APK Signer, изберете ја новогенерираната датотека, внесете ја лозинката, клучниот псевдоним и лозинката, потоа пронајдете ја датотеката APK и смело кликнете на копчето „Потпиши“. Ако се оди добро, пакетот ќе биде потпишан.

ИНФОРМАЦИИ

Бидејќи пакетот го потпишавме со сопствен клуч, тој ќе биде во конфликт со оригиналната апликација, што значи дека кога ќе се обидеме да го ажурираме софтверот преку маркетот, ќе добиеме грешка.

Дигитален потпис е потребен само за софтвер од трета страна, па ако менувате системски апликации, кои се инсталирани со копирање во директориумот /system/app/, не треба да ги потпишувате.

После тоа, преземете го пакетот на вашиот паметен телефон, инсталирајте го и стартувајте го. Voila, огласот го нема! Наместо тоа, сепак, се појави порака дека немаме Интернет или немаме соодветни дозволи. Теоретски, ова може да биде доволно, но пораката изгледа досадно и, да бидеме искрени, ние само имавме среќа со глупава апликација. Нормално напишаниот софтвер најверојатно ќе ги разјасни неговите ингеренции или ќе провери дали има интернет врска, а во спротивно едноставно ќе одбие да се стартува. Како да се биде во овој случај? Се разбира, уредете го кодот.

Вообичаено, авторите на апликациите создаваат специјални класи за прикажување реклами и методи за повикување на овие класи кога ќе се стартува апликацијата или една од нејзините „активности“ (на едноставни термини, екраните на апликациите). Ајде да се обидеме да ги најдеме овие класи. Одиме во директориумот smali, потоа com (org ја содржи само отворената графичка библиотека cocos2d), потоа kauf (ова е местото каде што е, бидејќи ова е името на развивачот и целиот негов код е таму) - и еве го, директориумот за маркетинг. Внатре наоѓаме куп датотеки со наставката smali. Тоа се класи, а најзабележителна од нив е класата Ad.smali, од чие име може лесно да се погоди дека е таа што прикажува реклами.

Можеме да ја промениме логиката на неговото функционирање, но би било многу полесно едноставно да ги отстраниме повиците кон кој било од неговите методи од самата апликација. Затоа, го напуштаме директориумот за маркетинг и одиме во соседниот директориум со честички, а потоа до виртуелен торч. Датотеката MainActivity.smali овде заслужува посебно внимание. Ова е стандардна класа на Android што е креирана од Android SDK и инсталирана како влезна точка во апликацијата (аналогно на главната функција во C). Отворете ја датотеката за уредување.

Внатре има smali код (локален асемблер). Прилично е збунувачки и тежок за читање поради неговата природа на ниско ниво, затоа нема да го проучуваме, туку едноставно ќе ги најдеме сите референци за класата Ad во кодот и ќе ги коментираме. Ја внесуваме линијата „Реклама“ во пребарувањето и стигнуваме до линијата 25:

Теренска приватна реклама:Lcom/kauf/маркетинг/Оглас;

Овде се креира рекламно поле за складирање на објект од класата на реклами. Коментираме со ставање знак ### пред линијата. Ја продолжуваме потрагата. Линија 423:

Нов пример v3, Lcom/kauf/маркетинг/Реклама;

Тука се случува создавањето на објектот. Да коментираме. Го продолжуваме пребарувањето и наоѓаме во линиите 433, 435, 466, 468, 738, 740, 800 и 802 повици до методите од класата Ad. Да коментираме. Изгледа дека тоа е тоа. Зачувај. Сега пакетот треба повторно да се состави и да се провери за функционалност и присуство на рекламирање. За чистота на експериментот, ја враќаме линијата отстранета од AndroidManifest.xml, го составуваме пакетот, потпишуваме и инсталираме.

Нашето заморче. Реклама видливи

Упс! Рекламирањето исчезна само додека апликацијата работеше, но остана во главното мени, што го гледаме кога ќе го стартуваме софтверот. Значи, почекајте, но влезната точка е класата MainActivity, а рекламата исчезна додека апликацијата работеше, но остана во главното мени, па влезната точка е различна? За да ја идентификувате вистинската влезна точка, повторно отворете ја датотеката AndroidManifest.xml. И да, ги содржи следните редови:

Ни кажуваат (и, уште поважно, на андроидот) дека активноста со име Start треба да се активира како одговор на генерирањето на намера (настан) android.intent.action.MAIN од категоријата android.intent.category.LAUNCHER. Овој настан се генерира кога ќе допрете на иконата на апликацијата во стартерот, така што ја одредува влезната точка, имено класата Start. Најверојатно, програмерот прво напишал апликација без главно мени, влезната точка на која била стандардната класа MainActivity, а потоа додал нов прозорец (активност) што го содржи менито и опишан во класата Start и рачно го направил запис. точка.

Отворете ја датотеката Start.smali и повторно побарајте ја линијата „Ad“, во редовите 153 и 155 наоѓаме спомнување на класата FirstAd. Тоа е исто така во изворниот код и, судејќи според името, тој е одговорен за прикажување реклами на главниот екран. Ајде да погледнеме понатаму, постои создавање инстанца од класата FirstAd и намера која, според контекстот, е поврзана со овој пример, а потоа ознаката cond_10, условната транзиција кон која се врши точно пред да се создаде инстанца. од класата:

Ако-не p1, v0, :cond_10 .линија 74 нов пример v0, Landroid/содржина/Интент; ... :cond_10

Најверојатно, програмата некако случајно пресметува дали рекламирањето треба да се прикажува на главниот екран и, ако не, скока директно на cond_10. Добро, да ја поедноставиме нејзината задача и да ја замениме условната транзиција со безусловна:

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

Нема повеќе спомнувања на FirstAd во кодот, затоа ја затвораме датотеката и повторно го составуваме нашиот виртуелен факел користејќи apktool. Копирајте го на вашиот паметен телефон, инсталирајте го, стартувајте го. Воила, исчезна целата реклама, за што на сите ни честитаме.

Резултати

Оваа статија е само краток вовед во методите на хакирање и менување на апликациите на Android. Многу проблеми останаа зад сцената, како што се отстранување на заштитата, парсирање на замаглениот код, преведување и замена на ресурсите на апликацијата, како и менување апликации напишани со користејќи AndroidНДК. Сепак, имајќи основно знаење, само прашање на време е да се разбере сето тоа.




Врв