Ang mga gumagamit ay nahaharap sa katotohanan na hindi isang solong programa sa kanilang computer ang nagbubukas ng mga naturang file. At ito ay ganap na normal, dahil ang isang file na may extension ng APK ay isang file ng pag-install para sa operating system ng Android at hindi posible na magpatakbo ng ganoong file sa Windows.
Kung nakita mo ang iyong sarili sa isang katulad na sitwasyon at hindi alam kung paano magbukas ng APK file, mayroon kang dalawang opsyon:
- Ilipat ang APK file sa iyong Android device at patakbuhin ang file doon. Sa kasong ito, magagawa mong maging pamilyar sa application na nakapaloob sa file na ito.
- Maaari mo ring i-extract ang APK file sa iyong Windows computer. Sa kasong ito, maaari mong gawing pamilyar ang iyong sarili sa istraktura ng file na ito, pati na rin ang mga nilalaman nito.,
Kung gusto mong patakbuhin ang APK file at makilala ang application na nasa loob nito, ang unang bagay na kailangan mong gawin ay ilipat ang file na ito sa iyong Android device. Magagawa ito sa anumang paraan na maginhawa para sa iyo. Halimbawa, maaari mong ikonekta ang iyong Android device sa iyong computer gamit ang isang USB cable o Bluetooth wireless interface.
Pagkatapos, sa isang mobile device na may Android operating system, kailangan mong ilunsad ito. Upang gawin ito, buksan ang anumang file manager, hanapin ang APK file sa memorya ng device at buksan ito. Pagkatapos nito, lalabas ang pangungusap na nakapaloob sa file na ito. Pagkatapos ng pag-install, lilitaw ang isang shortcut sa naka-install na program sa desktop ng Android. Gamit ito, maaari mong buksan ang programa mula sa iyong APK file.
Ang pangalawang paraan ay upang buksan ang APK file sa isang Windows computer gamit ang isang archiver. Ang katotohanan ay ang APK file sa katunayan ay isang simpleng . Samakatuwid, maaari mo itong buksan gamit ang anumang archiver. Halimbawa, maaari mong gamitin ang sikat na WinRAR archiver para sa mga layuning ito.
Sa pamamagitan ng pagbubukas ng APK file bilang isang archive, makikita mo kung ano ang binubuo nito. Sa karamihan ng mga kaso, kasama sa file na ito ang mga sumusunod na folder at file:
- MANIFEST.MF – isang file na may impormasyon tungkol sa iba pang mga file na nasa APK file na ito (mga file checksum);
- CERT.RSA – ang sertipiko kung saan nilagdaan ang aplikasyong ito;
- CERT.SF – file na may impormasyon tungkol sa sertipiko at mga mapagkukunan;
lib - Ang mga aklatan ng Linux para sa bawat suportadong uri ng processor ay naka-imbak dito:
- armeabi – para sa ARMv6 at mas lumang mga processor;
- armeabi-v7a – para sa ARMv7 at mas bagong mga processor;
- x86 – para sa mga processor na may x86 architecture;
- mips - para sa mga processor ng MIPS;
- res – resources na wala sa file sa resources.arsc (tingnan sa ibaba).
- Mga Asset – mga mapagkukunan para sa AssetManager.
- AndroidManifest.xml – isang file na naglalarawan sa application na ito. Iniimbak nito ang pangalan ng application, pangalan ng package, bersyon ng application, at iba pang impormasyon na nauugnay sa application na iyon.
- classes.dex – executable application code sa DEX format;
- resources.arsc – pinagsama-samang mga mapagkukunang kailangan para gumana ang application;
Ang pagbubukas ng mga file ng ARK ay isang medyo sikat na tanong. Ang ganitong uri ng dokumento ay ginagamit sa mga smartphone at tablet. Pinapayagan ka nilang mag-install ng mga program sa mga device. Kasama sa package ng pag-install ang mga file at ang application mismo.
Kung ang tanong ay lumitaw tungkol sa kung paano buksan ang mga APK file sa isang computer at kung paano ilunsad ang mga ito, kakailanganin mong malaman na mayroong mga espesyal na Android simulator para dito. Kabilang dito ang YouWave at BlueStacks. Ginagawa nilang posible na maisagawa ang mga naturang aksyon. Sa kasong ito, ito ay nagkakahalaga ng pagbibigay pansin sa isang tool na tinatawag na 7-Zip. Ito ay isang libreng archiver. Interface Ang programa ay may isang simpleng interface. Ang bintana ay binubuo ng:
Pangunahing menu;
tagapamahala ng file;
mga toolbar.
Ang mga functional na button na may mga pahiwatig sa Russian ay nagdaragdag ng kaginhawaan sa paggamit. Ang tool ay maaaring awtomatikong isama sa menu ng OS pagkatapos ng pag-install. Posibleng gamitin ang command line.
Platform ng Developer
Kung kailangan mong buksan ang mga APK file sa iyong computer at gumawa ng mga pag-edit sa mga ito, dapat mong bigyang pansin ang Eclipse application. Ito ay batay sa open source code. Ang pangunahing layunin ng application ay upang madagdagan ang pagiging produktibo sa proseso ng pagbuo ng software. Ang platform ay matatag sa pagpapatakbo sa iba't ibang mga operating system.
WinRAR
Ito ay isang archiver na maaaring magbukas ng mga APK file sa isang computer para sa layunin ng pagsusuri nito. Ang utility ay may mataas na bilis ng pagproseso ng impormasyon. Binibigyang-daan ka ng WinRAR na hatiin ang isang array ng data sa isang tiyak na bilang ng mga volume ng ilang partikular na laki. Ginagawa rin ng application na posible upang matiyak ang seguridad ng impormasyon. Isang password ang ginagamit para dito.
Kung mayroon kang tanong tungkol sa kung paano magbukas ng isang dokumento ng APK sa isang computer, dapat mong bigyang pansin ang programang WinZip. Ito ay isang application na idinisenyo upang i-compress ang mga file. Ito rin ay may kakayahang magbukas ng mga kinakailangang data packet. Ang programa ay may maraming iba't ibang mga tool na binuo sa isang intuitive na interface. Ang isang hindi maikakaila na bentahe ng utility ay isang espesyal na wizard na ginagawang simple ang pagkuha ng materyal hangga't maaari. Ito ay sapat na upang sundin ang pagkakasunud-sunod ng mga aksyon, kabilang ang pangangailangan na bigyang-pansin ang ilang mga nangungunang tanong.
Pinapayagan ka ng programa na mabawi ang nasira na data. Bukod dito, ang pagsuri para sa mga error sa mga file at pagwawasto sa mga ito ay awtomatikong isinasagawa. Posibleng ipasa ang isang pakete sa isang kaibigan nang direkta mula sa application kapag gumagamit ng email. Ang gawaing ito ay itinalaga sa mga built-in na tool.
Binibigyang-daan ka ng mga hot key na magproseso ng maraming file nang sabay-sabay. Ang programa ay maaaring isama sa menu ng system, kaya ang paggamit ng tool ay napaka-simple. Mayroong isang sentro ng suporta kung saan sila ay laging handang magbigay ng tulong kung kinakailangan. Madaling kontakin ang development team sa pamamagitan ng email.
Iba pang mga utility
Ito ay nagkakahalaga din na isaalang-alang ang iba pang mga application para sa pagbubukas ng APK file sa iyong computer. Ang isa sa kanila ay ang Hamster Free. Ang archiver na ito ay madaling gamitin at ganap na sumusuporta sa mga multi-core na processor. Ang programa ay malayang gamitin, may magandang interface, at sumusuporta sa wikang Ruso. Salamat sa pagsasama sa menu, maaari mong agad na ma-access ang mga pangunahing pag-andar, kabilang ang opsyon na i-unpack ang mga pakete ng data.
May isa pang programa na tinatawag na Universal Extractor. Sinusuportahan din nito ang pagtatrabaho sa ipinakita na uri ng data. Pinapayagan ka ng application na kunin ang data mula sa isang pakete. Nararapat ding banggitin ang ExtractNow, isang utility na gagawa ng trabaho nang perpekto. Ang programa ay matatas sa pagbubukas ng mga file at pag-unpack ng mga ito.
Posibleng kunin ang data mula sa maraming mga pakete nang sabay-sabay. Ang software ay may isang simpleng interface. Upang iproseso ang data, ilipat lamang ito gamit ang mouse sa pangunahing window. Bilang karagdagan, ang application ay gumagamit ng isang sistema ng paghahanap ng data. Ang mga tool sa tulong ay ibinibigay kung kinakailangan. Kung ang programa ay pinaliit, ang isang espesyal na icon ay lilitaw sa lugar ng notification ng system. Mayroon ding function na tinatawag na "Sa tuktok ng lahat ng mga bintana". Ang lahat ng mga operasyong isinagawa ay ipinapakita sa mga ulat.
Sa wakas, gusto kong magsabi ng ilang salita tungkol sa programang YouWave. Pinapayagan ka nitong magpatakbo ng isang virtual machine sa iyong computer, kung saan maaari kang maglaro ng mga application at laro para sa Android.
Mula sa ipinakita na mga pamamaraan para sa pagbubukas ng mga file ng ARK, maaari mong piliin ang isa na lilikha ng maximum na kaginhawahan.
Sa artikulong ito, pag-uusapan natin kung paano mag-install ng mga application o laro mula sa *.apk file sa Android. Maaga o huli, ang mga may-ari ng mga device na nagpapatakbo ng Android ay nahaharap sa isang sitwasyon kung saan ang karaniwang pag-andar ng system ay nagiging boring, at isang hindi mapaglabanan na pagnanais na palawakin ito ay lilitaw.
Hindi tulad ng iOS, kung saan ang pag-install ng mga application ay batay sa pagtatrabaho sa iTunes Store, ang mga developer ng Google ay nagbigay ng kakayahang mag-install ng mga program gamit ang mga karaniwang tool. Ngunit upang gawin ito, kailangan mong payagan ang pag-install ng mga application mula sa hindi kilalang mga mapagkukunan, pumunta sa Mga Setting -> Mga Application at lagyan ng tsek ang kahon sa tabi ng Mga Hindi Kilalang Pinagmulan.
Lahat ng application para sa Android operating system ay may kasamang *.apk file extension. Tulad ng para sa istraktura ng naturang mga file, mahalagang isang apk file ay isang ordinaryong archive, ang mga nilalaman kung saan maaari mong tingnan sa anumang archiver. Independiyenteng kinikilala ng operating system ng Android ang mga naturang file at nauunawaan kung ano ang gagawin sa mga ito. Kaya, maaari kang mag-install ng mga application sa Android sa maraming paraan.
1. I-install ang *.apk file sa Android
Ang una, at sa aming opinyon, ang pinakakaraniwang paraan ay ang pag-install ng *.apk file sa Android gamit ang file manager. Ang kailangan mo lang gawin para gawin ito ay ilipat ang *.apk file sa SD card ng iyong device. Pagkatapos ay gumamit ng anumang available na file manager na may kakayahang mag-install ng mga application. Inirerekomenda namin ang paggamit ng ASTRO File Manager o ES File Explorer.
Pagkatapos ay ilunsad ang file manager, hanapin ang *.apk file at i-install ang application gamit ang karaniwang Android installer.
Bilang karagdagan, maaari mong i-install ang application nang hindi gumagamit ng mga file manager, gamit ang isang karaniwang browser. Ipasok lamang ang content://com.android.htmlfileprovider/sdcard/FileName.apk sa address bar at awtomatikong magsisimula ang pag-install. Sa halimbawang ito, ang *.apk file ay matatagpuan sa root folder ng SD card.
2. Pag-install gamit ang application manager
Ang pangalawa, pinakamadaling paraan upang mag-install ng *.apk file sa Android ay ang paggamit ng mga application manager. Ang mga program na ito ay nilikha upang gawing simple ang pamamaraan para sa pag-install ng mga application sa pamamagitan ng *.apk file hangga't maaari. At ito ay totoo! Sinubukan namin ang isang program na tinatawag na SlideME Mobentoo App Installer, na inirerekomenda namin sa iyo.
I-scan ng SlideME Mobentoo App Installer ang SD card ng iyong device sa lalong madaling panahon at magpapakita ng listahan ng lahat ng *.apk file na natagpuan. Pagkatapos nito, madali mong mai-install ang mga kinakailangang application sa halos isang pag-click.
3. Pag-install sa pamamagitan ng computer at USB
Bilang karagdagan sa itaas, alam namin ang isa pa, at marahil ang pinaka-maginhawang paraan - pag-install ng *.apk application sa pamamagitan ng pagkonekta sa Android device sa computer sa pamamagitan ng USB cable. Inirerekomenda namin na gamitin mo ang InstallAPK program at mga USB driver.
I-install lang ang InstallAPK sa iyong computer, pagkatapos ay ikonekta ang iyong smartphone sa pamamagitan ng USB cable at i-double click ang *.apk file. Independiyenteng tutukuyin ng program ang *.apk file at simulan ang pag-install ng application sa iyong Android device.
Hindi lamang mga propesyonal na developer ng mobile application, ngunit kung minsan kahit na ang pinakakaraniwang mga gumagamit ay interesado sa kung anong programa ang mayroon sila para sa pagbubukas ng mga APK file sa kanilang computer. At din - kung alin ang pinakamahusay. Sa katunayan, imposibleng sagutin ang tanong na ito nang hindi malabo. Ang lahat ay nakasalalay sa eksaktong mga layunin kung saan plano mong buksan ang ARC file.
Ano ang isang ARK file?
Sa katunayan, ang format ng file na ito ay hindi hihigit sa isang regular na archive ng ZIP. Sa loob nito mayroong lahat ng uri ng mga bahagi ng software na kinakailangan para sa matagumpay na operasyon ng application sa Android mobile operating system. At sa pangkalahatan, ang format ng ARK ay ang "katutubong" na format para sa operating system na ito. Alinsunod dito, kapag pinag-uusapan nila ang tungkol sa pag-download ng APK file ng isang partikular na program, ang ibig nilang sabihin ay pag-download lang ng program para sa Android.
Paano at bakit binubuksan ang mga file ng ARK
Pagbabalik sa tanong, ano ang pinakamahusay na programa para sa mga file ng APK sa isang computer, magandang ideya na magpasya muna para sa kung anong layunin ito dapat gawin:
- Upang simpleng ilunsad ang mobile application sa iyong computer;
- Upang i-unpack ang archive ng ARK sa iyong computer;
- O upang hindi lamang i-print ang archive na ito, ngunit upang makagawa din ng mga pagbabago dito.
Sa unang kaso, maaari naming payuhan kang bigyang pansin ang tinatawag na mga emulator. Ito ay mga espesyal na programa na nagbibigay-daan sa iyong magpatakbo ng mga mobile application nang direkta sa iyong personal na computer. Sa kasalukuyan, mayroong maraming katulad na mga application, at napakahirap magrekomenda ng anumang partikular. Mas gusto ng maraming mga gumagamit ang sikat .. Gayunpaman, mayroong iba pang mga emulator.
Kung kailangan mo lamang buksan ang archive, kung gayon dahil ang ARK file, tulad ng nabanggit na, ay ang pinaka-ordinaryong archive ng computer, maaari itong i-print gamit ang halos anumang archiver ng Windows. Halimbawa, ang sikat na Win RAR ay ganap na makayanan ang gawaing ito.
Para sa mga may Apple operating system sa kanilang computer, maaari kaming magrekomenda ng application tulad ng Utility ng Archive. Papayagan din nito ang mga usisero na malaman kung ano, sa katunayan, ang nasa loob ng misteryosong archive ng ARK.
Buweno, upang hindi lamang buksan ang archive, ngunit pag-aralan din ito, at magawa din itong gumawa ng mga pagbabago at muling buuin ito, may mga hiwalay na programa para sa mga developer. Halimbawa, ang isang programa ay inaalok para sa pagbabasa ng mga APK file sa isang computer at pagtatrabaho sa mga format ng APK - . Ito ay isang tunay na propesyonal na toolkit na may sarili nitong emulator atbp.
![](https://i1.wp.com/bluestacks-free.ru/wp-content/uploads/2017/07/otkryt-apk-3-1.jpg)
Minsan ang ilang mga application sa Android ay hindi angkop sa user sa ilang paraan. Ang isang halimbawa ay mapanghimasok na advertising. At nangyayari rin na ang programa ay mabuti para sa lahat, ngunit ang pagsasalin sa loob nito ay baluktot o ganap na wala. O, halimbawa, ang programa ay isang pagsubok, ngunit walang paraan upang makuha ang buong bersyon. Paano baguhin ang sitwasyon?
Panimula
Sa artikulong ito ay pag-uusapan natin kung paano i-disassemble ang isang APK package na may isang application, tingnan ang panloob na istraktura nito, i-disassemble at i-decompile ang bytecode, at subukan din na gumawa ng ilang mga pagbabago sa mga application na maaaring magdala sa amin ng isang benepisyo o iba pa.
Upang gawin ang lahat ng ito sa iyong sarili, kakailanganin mo ng hindi bababa sa pangunahing kaalaman sa wikang Java, kung saan nakasulat ang mga application ng Android, at ang wikang XML, na ginagamit saanman sa Android - mula sa paglalarawan ng application mismo at mga karapatan sa pag-access nito hanggang sa pag-iimbak ng mga string na ay ipapakita sa screen. Kakailanganin mo rin ang kakayahang gumamit ng espesyal na console software.
Kaya, ano ang isang APK package kung saan ganap na lahat ng Android software ay ipinamamahagi?
Decompilation ng application
Sa artikulong ito, nagtrabaho lamang kami gamit ang disassembled na code ng application, ngunit kung mas seryosong pagbabago ang gagawin sa malalaking application, ang pag-unawa sa smali code ay magiging mas mahirap. Sa kabutihang palad, maaari naming i-decompile ang dex code sa Java code, na, kahit na hindi orihinal at hindi pinagsama-sama, ay mas madaling basahin at maunawaan ang lohika ng application. Upang gawin ito, kakailanganin namin ng dalawang tool:
- Ang dex2jar ay isang tagasalin ng Dalvik bytecode sa JVM bytecode, sa batayan nito ay makakakuha tayo ng code sa wikang Java;
- Ang jd-gui ay isang decompiler mismo na nagbibigay-daan sa iyong makakuha ng nababasang Java code mula sa JVM bytecode. Bilang kahalili, maaari mong gamitin ang Jad (www.varaneckas.com/jad); Bagama't medyo luma na ito, sa ilang pagkakataon ay bumubuo ito ng mas nababasang code kaysa sa Jd-gui.
Ito ay kung paano sila dapat gamitin. Una, inilunsad namin ang dex2jar, na tumutukoy sa landas sa apk package bilang isang argumento:
% dex2jar.sh mail.apk
Bilang resulta, lalabas ang Java package mail.jar sa kasalukuyang direktoryo, na maaari nang mabuksan sa jd-gui upang tingnan ang Java code.
Pag-aayos ng mga APK package at pagtanggap ng mga ito
Ang Android app package ay karaniwang isang regular na ZIP file na hindi nangangailangan ng anumang mga espesyal na tool upang tingnan ang mga nilalaman nito o i-extract ito. Sapat na magkaroon ng archiver - 7zip para sa Windows o console unzip sa Linux. Ngunit iyon ay tungkol sa balot. Ano ang nasa loob? Sa pangkalahatan, mayroon kaming sumusunod na istraktura sa loob:
- META-INF/- naglalaman ng isang digital na sertipiko ng application, pagkilala sa lumikha nito, at mga checksum ng mga file ng package;
- res/ - iba't ibang mga mapagkukunan na ginagamit ng application sa trabaho nito, tulad ng mga imahe, deklaratibong paglalarawan ng interface, pati na rin ang iba pang data;
- AndroidManifest.xml- paglalarawan ng application. Kabilang dito, halimbawa, ang isang listahan ng mga kinakailangang pahintulot, ang kinakailangang bersyon ng Android at ang kinakailangang resolution ng screen;
- classes.dex- pinagsama-samang application bytecode para sa Dalvik virtual machine;
- mapagkukunan.arsc- mga mapagkukunan din, ngunit sa ibang uri - sa partikular, mga string (oo, ang file na ito ay maaaring gamitin para sa Russification!).
Ang mga nakalistang file at direktoryo ay, kung hindi sa lahat, kung gayon, marahil, sa karamihan ng mga APK. Gayunpaman, may ilan pang hindi pangkaraniwang mga file/direktoryo na dapat banggitin:
- mga ari-arian- analogue ng mga mapagkukunan. Ang pangunahing pagkakaiba ay upang ma-access ang isang mapagkukunan kailangan mong malaman ang identifier nito, ngunit ang listahan ng mga asset ay maaaring makuha nang pabago-bago gamit ang AssetManager.list() na paraan sa application code;
- lib- mga katutubong aklatan ng Linux na isinulat gamit ang NDK (Native Development Kit).
Ang direktoryo na ito ay ginagamit ng mga producer ng laro na naglalagay ng game engine na nakasulat sa C/C++ doon, gayundin ng mga tagalikha ng mga application na may mataas na pagganap (halimbawa, Google Chrome). Nalaman namin ang device. Ngunit paano mo makukuha ang package file ng application na interesado ka? Dahil hindi posibleng kunin ang mga APK file mula sa device nang walang root (matatagpuan ang mga ito sa direktoryo ng /data/app), at hindi palaging maipapayo ang pag-rooting, mayroong hindi bababa sa tatlong paraan upang makuha ang application file sa iyong computer:
- APK Downloader extension para sa Chrome;
- Real APK Leecher app;
- iba't ibang file hosting at Varezniks.
Alin ang gagamitin ay isang bagay ng panlasa; mas gusto naming gumamit ng hiwalay na mga application, kaya ilalarawan namin ang paggamit ng Real APK Leecher, lalo na dahil nakasulat ito sa Java at, nang naaayon, gagana sa Windows o Nix.
Pagkatapos simulan ang programa, kailangan mong punan ang tatlong field: Email, Password at Device ID - at pumili ng wika. Ang unang dalawa ay ang e-mail at password ng iyong Google account na ginagamit mo sa device. Ang pangatlo ay ang identifier ng device, at maaaring makuha sa pamamagitan ng pag-type ng code sa dialer # #8255## at pagkatapos ay hanapin ang linya ng Device ID. Kapag nag-fill out, kailangan mo lang ipasok ang ID nang walang android- prefix.
Pagkatapos punan at i-save, madalas na lumalabas ang mensaheng "Error habang kumokonekta sa server." Wala itong kinalaman sa Google Play, kaya huwag mag-atubiling huwag pansinin ito at maghanap ng mga pakete na interesado ka.
Tingnan at Baguhin
Sabihin nating nakakita ka ng package na interesado ka, na-download ito, na-unpack ito... at nang sinubukan mong tingnan ang ilang XML file, nagulat ka nang matuklasan mong hindi text ang file. Paano ito i-decompile at kung paano gumana sa mga pakete sa pangkalahatan? Kailangan ba talagang i-install ang SDK? Hindi, hindi kailangang i-install ang SDK. Sa katunayan, ang lahat ng mga hakbang upang i-extract, baguhin at i-package ang mga APK package ay nangangailangan ng mga sumusunod na tool:
- ZIP archiver para sa pag-unpack at pag-iimpake;
- smali- Dalvik virtual machine bytecode assembler/disassembler (code.google.com/p/smali);
- aapt- isang tool para sa mga mapagkukunan ng packaging (bilang default, ang mga mapagkukunan ay naka-imbak sa binary form upang i-optimize ang pagganap ng application). Kasama sa Android SDK, ngunit maaaring makuha nang hiwalay;
- pumirma- isang tool para sa digital na pagpirma ng isang binagong package (bit.ly/Rmrv4M).
Maaari mong gamitin ang lahat ng mga tool na ito nang hiwalay, ngunit ito ay hindi maginhawa, kaya mas mahusay na gumamit ng mas mataas na antas ng software na binuo sa kanilang batayan. Kung nagtatrabaho ka sa Linux o Mac OS X, mayroong isang tool na tinatawag na apktool. Binibigyang-daan ka nitong i-unpack ang mga mapagkukunan sa orihinal na anyo nito (kabilang ang mga binary XML at arsc file), muling buuin ang isang pakete na may mga binagong mapagkukunan, ngunit hindi nito alam kung paano mag-sign ng mga pakete, kaya kailangan mong patakbuhin nang manu-mano ang signer utility. Sa kabila ng katotohanan na ang utility ay nakasulat sa Java, ang pag-install nito ay medyo hindi pamantayan. Una kailangan mong makuha ang jar file mismo:
$ 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
Kung nagtatrabaho ka sa Windows, mayroong isang mahusay na tool para dito na tinatawag na Virtuous Ten Studio, na nag-iipon din ng lahat ng mga tool na ito (kabilang ang apktool mismo), ngunit sa halip na isang CLI interface ay nagbibigay ito sa user ng isang intuitive na graphical na interface kung saan maaari mong magsagawa ng mga operasyon para sa pag-unpack, pag-disassemble at pag-decompile sa ilang mga pag-click. Ang tool na ito ay Donation-ware, ibig sabihin, kung minsan ay lumalabas ang mga bintana na humihiling sa iyo na kumuha ng lisensya, ngunit sa huli ito ay matitiis. Walang saysay na ilarawan ito, dahil mauunawaan mo ang interface sa loob ng ilang minuto. Ngunit ang apktool, dahil sa likas na katangian ng console nito, ay dapat na talakayin nang mas detalyado.
![](https://i2.wp.com/xakep.ru/wp-content/uploads/2014/10/vts_import_file.jpg)
Tingnan natin ang mga opsyon sa apktool. Sa madaling salita, mayroong tatlong pangunahing utos: d (decode), b (build) at kung (i-install ang framework). Kung malinaw ang lahat sa unang dalawang utos, ano ang ginagawa ng pangatlo, kondisyonal na pahayag? Ina-unpack nito ang tinukoy na balangkas ng UI, na kinakailangan sa mga kaso kung saan na-dissect mo ang anumang package ng system.
Tingnan natin ang pinaka-kagiliw-giliw na mga opsyon ng unang command:
- -s- huwag i-disassemble ang mga dex file;
- -r- huwag i-unpack ang mga mapagkukunan;
- -b- huwag magpasok ng impormasyon sa pag-debug sa mga resulta ng pag-disassembling ng dex file;
- --frame-path- gamitin ang tinukoy na balangkas ng UI sa halip na ang isa na binuo sa apktool. Ngayon tingnan natin ang ilang mga opsyon para sa b command:
- -f- sapilitang pagpupulong nang hindi sinusuri ang mga pagbabago;
- -a- ipahiwatig ang landas sa aapt (isang tool para sa pagbuo ng isang archive ng APK), kung sa ilang kadahilanan ay gusto mong gamitin ito mula sa ibang pinagmulan.
Ang paggamit ng apktool ay napaka-simple; upang gawin ito, tukuyin lamang ang isa sa mga utos at ang landas patungo sa APK, halimbawa:
$ apktool d mail.apk
Pagkatapos nito, lalabas sa direktoryo ng mail ang lahat ng na-extract at na-disassemble na mga file ng package.
Paghahanda. Hindi pagpapagana ng advertising
Ang teorya ay, siyempre, mabuti, ngunit bakit ito kailangan kung hindi natin alam kung ano ang gagawin sa hindi naka-pack na pakete? Subukan nating ilapat ang teorya sa ating kapakinabangan, ibig sabihin, baguhin ang ilang software upang hindi ito magpakita sa atin ng advertising. Halimbawa, hayaan itong maging Virtual Torch - isang virtual na tanglaw. Ang software na ito ay perpekto para sa amin, dahil ito ay puno ng nakakainis na advertising at, higit pa rito, ay sapat na simple upang hindi mawala sa gubat ng code.
![](https://i0.wp.com/xakep.ru/wp-content/uploads/2014/10/jd-gui_ad_search.jpg)
Kaya, gamit ang isa sa mga pamamaraan sa itaas, i-download ang application mula sa merkado. Kung magpasya kang gumamit ng Virtuous Ten Studio, buksan lang ang APK file sa application at i-unpack ito, lumikha ng proyekto (File -> Bagong proyekto), pagkatapos ay piliin ang Import File sa menu ng konteksto ng proyekto. Kung ang iyong pinili ay nahulog sa apktool, pagkatapos ay magpatakbo lamang ng isang utos:
$ apktool d com.kauf.particle.virtualtorch.apk
Pagkatapos nito, lalabas ang isang file tree na katulad ng inilarawan sa nakaraang seksyon sa com.kauf.particle.virtualtorch directory, ngunit may karagdagang smali directory sa halip na mga dex file at apktool.yml file. Ang una ay naglalaman ng disassembled code ng executable dex file ng application, ang pangalawa ay naglalaman ng impormasyon ng serbisyo na kinakailangan para sa apktool upang maibalik ang package.
Ang unang lugar na dapat nating tingnan ay, siyempre, AndroidManifest.xml. At narito agad naming nakatagpo ang sumusunod na linya:
Hindi mahirap hulaan na responsable ito sa pagbibigay ng mga pahintulot sa application na gamitin ang koneksyon sa Internet. Sa katunayan, kung gusto lang nating tanggalin ang advertising, malamang na kailangan lang nating harangan ang application mula sa Internet. Subukan nating gawin ito. Tinatanggal namin ang tinukoy na linya at subukang buuin ang software gamit ang apktool:
$ apktool b com.kauf.particle.virtualtorch
Ang resultang APK file ay lalabas sa com.kauf.particle.virtualtorch/build/ directory. Gayunpaman, hindi ito posibleng i-install, dahil wala itong digital signature at mga file checksum (wala lang itong META-INF/ directory). Dapat nating lagdaan ang package gamit ang apk-signer utility. Inilunsad. Ang interface ay binubuo ng dalawang tab - sa una (Key Generator) lumikha kami ng mga susi, sa pangalawa (APK Signer) kami ay pumirma. Upang gawin ang aming pribadong key, punan ang mga sumusunod na field:
- Target na File- keystore output file; ito ay karaniwang nag-iimbak ng isang pares ng mga susi;
- Password At Kumpirmahin- password para sa imbakan;
- alyas- pangalan ng susi sa imbakan;
- Alias na password At Kumpirmahin- sikretong key password;
- Ang bisa- panahon ng bisa (sa mga taon). Ang default na halaga ay pinakamainam.
Ang natitirang mga patlang ay, sa pangkalahatan, opsyonal - ngunit hindi bababa sa isa ay dapat punan.
![](https://i0.wp.com/xakep.ru/wp-content/uploads/2014/10/apk_signer_key_generating.jpg)
BABALA
Upang mag-sign ng isang application gamit ang apk-signer, dapat mong i-install ang Android SDK at tukuyin ang buong path dito sa mga setting ng application.
Ang lahat ng impormasyon ay ibinigay para sa mga layuning pang-impormasyon lamang. Ang mga editor o ang may-akda ay walang pananagutan para sa anumang posibleng pinsalang dulot ng mga materyales ng artikulong ito.
Maaari mo na ngayong lagdaan ang APK gamit ang key na ito. Sa tab na APK Signer, piliin ang bagong nabuong file, ilagay ang password, key alias at password, pagkatapos ay hanapin ang APK file at matapang na i-click ang button na "Mag-sign". Kung magiging maayos ang lahat, pipirmahan ang package.
IMPORMASYON
Dahil nilagdaan namin ang package gamit ang sarili naming susi, salungat ito sa orihinal na application, na nangangahulugan na kapag sinubukan naming i-update ang software sa pamamagitan ng market, makakatanggap kami ng error.
Ang isang digital na lagda ay kinakailangan lamang para sa software ng third-party, kaya kung binabago mo ang mga application ng system na naka-install sa pamamagitan ng pagkopya sa mga ito sa direktoryo ng /system/app/, hindi mo na kailangang pirmahan ang mga ito.
Pagkatapos nito, i-download ang package sa iyong smartphone, i-install ito at ilunsad ito. Voila, wala na ang ad! Sa halip, gayunpaman, lumitaw ang isang mensahe na wala kaming Internet o wala kaming naaangkop na mga pahintulot. Sa teorya, maaaring sapat na ito, ngunit mukhang nakakainis ang mensahe, at, sa totoo lang, sinuwerte lang kami sa isang hangal na aplikasyon. Ang karaniwang nakasulat na software ay malamang na linawin ang mga kredensyal nito o titingnan ang isang koneksyon sa Internet at kung hindi man ay tatangging ilunsad. Ano ang gagawin sa kasong ito? Siyempre, i-edit ang code.
Karaniwan, ang mga may-akda ng application ay gumagawa ng mga espesyal na klase para sa pagpapakita ng mga ad at mga paraan ng pagtawag ng mga klase na ito kapag ang application o ang isa sa mga "aktibidad" nito (sa simpleng mga termino, mga screen ng application) ay inilunsad. Subukan nating hanapin ang mga klaseng ito. Pumunta kami sa direktoryo ng smali, pagkatapos ay com (naglalaman lamang ang org ng bukas na graphic library na cocos2d), pagkatapos ay kauf (ito ay kung saan ito, dahil ito ang pangalan ng developer at lahat ng kanyang code ay naroroon) - at narito ito, ang direktoryo ng marketing. Sa loob nakita namin ang isang bungkos ng mga file na may smali extension. Ito ay mga klase, at ang pinakakilala sa mga ito ay ang Ad.smali class, mula sa pangalan kung saan madaling hulaan na ito ang nagpapakita ng advertising.
Maaari naming baguhin ang lohika ng pagpapatakbo nito, ngunit magiging mas madaling alisin ang mga tawag sa alinman sa mga pamamaraan nito mula sa application mismo. Samakatuwid, iniiwan namin ang direktoryo ng marketing at pumunta sa katabing direktoryo ng particle, at pagkatapos ay sa virtualtorch. Ang MainActivity.smali file ay nararapat na espesyal na pansin dito. Ito ay isang karaniwang klase ng Android na nilikha ng Android SDK at naka-install bilang entry point sa application (katulad ng pangunahing function sa C). Buksan ang file para sa pag-edit.
Sa loob ay may smali code (lokal na assembler). Ito ay medyo nakakalito at mahirap basahin dahil sa mababang antas nito, kaya hindi namin ito pag-aaralan, ngunit hahanapin lamang ang lahat ng mga reference sa Ad class sa code at magkomento sa kanila. Pumasok kami sa linyang "Ad" sa paghahanap at makarating sa linya 25:
Pribadong ad sa field:Lcom/kauf/marketing/Ad;
Dito nilikha ang field ng ad upang mag-imbak ng object ng Ad class. Nagkokomento kami sa pamamagitan ng paglalagay ng ### sign sa harap ng linya. Ipinagpatuloy namin ang paghahanap. Linya 423:
New-instance v3, Lcom/kauf/marketing/Ad;
Dito nagaganap ang paglikha ng bagay. Comment tayo. Ipinagpatuloy namin ang paghahanap at paghahanap sa mga linyang 433, 435, 466, 468, 738, 740, 800 at 802 na mga tawag sa mga pamamaraan ng Ad class. Comment tayo. Ganun daw. Magtipid tayo. Ngayon ang pakete ay kailangang isama muli at suriin para sa pag-andar at pagkakaroon ng advertising. Para sa kadalisayan ng eksperimento, ibinabalik namin ang linyang inalis mula sa AndroidManifest.xml, i-assemble ang package, lagdaan at i-install.
Ang guinea pig natin. Nakikita ang advertisingOops! Nawala lang ang advertising habang tumatakbo ang application, ngunit nanatili sa pangunahing menu, na nakikita namin kapag inilunsad namin ang software. Kaya, maghintay, ngunit ang entry point ay ang klase ng MainActivity, at ang advertisement ay nawala habang tumatakbo ang application, ngunit nanatili sa pangunahing menu, kaya iba ang entry point? Upang matukoy ang totoong entry point, muling buksan ang AndroidManifest.xml file. At oo, naglalaman ito ng mga sumusunod na linya:
Sinasabi nila sa amin (at, higit sa lahat, ang android) na dapat ilunsad ang isang aktibidad na pinangalanang Start bilang tugon sa pagbuo ng intent (event) android.intent.action.MAIN mula sa android.intent.category.LAUNCHER na kategorya. Nabubuo ang kaganapang ito kapag nag-tap ka sa icon ng application sa launcher, kaya tinutukoy nito ang entry point, katulad ng Start class. Malamang, ang programmer ay unang nagsulat ng isang application na walang pangunahing menu, ang entry point kung saan ay ang karaniwang klase ng MainActivity, at pagkatapos ay nagdagdag ng isang bagong window (aktibidad) na naglalaman ng menu at inilarawan sa klase ng Start, at manu-manong ginawa itong entry punto.
Buksan ang Start.smali file at muling hanapin ang linyang "Ad", makikita natin sa mga linya 153 at 155 ang pagbanggit sa klase ng FirstAd. Ito rin ay nasa source code at, sa paghusga sa pangalan, responsable ito sa pagpapakita ng mga ad sa pangunahing screen. Tingnan pa natin, mayroong paglikha ng isang instance ng FirstAd class at isang intent, na sa konteksto ay nauugnay sa instance na ito, at pagkatapos ay ang cond_10 label, ang conditional transition na kung saan ay isinasagawa nang eksakto bago lumikha ng isang instance ng klase. :
If-ne p1, v0, :cond_10 .line 74 new-instance v0, Landroid/content/Intent; ... :cond_10
Malamang, kahit papaano, random na kinakalkula ng program kung dapat ipakita ang advertising sa pangunahing screen, at, kung hindi, direktang tumalon sa cond_10. Ok, pasimplehin natin ang kanyang gawain at palitan ang may kondisyong paglipat ng walang kundisyon:
#if-ne p1, v0, :cond_10 goto:cond_10
Wala nang mga pagbanggit ng FirstAd sa code, kaya isinara namin ang file at muling buuin ang aming virtual na sulo gamit ang apktool. Kopyahin ito sa iyong smartphone, i-install ito, ilunsad ito. Voila, nawala ang lahat ng advertising, kung saan binabati namin kaming lahat.
Mga resulta
Ang artikulong ito ay isang maikling panimula lamang sa mga paraan ng pag-hack at pagbabago ng mga Android application. Maraming isyu ang nanatili sa likod ng mga eksena, gaya ng pag-alis ng proteksyon, pag-parse ng na-obfuscate na code, pagsasalin at pagpapalit ng mga mapagkukunan ng application, pati na rin ang pagbabago ng mga application na nakasulat gamit ang Android NDK. Gayunpaman, ang pagkakaroon ng pangunahing kaalaman, ito ay isang bagay lamang ng oras upang malaman ang lahat ng ito.