Pertanyaan Apakah ada cara untuk mendapatkan kode sumber dari file APK?


Hard drive di laptop saya hanya jatuh dan saya kehilangan semua kode sumber untuk aplikasi yang saya kerjakan selama dua bulan terakhir. Yang saya miliki adalah file APK yang disimpan di email saya sejak saya mengirimnya ke teman.

Apakah ada cara untuk mengekstrak kode sumber saya dari file APK ini?


1050
2017-08-29 03:40


asal


Jawaban:


Cara sederhana: gunakan alat online http://www.javadecompilers.com/apk, unggah apk dan dapatkan kode sumber.


Prosedur untuk decoding file .apk, metode langkah demi langkah:

Langkah 1:

  1. Buat folder baru dan salin file .apk yang ingin Anda dekodekan.

  2. Sekarang ganti nama ekstensi file .apk ini ke .zip (misalnya, ganti nama dari filename.apk menjadi filename.zip) dan simpan. Sekarang Anda dapat mengakses file class.dex, dll. Pada tahap ini Anda dapat melihat drawables tetapi tidak file xml dan java, jadi lanjutkan.

Langkah 2:

  1. Sekarang ekstrak file .zip ini di folder yang sama (atau FOLDER BARU).

  2. Unduh dex2jar dan ekstrak ke folder yang sama (atau FOLDER BARU).

  3. Pindahkan file classes.dex ke dalam folder dex2jar.

  4. Sekarang buka command prompt dan ubah direktori ke folder itu (atau FOLDER BARU). Lalu menulis d2j-dex2jar classes.dex (untuk mac terminal atau ubuntu menulis ./d2j-dex2jar.sh classes.dex) dan tekan enter. Anda sekarang memiliki file classes.dex.dex2jar di folder yang sama.

  5. Unduh java decompiler, klik dua kali pada jd-gui, klik pada file yang terbuka, dan buka file classes.dex.dex2jar dari folder itu: sekarang Anda mendapatkan file kelas.

  6. Simpan semua file kelas ini (Di jd-gui, klik File -> Save All Sources) dengan nama src. Pada tahap ini Anda mendapatkan sumber java tetapi file .xml masih tidak dapat dibaca, jadi lanjutkan.

Langkah 3:

Sekarang buka folder baru lainnya

  1. Masukkan file .apk yang ingin Anda dekodekan

  2. Unduh versi terbaru dari apktool DAN jendela install apktool (keduanya dapat diunduh dari tautan yang sama) dan menempatkannya di folder yang sama

  3. Buka jendela perintah

  4. Sekarang jalankan perintah seperti apktool if framework-res.apk dan selanjutnya

  5. apktool d myApp.apk  (di mana myApp.apk menunjukkan nama file yang ingin Anda dekodekan)

sekarang Anda mendapatkan folder file di folder itu dan dapat dengan mudah membaca file xml apk.

Langkah 4:

Ini bukan langkah apa-apa hanya menyalin isi dari kedua folder (dalam hal ini folder baru) ke yang satu

dan nikmati kode sumbernya ...


1389
2018-03-13 20:09



Ini adalah deskripsi alternatif - untuk berjaga-jaga jika seseorang terjebak dengan uraian di atas. Ikuti langkah-langkahnya:

  1. unduh apktool.bat (atau apktool untuk Linux) dan apktool_<version>.jar dari http://ibotpeaches.github.io/Apktool/install/ 
  2. mengubah nama file jar dari atas ke apktool.jar dan menaruh kedua file di folder yang sama

  3. buka kotak dos (cmd.exe) dan berubah ke folder itu; verifikasi bahwa Java Environment sudah diinstal (untuk Linux periksa catatan tentang perpustakaan yang diperlukan juga)
  4. Mulai: apktool decode [apk file] 

    Hasil menengah: file sumber daya, AndroidManifest.xml

  5. unzip APK file dengan unpacker pilihan Anda

    Hasil menengah: classes.dex

  6. unduh dan ekstrak dex2jar-0.0.9.15.zip dari http://code.google.com/p/dex2jar/downloads/detail?name=dex2jar-0.0.9.15.zip&can=2&q=
  7. seret dan lepaskan classes.dex ke dex2jar.bat (atau masuk <path_to>\dex2jar.bat classes.dex dalam kotak DOS; untuk penggunaan Linux dex2jar.sh)

    Hasil menengah: classes_dex2jar.jar

  8. membongkar classes_dex2jar.jar (mungkin opsional tergantung pada decompiler yang digunakan)
  9. mendekompilasi file kelas Anda (misalnya dengan JD-GUI atau DJ Decompiler)

    Hasil: Kode sumber

Catatan: tidak diperbolehkan mendekompilasi paket pihak ketiga; panduan ini dimaksudkan untuk memulihkan kode sumber pribadi dari file APK saja; akhirnya, kode yang dihasilkan kemungkinan besar akan dikaburkan


107
2017-08-29 03:58



Meskipun Anda mungkin dapat mendekompilasi Anda APK file, Anda mungkin akan menekan satu masalah besar:

itu tidak akan mengembalikan kode yang Anda tulis. Ini malah akan mengembalikan apa pun yang dilakukan kompiler, dengan variabel yang diberikan nama acak, serta fungsi yang diberikan nama acak. Diperlukan waktu lebih lama untuk mencoba mendekompilasi dan mengembalikannya ke kode yang Anda miliki, daripada memulai kembali.

Sayangnya, hal-hal seperti ini telah membunuh banyak proyek.
Untuk masa depan, saya sangat menyarankan mempelajari Sistem Kontrol Versi, seperti CVS, SVN dan git dll.

dan cara mencadangkannya.


96
2018-01-11 12:49



Ada juga aplikasi baru di Play Store dengan mana dimungkinkan untuk mendekompilasi apk (aplikasi sistem juga) dan melihat kode sumber di smartphone Anda. Ini menyimpan file ke kartu SD Anda sehingga Anda dapat melihatnya di komputer Anda juga. Itu tidak membutuhkan root atau sesuatu yang lain.

Cukup instal dan bersenang-senanglah. Saya pikir ini adalah cara termudah untuk mendekompilasi aplikasi.


47
2017-08-29 12:17



apktool adalah hal terbaik yang bisa Anda coba. Saya telah menyimpan beberapa xml dengannya, tetapi sejujurnya saya tidak tahu cara kerjanya dengan kode .java.

Saya akan merekomendasikan Anda untuk memiliki repositori kode bahkan jika Anda adalah satu-satunya coder. Saya telah menggunakan Project Locker untuk proyek saya sendiri. Ini memberi Anda svn dan git repos gratis.


24
2017-12-06 01:38



Kedua artikel ini menjelaskan cara menggabungkan penggunaan apktool dan dex2jar untuk mengambil APK file dan membuat proyek Eclipse yang dapat membangun dan menjalankannya.

http://blog.inyourbits.com/2012/11/extending-existing-android-applications.html

http://blog.inyourbits.com/2012/12/extending-existing-android-applications.html

Pada dasarnya Anda:

  1. Menggunakan apktool untuk mendapatkan file sumber daya dari apk
  2. Menggunakan dex2jar untuk mendapatkan file jar yang berisi kelas-kelas dalam format yang akan disukai oleh Eclipse.
  3. Buat proyek Eclipse arahkan pada file sumber daya dan file jar baru
  4. Buka file jar dengan utilitas zip dan hapus sumber daya yang ada
  5. Buka file jar dengan JDGui untuk melihat kode sumber
  6. Ambil kode sumber apa pun yang Anda butuhkan JDGui, tempelkan di kelas di dalam Eclipse dan modifikasi
  7. Hapus kelas tersebut dari file jar (sehingga Anda tidak memiliki kelas yang sama yang ditentukan beberapa kali)
  8. Menjalankannya.

20
2017-08-29 04:02



apktool akan bekerja. Anda bahkan tidak perlu mengetahui keystore untuk mengekstrak kode sumber (yang agak menakutkan). Kelemahan utama adalah bahwa sumber disajikan dalam format Smali bukan Java. File-file lain seperti ikon dan main.xml datang dengan sangat baik dan mungkin layak waktu Anda untuk setidaknya memulihkan mereka. Pada akhirnya, Anda kemungkinan besar harus menulis ulang kode Java Anda dari awal.

Anda dapat menemukan apktool sini. Cukup unduh apktool dan helper yang sesuai (untuk Windows, Linux, atau Mac OS). Saya merekomendasikan menggunakan alat seperti 7-zip untuk membongkar mereka.


16
2017-08-11 03:27



Ada beberapa cara untuk melakukan ini:

  1. Gunakan fitur "Profil atau Debug APK" di Android Studio 3.0.

    Ini memungkinkan Anda untuk membuka dan menjelajahi APK di Android Studio. Kelas-kelas didekompilasi menjadi smali. Sumber daya tidak diekstrak dan hal-hal seperti "Pergi ke Definisi", "Temukan Semua Referensi" dan debugging tidak berfungsi tanpa kode sumber (android studio 3.0 kenari 9). Beberapa fitur tambahan smali mungkin bisa digunakan smalidea.

    android-studio

    select-file

    code

  2. Menggunakan jadx.

    Jadx mendekompilasi kode dalam APK yang diberikan ke file sumber java.

    jdax-img

  3. Menggunakan apktool.

    Apktool adalah alat baris perintah yang mengekstraksi sumber daya dan mendekompilasi kode menjadi smali untuk apk yang diberikan. Anda dapat mengkompilasi ulang menggunakan apktool juga. Berikut ini contohnya dalam aksi:

    $ apktool d test.apk
    I: Using Apktool 2.2.4 on test.apk
    I: Loading resource table...
    I: Decoding AndroidManifest.xml with resources...
    I: Loading resource table from file: 1.apk
    I: Regular manifest package...
    I: Decoding file-resources...
    I: Decoding values */* XMLs...
    I: Baksmaling classes.dex...
    I: Copying assets and libs...
    I: Copying unknown files...
    I: Copying original files...
    $ apktool b test
    I: Using Apktool 2.2.4 on test
    I: Checking whether sources has changed...
    I: Smaling smali folder into classes.dex...
    I: Checking whether resources has changed...
    I: Building resources...
    I: Building apk file...
    I: Copying unknown files/dir...
    

6
2018-05-25 14:06



Mungkin yang mudah untuk melihat sumbernya:

Di Android Studio 2.3, Build -> Analyze APK -> Select the apk that you want to decompile.
Anda akan melihat kode sumbernya.

Linf untuk referensi:
https://medium.com/google-developers/making-the-most-of-the-apk-analyzer-c066cb871ea2


6
2018-02-25 12:22



Saya akan menunjukkan kepada Anda cara lain untuk mendekompilasi .apk file.

Anda dapat mengikuti 2 langkah pertama dari "garg prankul". Jadi, Anda memiliki peluang lain:

Langkah 3 ':

Unduh "JD-GUI", itu mudah untuk menemukan yang ini. Bukalah .botol file di "jd-gui.exe". (File> Buka file> 'temukan Anda .botol mengajukan'). Setelah prosedur ini, Anda dapat menyimpan semua sumber daya dalam file .zip mengajukan.

Begitu,

1 - Anda harus mengganti nama .apk file ke .zip

2 - Anda harus memecahkan kode .dex file (jika Anda ingin, decode .apk file ke dex2jar, itu mungkin)

3 - Anda harus memecahkan kode .botol file dengan JD-GUI


5
2018-06-10 14:36