Bagaimana cara membuka APK dan cara mengeditnya? Menggunakan apktool Sebuah program untuk membongkar dan merakit file apk

Terkadang beberapa aplikasi di Android tidak sesuai dengan pengguna dalam beberapa hal. Contohnya adalah iklan yang mengganggu. Dan kebetulan program ini bagus untuk semua orang, tetapi terjemahan di dalamnya salah atau tidak ada sama sekali. Atau misalnya programnya uji coba, tetapi tidak ada cara untuk mendapatkan versi lengkapnya. Bagaimana cara mengubah situasi?

Perkenalan

Pada artikel ini kita akan membahas tentang cara membongkar paket APK dengan suatu aplikasi, melihat struktur internalnya, membongkar dan mendekompilasi bytecode, dan juga mencoba membuat beberapa perubahan pada aplikasi yang dapat memberi kita satu manfaat atau lainnya.

Untuk melakukan semua ini sendiri, Anda memerlukan setidaknya pengetahuan dasar tentang bahasa Java, tempat aplikasi Android ditulis, dan bahasa XML, yang digunakan di mana-mana di Android - mulai dari menjelaskan aplikasi itu sendiri dan hak aksesnya hingga menyimpan string yang akan ditampilkan di layar. Anda juga memerlukan kemampuan untuk menggunakan perangkat lunak konsol khusus.

Jadi, apa itu paket APK yang benar-benar semua perangkat lunak Android didistribusikan?

Dekompilasi aplikasi

Pada artikel ini, kami hanya bekerja dengan kode aplikasi yang dibongkar, tetapi jika perubahan yang lebih serius dilakukan pada aplikasi besar, akan jauh lebih sulit untuk memahami kode kecil. Untungnya, kita dapat mendekompilasi kode dex menjadi kode Java, yang meskipun tidak asli dan tidak dikompilasi kembali, namun jauh lebih mudah untuk membaca dan memahami logika aplikasi. Untuk melakukan ini, kita memerlukan dua alat:

  • dex2jar adalah penerjemah bytecode Dalvik ke bytecode JVM, yang menjadi dasar kita dapat memperoleh kode dalam bahasa Java;
  • jd-gui adalah dekompiler itu sendiri yang memungkinkan Anda mendapatkan kode Java yang dapat dibaca dari bytecode JVM. Sebagai alternatif, Anda dapat menggunakan Jad (www.varaneckas.com/jad); Meskipun sudah cukup tua, dalam beberapa kasus ini menghasilkan kode yang lebih mudah dibaca daripada Jd-gui.

Beginilah cara penggunaannya. Pertama, kita meluncurkan dex2jar, menentukan jalur ke paket apk sebagai argumen:

% dex2jar.sh mail.apk

Hasilnya, paket Java mail.jar akan muncul di direktori saat ini, yang sudah bisa dibuka di jd-gui untuk melihat kode Java.

Pengaturan paket APK dan penerimaannya

Paket aplikasi Android pada dasarnya adalah file ZIP biasa yang tidak memerlukan alat khusus apa pun untuk melihat kontennya atau mengekstraknya. Cukup memiliki pengarsip - 7zip untuk Windows atau konsol unzip di Linux. Tapi itu tentang bungkusnya. Apa yang ada di dalamnya? Secara umum, kami memiliki struktur berikut di dalamnya:

  • META-INF/- berisi sertifikat digital aplikasi, identifikasi pembuatnya, dan checksum file paket;
  • res/ - berbagai sumber daya yang digunakan aplikasi dalam pekerjaannya, seperti gambar, deskripsi deklaratif antarmuka, serta data lainnya;
  • AndroidManifest.xml- deskripsi aplikasi. Ini termasuk, misalnya, daftar izin yang diperlukan, versi Android yang diperlukan, dan resolusi layar yang diperlukan;
  • kelas.dex- bytecode aplikasi yang dikompilasi untuk mesin virtual Dalvik;
  • sumber daya.arsc- juga sumber daya, tetapi jenisnya berbeda - khususnya, string (ya, file ini dapat digunakan untuk Russification!).

File dan direktori yang terdaftar, jika tidak semuanya, mungkin ada di sebagian besar APK. Namun, ada beberapa file/direktori yang kurang umum yang perlu disebutkan:

  • aktiva- analog sumber daya. Perbedaan utamanya adalah untuk mengakses sumber daya Anda perlu mengetahui pengenalnya, namun daftar aset dapat diperoleh secara dinamis menggunakan metode AssetManager.list() dalam kode aplikasi;
  • lib- perpustakaan Linux asli yang ditulis menggunakan NDK (Native Development Kit).

Direktori ini digunakan oleh produsen game yang menempatkan mesin game mereka yang ditulis dalam C/C++ di sana, serta oleh pembuat aplikasi berkinerja tinggi (misalnya, Google Chrome). Kami menemukan perangkatnya. Namun bagaimana cara mendapatkan file paket dari aplikasi yang Anda minati? Karena tidak mungkin mengambil file APK dari perangkat tanpa root (file tersebut terletak di direktori /data/app), dan rooting tidak selalu disarankan, setidaknya ada tiga cara untuk mendapatkan file aplikasi ke komputer Anda:

  • Ekstensi Pengunduh APK untuk Chrome;
  • Aplikasi APK Leecher asli;
  • berbagai file hosting dan Varezniks.

Yang mana yang akan digunakan tergantung selera; kami lebih suka menggunakan aplikasi terpisah, jadi kami akan menjelaskan penggunaan Real APK Leecher, terutama karena ini ditulis dalam Java dan, karenanya, akan berfungsi di Windows atau Nix.

Setelah memulai program, Anda perlu mengisi tiga bidang: Email, Kata Sandi, dan ID Perangkat - dan pilih bahasa. Dua yang pertama adalah email dan kata sandi akun Google yang Anda gunakan di perangkat. Yang ketiga adalah pengidentifikasi perangkat, dan dapat diperoleh dengan mengetikkan kode pada dialer # #8255## dan kemudian menemukan baris ID Perangkat. Saat mengisi, Anda hanya perlu memasukkan ID tanpa awalan android-.

Setelah diisi dan disimpan, sering muncul pesan “Error while connection to server”. Ini tidak ada hubungannya dengan Google Play, jadi abaikan saja dan cari paket yang Anda minati.

Lihat dan Ubah

Katakanlah Anda menemukan sebuah paket yang Anda minati, mendownloadnya, membongkarnya... dan ketika Anda mencoba melihat beberapa file XML, Anda terkejut menemukan bahwa file tersebut bukan teks. Bagaimana cara mendekompilasinya dan cara bekerja dengan paket secara umum? Apakah benar-benar perlu menginstal SDK? Tidak, SDK tidak perlu diinstal sama sekali. Faktanya, semua langkah untuk mengekstrak, memodifikasi, dan mengemas paket APK memerlukan alat berikut:

  • Pengarsip ZIP untuk membongkar dan mengemas;
  • kecil- Perakit/pembongkar bytecode mesin virtual Dalvik (code.google.com/p/smali);
  • tepat- alat untuk mengemas sumber daya (secara default, sumber daya disimpan dalam bentuk biner untuk mengoptimalkan kinerja aplikasi). Termasuk dalam Android SDK, tetapi dapat diperoleh secara terpisah;
  • penandatangan- alat untuk menandatangani paket yang dimodifikasi secara digital (bit.ly/Rmrv4M).

Anda dapat menggunakan semua alat ini secara terpisah, tetapi ini merepotkan, jadi lebih baik menggunakan perangkat lunak tingkat tinggi yang dibuat berdasarkan alat tersebut. Jika Anda menjalankan Linux atau Mac OS X, ada alat bernama apktool. Ini memungkinkan Anda untuk membongkar sumber daya dalam bentuk aslinya (termasuk file XML biner dan arsc), membangun kembali paket dengan sumber daya yang diubah, tetapi ia tidak tahu cara menandatangani paket, jadi Anda harus menjalankan utilitas penandatanganan secara manual. Terlepas dari kenyataan bahwa utilitas ini ditulis dalam Java, instalasinya agak tidak standar. Pertama, Anda perlu mendapatkan file jar itu sendiri:

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

Jika Anda bekerja di Windows, maka ada alat luar biasa yang disebut Virtuous Ten Studio, yang juga mengumpulkan semua alat ini (termasuk apktool itu sendiri), tetapi alih-alih antarmuka CLI, alat ini menyediakan antarmuka grafis intuitif yang dapat digunakan pengguna. melakukan operasi untuk membongkar, membongkar, dan mendekompilasi dalam beberapa klik. Alat ini bersifat Donation-ware, yaitu terkadang muncul jendela yang meminta Anda untuk mendapatkan lisensi, namun pada akhirnya hal tersebut dapat ditoleransi. Tidak ada gunanya menjelaskannya, karena Anda dapat memahami antarmukanya dalam beberapa menit. Namun apktool, karena sifatnya yang konsol, perlu dibahas lebih detail.


Mari kita lihat opsi apktool. Singkatnya, ada tiga perintah dasar: d (decode), b (build) dan if (install framework). Jika semuanya jelas dengan dua perintah pertama, lalu apa yang dilakukan pernyataan kondisional ketiga? Ini membongkar kerangka UI yang ditentukan, yang diperlukan jika Anda membedah paket sistem apa pun.

Mari kita lihat opsi paling menarik dari perintah pertama:

  • -S- jangan membongkar file dex;
  • -R- jangan membongkar sumber daya;
  • -B- jangan memasukkan informasi debugging ke dalam hasil pembongkaran file dex;
  • --jalur bingkai- gunakan kerangka UI yang ditentukan alih-alih yang ada di apktool. Sekarang mari kita lihat beberapa opsi untuk perintah b:
  • -F- perakitan paksa tanpa memeriksa perubahan;
  • -A- tunjukkan jalur ke aapt (alat untuk membuat arsip APK), jika karena alasan tertentu Anda ingin menggunakannya dari sumber lain.

Cara menggunakan apktool sangat sederhana; untuk melakukan ini, cukup tentukan salah satu perintah dan jalur ke APK, misalnya:

$apktool d mail.apk

Setelah ini, semua file paket yang diekstraksi dan dibongkar akan muncul di direktori email.

Persiapan. Menonaktifkan iklan

Teorinya tentu saja bagus, tetapi mengapa diperlukan jika kita tidak tahu apa yang harus dilakukan dengan paket yang belum dibongkar? Mari kita coba menerapkan teori tersebut untuk keuntungan kita, yaitu memodifikasi beberapa perangkat lunak agar tidak menampilkan iklan kepada kita. Misalnya saja, Obor Virtual - obor virtual. Perangkat lunak ini ideal bagi kami, karena dipenuhi dengan iklan yang mengganggu dan, terlebih lagi, cukup sederhana untuk tidak tersesat di tengah hutan kode.


Jadi, dengan menggunakan salah satu metode di atas, unduh aplikasi dari pasar. Jika Anda memutuskan untuk menggunakan Virtuous Ten Studio, cukup buka file APK di aplikasi dan unzip, buat proyek (File -> Proyek baru), lalu pilih Impor File di menu konteks proyek. Jika pilihan Anda jatuh pada apktool, jalankan saja satu perintah:

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

Setelah ini, pohon file yang mirip dengan yang dijelaskan di bagian sebelumnya akan muncul di direktori com.kauf.particle.virtualtorch, tetapi dengan direktori smali tambahan, bukan file dex dan file apktool.yml. Yang pertama berisi kode yang dibongkar dari file dex aplikasi yang dapat dieksekusi, yang kedua berisi informasi layanan yang diperlukan apktool untuk merakit kembali paket.

Tempat pertama yang harus kita lihat tentu saja adalah AndroidManifest.xml. Dan di sini kita langsung menjumpai baris berikut:

Tidak sulit untuk menebak bahwa ia bertanggung jawab untuk memberikan izin aplikasi untuk menggunakan koneksi Internet. Faktanya, jika kita hanya ingin menghilangkan iklan, kemungkinan besar kita hanya perlu memblokir aplikasi tersebut dari Internet. Mari kita coba melakukan ini. Kami menghapus baris yang ditentukan dan mencoba membangun perangkat lunak menggunakan apktool:

$ apktool b com.kauf.particle.virtualtorch

File APK yang dihasilkan akan muncul di direktori com.kauf.particle.virtualtorch/build/. Namun, tidak mungkin untuk menginstalnya, karena tidak memiliki tanda tangan digital dan checksum file (tidak memiliki direktori META-INF/). Kita harus menandatangani paket menggunakan utilitas apk-signer. Diluncurkan. Antarmuka terdiri dari dua tab - yang pertama (Key Generator) kami membuat kunci, yang kedua (APK Signer) kami menandatangani. Untuk membuat kunci pribadi kami, isi kolom berikut:

  • Berkas Sasaran- file keluaran keystore; biasanya menyimpan sepasang kunci;
  • Kata sandi Dan Mengonfirmasi- kata sandi untuk penyimpanan;
  • Alias- nama kunci dalam penyimpanan;
  • Kata sandi alias Dan Mengonfirmasi- kata sandi kunci rahasia;
  • Keabsahan- masa berlaku (dalam tahun). Nilai defaultnya optimal.

Bidang lainnya, secara umum, opsional - tetapi setidaknya satu bidang harus diisi.


PERINGATAN

Untuk menandatangani aplikasi menggunakan apk-signer, Anda harus menginstal Android SDK dan menentukan path lengkap ke aplikasi tersebut di pengaturan aplikasi.

Semua informasi disediakan untuk tujuan informasi saja. Baik editor maupun penulis tidak bertanggung jawab atas segala kemungkinan kerugian yang disebabkan oleh materi artikel ini.

Sekarang Anda dapat menandatangani APK dengan kunci ini. Pada tab APK Signer, pilih file yang baru dibuat, masukkan kata sandi, alias kunci, dan kata sandi, lalu temukan file APK dan klik tombol “Sign”. Jika semuanya berjalan dengan baik, paket akan ditandatangani.

INFORMASI

Karena kami menandatangani paket dengan kunci kami sendiri, itu akan bertentangan dengan aplikasi aslinya, yang berarti ketika kami mencoba memperbarui perangkat lunak melalui pasar, kami akan menerima kesalahan.

Tanda tangan digital hanya diperlukan untuk perangkat lunak pihak ketiga, jadi jika Anda memodifikasi aplikasi sistem yang diinstal dengan menyalinnya ke direktori /system/app/, Anda tidak perlu menandatanganinya.

Setelah itu, unduh paket tersebut ke ponsel cerdas Anda, instal dan luncurkan. Voila, iklannya hilang! Namun, sebaliknya, muncul pesan bahwa kami tidak memiliki Internet atau tidak memiliki izin yang sesuai. Secara teori, ini mungkin cukup, tetapi pesannya terlihat mengganggu, dan sejujurnya, kami hanya beruntung dengan aplikasi yang bodoh. Perangkat lunak yang biasanya ditulis kemungkinan besar akan mengklarifikasi kredensialnya atau memeriksa koneksi Internet dan sebaliknya menolak untuk diluncurkan. Apa yang harus dilakukan dalam kasus ini? Tentu saja, edit kodenya.

Biasanya, pembuat aplikasi membuat kelas khusus untuk menampilkan iklan dan memanggil metode kelas ini ketika aplikasi atau salah satu “aktivitas”-nya (dalam istilah sederhana, layar aplikasi) diluncurkan. Mari kita coba mencari kelas-kelas ini. Kita masuk ke direktori smali, lalu com (org hanya berisi perpustakaan grafis terbuka cocos2d), lalu kauf (di sinilah tempatnya, karena ini adalah nama pengembang dan semua kodenya ada di sana) - dan ini dia, direktori pemasaran. Di dalamnya kami menemukan banyak file dengan ekstensi smali. Ini adalah kelas-kelas, dan yang paling menonjol adalah kelas Ad.smali, dari namanya mudah ditebak bahwa kelas itulah yang menampilkan iklan.

Kita dapat mengubah logika operasinya, namun akan lebih mudah jika kita menghapus panggilan ke salah satu metodenya dari aplikasi itu sendiri. Oleh karena itu, kami meninggalkan direktori pemasaran dan pergi ke direktori partikel yang berdekatan, dan kemudian ke virtualtorch. File MainActivity.smali patut mendapat perhatian khusus di sini. Ini adalah kelas Android standar yang dibuat oleh Android SDK dan diinstal sebagai titik masuk ke aplikasi (analog dengan fungsi utama di C). Buka file untuk diedit.

Di dalamnya ada kode smali (assembler lokal). Ini cukup membingungkan dan sulit dibaca karena sifatnya yang tingkat rendah, jadi kami tidak akan mempelajarinya, tetapi hanya akan menemukan semua referensi ke kelas Iklan dalam kode dan mengomentarinya. Kami memasukkan baris "Iklan" dalam pencarian dan sampai ke baris 25:

Iklan pribadi bidang:Lcom/kauf/marketing/Ad;

Di sini bidang iklan dibuat untuk menyimpan objek kelas Iklan. Kami berkomentar dengan memberi tanda ### di depan baris. Kami melanjutkan pencarian. Baris 423:

Versi baru v3, Lcom/kauf/marketing/Ad;

Di sinilah pembuatan objek terjadi. Mari berkomentar. Kami melanjutkan pencarian dan menemukan di baris 433, 435, 466, 468, 738, 740, 800 dan 802 panggilan ke metode kelas Iklan. Mari berkomentar. Sepertinya itu saja. Menyimpan. Sekarang paket tersebut perlu dipasang kembali dan diperiksa fungsionalitasnya dan keberadaan iklannya. Demi kemurnian percobaan, kami mengembalikan baris yang dihapus dari AndroidManifest.xml, merakit paket, menandatanganinya, dan menginstalnya.

Kelinci percobaan kami. Iklan terlihat

Ups! Iklan tersebut menghilang hanya saat aplikasi sedang berjalan, namun tetap berada di menu utama, yang kita lihat saat kita meluncurkan perangkat lunak. Jadi tunggu dulu, tapi entry pointnya adalah kelas MainActivity, dan iklannya hilang saat aplikasi sedang berjalan, tetapi tetap ada di menu utama, jadi entry pointnya berbeda? Untuk mengidentifikasi titik masuk sebenarnya, buka kembali file AndroidManifest.xml. Dan ya, itu berisi baris berikut:

Mereka memberi tahu kita (dan, yang lebih penting, android) bahwa aktivitas bernama Start harus diluncurkan sebagai respons terhadap pembuatan sebuah maksud (peristiwa) android.intent.action.MAIN dari kategori android.intent.category.LAUNCHER. Event ini dihasilkan ketika Anda mengetuk ikon aplikasi di peluncur, sehingga menentukan titik masuknya, yaitu kelas Mulai. Kemungkinan besar, pemrogram pertama-tama menulis aplikasi tanpa menu utama, titik masuknya adalah kelas MainActivity standar, dan kemudian menambahkan jendela (aktivitas) baru yang berisi menu dan dijelaskan di kelas Mulai, dan secara manual menjadikannya entri titik.

Buka file Start.smali dan cari lagi baris “Ad”, kita temukan pada baris 153 dan 155 penyebutan kelas FirstAd. Itu juga ada dalam kode sumber dan, dilihat dari namanya, ini bertanggung jawab untuk menampilkan iklan di layar utama. Mari kita lihat lebih jauh, ada pembuatan instance kelas FirstAd dan maksud yang, sesuai dengan konteksnya, terkait dengan instance ini, dan kemudian label cond_10, transisi bersyarat yang dilakukan tepat sebelum membuat instance dari kelas:

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

Kemungkinan besar, program entah bagaimana menghitung secara acak apakah iklan harus ditampilkan di layar utama, dan, jika tidak, langsung melompat ke cond_10. Oke, mari sederhanakan tugasnya dan ganti transisi bersyarat dengan transisi tanpa syarat:

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

Tidak ada lagi penyebutan FirstAd dalam kode, jadi kami menutup file dan memasang kembali obor virtual kami menggunakan apktool. Salin ke ponsel cerdas Anda, instal, luncurkan. Voila, semua iklan telah hilang, dan kami ucapkan selamat kepada kita semua.

Hasil

Artikel ini hanyalah pengenalan singkat tentang metode meretas dan memodifikasi aplikasi Android. Banyak masalah yang tertinggal di balik layar, seperti menghapus perlindungan, menguraikan kode yang dikaburkan, menerjemahkan dan mengganti sumber daya aplikasi, serta memodifikasi aplikasi yang ditulis menggunakan Android NDK. Namun, dengan memiliki pengetahuan dasar, hanya masalah waktu saja untuk mengetahui semuanya.

Dari artikel ini Anda akan mempelajari apa saja aplikasi Android, cara membuka file APK dan dengan program apa saja.

Apa itu file APK?

APK adalah format sistem operasi Android yang digunakan untuk mengarsipkan file aplikasi yang dapat dieksekusi, dan nama file itu sendiri bisa apa saja, tetapi ekstensinya hanya akan terlihat seperti ini.apk. Analog APK di sistem operasi lain adalah .msi di Windows, .sis di Symbian, .rpm atau .deb di Linux.

Mari kita lihat apa yang ada di dalamnya
Faktanya, .apk adalah arsip ZIP, jadi Anda dapat melihat perangkat internal menggunakan pengelola file atau pengarsip apa pun, misalnya WinRAR atau aplikasi seluler X-plore.




Perlu diingat bahwa Anda hanya mendapatkan akses visual ke sumber daya internal; kemampuan pengeditan sangat terbatas.

Mari kita lihat strukturnya
Di dalam .apk kita melihat sejumlah file dan folder, mari kita cari tahu kegunaannya:

  • AndroidManifest.xml adalah semacam "paspor" aplikasi tempat Anda dapat mengetahui semua poin utama, persyaratan, versi, izin, dll.
  • META-INF file ini berisi metadata, yaitu data tentang data, checksum, jalur ke data, jalur dan checksum sumber daya, sertifikat. Anda dapat membuka file ini dengan editor teks apa pun, tetapi disarankan untuk menggunakan Notepad++.
  • Folder res berisi semua sumber daya program, grafik, seperti ikon, gambar, teks, dan elemen antarmuka grafis. Anda juga dapat dengan mudah mengakses folder tersebut.
  • class.dex adalah kode program aplikasi langsung yang dijalankan oleh mesin virtual Dalvik VM; Anda dapat melihat isi file ini hanya dengan mendekompilasi .apk; kita akan membicarakannya di artikel lain. resources.arsc - file XML yang dikompilasi, file ini berisi data tentang semua sumber daya yang terlibat dalam program.
  • lib - folder dengan perpustakaan asli, yang sumber dayanya hanya dapat diakses saat menggunakan program khusus. APK juga mungkin berisi file dan folder seperti com, org, udk, tetapi tidak selalu.

Sekarang mari kita lihat struktur internal lebih detail; untuk ini kita memerlukan program dekompilasi, Java dan file APK. Alat utama untuk membongkar .apk adalah Apktool, tetapi program ini hanya berfungsi dari jalur, yang sangat tidak nyaman. Untuk analisis yang lebih cepat dan nyaman, Anda dapat menggunakan APKing, ini masih Apktool yang sama, tetapi dengan kemampuan untuk bekerja dari menu konteks.


Jadi kami menginstal APK seperti aplikasi apa pun untuk Windows dan, setelah memilih .apk, klik dengan tombol kanan mouse dan Shift secara bersamaan, setelah itu kita akan melihat yang berikut:



Dan pilih tindakan yang diperlukan, misalnya mendekompilasi sepenuhnya, maka program akan menyelesaikan operasi dan membuat folder dengan nama yang sama.



Dengan membuka folder tersebut kita akan memiliki akses ke semua sumber file APK.



Sekarang semua file teks dapat diedit, sambil memperhatikan aturan dasar, Anda dapat menggunakan program Notepad++ yang populer, misalnya, pertimbangkan AndroidManifest.xml

Saya menyebutkan aplikasi SmartAPKTool. Itu dapat mengekstrak, zip dan menandatangani file apk yang dimodifikasi. Keunggulannya adalah hadirnya antarmuka grafis. Namun, ada kelemahan yang serius. SmartAPKTool sudah lama tidak diperbarui, dan program tidak membongkar dan mengemas aplikasi dengan benar untuk versi terbaru Android. Oleh karena itu, disini saya akan mencoba menjelaskan bagaimana cara menggunakan aplikasi untuk keperluan tersebut apktool.

Catatan 1.
Program SmartAPKTool masih nyaman digunakan untuk menandatangani file apk yang dikumpulkan.
Catatan 2.
Tautan ke program yang disebutkan dalam artikel adalah ↓

Program apktool tidak memiliki antarmuka grafis. Ini merupakan kerugian bagi mereka yang tidak terbiasa bekerja dengan baris perintah. Namun ada juga kelebihannya: tidak seperti SmartAPKTool, kita akan melihat semua kesalahan, yang berarti kita akan tahu apa yang harus diperbaiki.

Mari kita unduh dua arsip: satu arsip umum untuk semua sistem, yang lain untuk sistem kita (Windows dalam contoh):

Mari kita ekstrak kedua arsip ke dalam folder kosong yang sama (dalam contoh kita, C:\apktool\). Kontennya akan terlihat seperti ini:

Mulai sekarang kita bisa menggunakan program ini apktool.

Catatan 3.
Pengguna Linux versi 64-bit perlu menginstal paket ia32-libs:

sudo apt-get install ia32-libs

Di folder yang sama kami meletakkan file yang perlu kami buka paketnya. Misalnya saja disebut orig.apk
Tekan dan tahan tombol Shift dan klik kanan pada ruang kosong mana pun di folder (jangan klik file!). Setelah itu, pilih “Buka jendela perintah”. Di konsol yang muncul, ketik:

apktool memecahkan kode asal.apk

File akan dibongkar:

Sekarang kita memiliki folder dengan aplikasi yang belum dibongkar di direktori C:\apktool\. Namanya sama dengan file sumber, tanpa ekstensi: C:\apktool\orig\ . Kita bisa mengubah file sumber seperti yang dijelaskan di artikel Android: cara menginstal dua aplikasi identik di satu ponsel. Setelah kami melakukan perubahan, kami akan mengumpulkan salinan aplikasi dengan mengemas file sumber ke dalam apk:

apktool build hasil asli.apk

Di sini result.apk adalah nama file yang kami buat untuk pembuatan salinan. Jika tidak ada kesalahan, file akan dirakit:

Sisanya berada di luar cakupan artikel:

  1. Jika ada kesalahan selama perakitan, Anda perlu mencari penyebabnya dan memperbaikinya.
  2. Yang tersisa hanyalah menandatangani file result.apk yang dihasilkan. Ini dapat dilakukan dengan menggunakan SmartAPKTool seperti yang disebutkan di atas; Segala sesuatu tentangnya bersifat intuitif. Ada juga cara lain untuk menandatangani file apk.
  3. Kesalahan juga dapat terjadi saat menginstal salinan, saat startup atau pengoperasiannya. Mereka harus ditangkap menggunakan utilitas adb yang disertakan dalam Android SDK.

Anda harus menandatangani aplikasi, jika tidak maka aplikasi tidak akan diinstal. Kesalahan tidak sering terjadi, dan masalah paling umum yang menyebabkannya dijelaskan dalam artikel

Dalam proses penggunaan berbagai firmware untuk perangkat Android, terkadang ada kebutuhan untuk mengubah aplikasi sistem yang ada di dalam sistem operasi dengan satu atau lain cara. Dalam materi ini kami akan mempertimbangkan masalah ini secara rinci.

Tentu saja, Anda perlu membongkar dan memasang kembali file APK sistem agar berfungsi dengan baik dan stabil. Mari kita lihat langkah demi langkah apa yang perlu dilakukan untuk ini.

Pertama, Anda perlu melakukan proses deodexing file APK sistem. Kami akan memberi tahu Anda cara melakukan ini.

Jadi, file .apk telah di-deodex dan didekompilasi. Mari kita analisa aplikasi yang kita minati, biar ada namanya, untuk kejelasan misalnya, kerangka- res. apk. Kami mengingatnya di kepala kami sebagai aplikasi aslinya.

Katakanlah kita telah membuat semua perubahan yang diperlukan pada aplikasi. Kami akan berbicara lebih banyak tentang semua aspek file APK. Sekarang Anda perlu mengemasnya kembali. Mari kita ingat paket aplikasi yang sudah selesai dalam pikiran kita sebagai aplikasi yang dimodifikasi 2.

Sekarang kami akan menjelaskan mengapa perlu mengingat secara mental aplikasi sebagai asli dan dimodifikasi 2. Aplikasi yang dikompilasi oleh program ApkTool (atau menggunakan ekstensi antarmuka pengguna grafis seperti SmartApkTool) tidak akan berfungsi, tetapi ini tidak menjadi masalah. Kami melakukan tindakan berikut:

Mengumpulkan file tersebut kembali ke APK cukup sederhana. Untuk melakukan ini, Anda perlu menjalankan apktool dengan flag build yang sesuai dan meneruskannya ke folder dengan aplikasi yang didekompilasi di dalamnya. Misalnya, jika kita memiliki folder aplikasi yang terletak di direktori yang sama dengan apktool, maka perintahnya akan terlihat seperti ini:

Kerang

java -jar apktool.jar b aplikasi

java - aplikasi jar apktool .jar b

Setelah perakitan, file APK yang sudah selesai akan ditempatkan di direktori aplikasi/build. Selanjutnya Anda perlu menandatangani APK. Hal ini dilakukan untuk memastikan bahwa aplikasi berfungsi pada perangkat yang dilarang melakukan debug. Artinya, dilarang meluncurkan aplikasi yang tidak ditandatangani pada perangkat tersebut. Anda dapat membaca lebih lanjut tentang sertifikat digital dan prosedur penandatanganan file di sini.

Menandatangani file sangat sederhana: ada utilitas khusus untuk ini yang disebut signapk. Itu harus diluncurkan dengan terlebih dahulu meneruskan sertifikat sebagai argumen, lalu jalur ke aplikasi, dan terakhir jalur untuk aplikasi yang ditandatangani (hasilnya, tempat menyimpannya). Ini terlihat seperti ini:

Kerang

java -jar signapk.jar testkey.x509.pem testkey.pk8 *.apk apk_signed.apk

java - jar signapk .jar testkey .x509 .pem testkey .pk8 * .apk apk_signed .apk

Di mana Anda bisa mendapatkan sertifikat seperti itu, Anda bertanya? Sertifikat dapat ditemukan di Internet. Atau buat sendiri. Petunjuk terperinci tentang pengaturan dan pembuatan semua file yang diperlukan dapat ditemukan, misalnya, .

Kesimpulan

Seperti yang Anda lihat, mendekompilasi dan merakit file APK adalah proses yang cukup sederhana, yang juga dapat diotomatisasi, sehingga memudahkan pekerjaan peneliti. Mesin virtual Dalvik sendiri juga mudah dipelajari dan dibuka, yang di satu sisi mengurangi hambatan masuk bagi pengembang, di sisi lain menjadi alasan utama tingginya persentase pembajakan di platform Android. Hal inilah yang menyebabkan para pengembang game, misalnya, umumnya tidak tertarik untuk merilis game menarik yang memiliki plot. Mengingat sikap pengguna saat ini, akan jauh lebih menguntungkan jika memusatkan perhatian pada peternakan dengan donasi yang sangat mirip satu sama lain. Oleh karena itu, kami membeli aplikasi, mendukung pengembang, dan sebagai hasilnya, mendapatkan konten yang menarik. Tapi sama sekali tidak perlu menyumbang!

Terima kasih semuanya, sampai jumpa lagi.