Decompile APK Menjadi Java Source Code

Sebuah file berekstensi .apk, bagi para pengguna android tentu sudah tidak asing lagi, apalagi bagi seorang pengembang aplikasi berbasis android. File-file dengan ekstensi apk ini kerap sekali digunakan oleh para pengguna android untuk menginstall suatu aplikasi ke dalam device miliknya secara offline sehingga tidak perlu menggunakan koneksi data agar dapat terhubung dengan google play store. File apk dapat di ilustrasikan sebagai sebuah archive (zip file) yang mengandung Dalvix Executable file (berekstensi dex).
Dari sisi developer, ketika kita mengembangkan suatu aplikasi android, kita menggunakan file-file berekstensi java. File-file java tersebut akan dikompilasi menjadi dex agar dapat berjalan pada Dalvix Virtual Machine (DVM). File-file dex ini akan dibungkus menjadi apk. Bagaimana jika seorang developer yang ingin mempelajari logika kerja dari suatu aplikasi? Tentu saja hal ini memerlukan proses kebalikan dari yang biasa digunakan untuk membuat sebuah file apk. Bagaimana caranya ketika kita memiliki file apk dan kita ingin melihat source code javanya untuk dipelajari?

Jika pada artikel sebelumnya yang berjudul "Edit APK Pada Android", saya telah menuliskan bagaimana cara untuk membongkar sebuah file apk, kali ini saya akan mencoba menuliskan bagaimana caranya agar suatu file apk bisa menjadi java source sehingga dapat kita pelajari bagaimana logika kerja file tersebut.

Cara untuk melakukannya:
Covert apk to Jar
1.Download aplikasi yang akan ada pelajari pada google play store, anggap saja nama aplikasi tersebut adalah "apptarget" kemudian backup aplikasi tersebut menggunakan ES File Xplorer (Caranya di sini)

2.Pindahkan file yang telah anda backup (anggap saja namanya "apptarget.apk") tadi ke PC atau laptop anda.

3.Download Dex2Jar (link). Setelah didownload, ekstrak file .zip tersebut.

4.Jalankan perintah untuk convert apk to jar
dex2jar targetapp.apk (./dex2jar targetapp.apk on terminal)
File ‘targetapp.apk.dex2jar.jar’ akan terbentuk setelah anda melakukan langkah ini.


Decompiling the Jar files to Java
Langkah 1 Dengan JavaDecompiler (JD):
1.Download JavaDecompiler di sini

2.Buka file yang telah anda rubah dari apk menjadi jar tadi (sebagai contoh :‘targetapp.apk.dex2jar.jar’) dengan menggunakan JD-GUI yang telah anda unduh
Langkah 2 JAD:

1.Extract file jar ke folder dengan nama "src". Gunakan utility tools seperti 7zip, winzip, winrar.
2.Folder "src" berada menjadi satu dengan folder dimana file JAD dan targetapp.jar tadi berada

3.Buka file dengan menggunakan JAD yang dapat diunduh di sini dengan cmd dan jalankan dengan menggunakan perintah berikut ini:
jad -o -r -sjava -dsrc src/**/*.class (./jad on terminal)
4.Sekarang src akan berisi file Java yang telah di decompiled yang siap untuk diperiksa dan dipelajari kode manualnya.

Catatan:
1.Ada beberapa file apk yang di proteksi oleh developer, sehingga tidak semua file apk bisa di decompile
2.Saran saya sebelum menggunakan cara ini ada baiknya jika anda menginstall java terlebih dahulu (link)
3.Untuk mengembalikan menjadi apk anda dapat menggunakan berbagai cara, salah satu diantara beberapa cara itu telah saya bahas pada artikel sebelumnya dengan judul "Konversi Aplikasi Java"

8 Responses to "Decompile APK Menjadi Java Source Code"

  1. mantab gan..
    penjelasannya detail banget, ini yang ane cari..

    BalasHapus
  2. Sama2 sist
    Ane jg ucapin thx udah berkenan kunjung blog ane :)

    BalasHapus
  3. mas q dah coba pake dex2jar n apktool tp yg tampil pesan ini

    'java' is not recognized as an internal or external command,
    operable program or batch file.

    apa ya yg kurang mas?tlng bantuannya...

    BalasHapus
  4. Coba anda baca sekali lagi dengan teliti, sudahkah anda install java SDK?

    BalasHapus
  5. Mas kalo apk dikonvert ke j2me bisa ndak mas?

    BalasHapus
  6. Maaf kl j2me saya blom pernah coba gan :D
    Tp secara logika ada kemungkinan bisa, tp saya tidak brani memastikan sebelum melakukan test terlebih dahulu :)

    BalasHapus
  7. mas kalo ada tulisan kaya gini di cmd maksudnya apa yah??

    Error occurred during initialization of VM
    Could not reserve enough space for object heap
    Could not create the Java virtual machine.

    bingung saya

    BalasHapus