Belajar Android Dengan Teknik Reverse Engineering

Banyak aplikasi-aplikasi bagus di pasaran (read: android market) dan saya penasaran, bagaimana mereka bisa membuat itu. Teknik apa yang dipergunakan. Sering kali, sebelum mencoba melakukan replika fitur-fitur spesifik dari suatu aplikasi, dengan membuatnya sendiri. Buat project baru, buat satu-dua view hanya untuk tujuan meniru fitur tersebut. Kalau sudah berhasil? ya sudah, case close. Kalau tidak berhasil juga, lalu bagaimana?

Nah, disitu indahnya dunia engineering. Kalau kesulitan, tinggal di reverse engineer saja aplikasi tersebut. Dari apk, kembali menjadi file2 resource, kode-kode xml untuk layout, dll. Termasuk juga file2 java yang sudah di ubah menjadi byte-code, kembali menjadi file java yang human readable.

Lalu, caranya bagaimana? ternyata cukup mudah. Yang dibutuhkan, hanya kombinasi apktool, dex2jar, dan jd-gui. Kegunaan dari masing-masing tool tersebut adalah:

  • apktool digunakan untuk mengembalikan file-file resources, kode xml untuk layout, dll menjadi file yang bisa dibaca.
  • dex2jar digunakan untuk mengubah file apk menjadi file jar.
  • jd-gui berguna untuk membaca file jar tersebut ke dalam format *.java.

Lalu, penggunaannya sendiri, bagaimana? Oh, cukup mudah. Kita anggap saja, ketiga aplikasi tersebut belum ada di komputer. Berarti, kita mulai dari proses download. Download masing2 aplikasi, dari situs resminya:

  • apktool: apktool-install-windows-2.2_r01-3.tar.bz2 (untuk proses instalasi di windows) dan apktool1.3.2.tar.bz2 (ini file apktool-nya)
  • dex2jar: dex2jar-0.0.7.9-SNAPSHOT.zip
  • JD-Gui: jd-gui-0.3.3.windows.zip

Kesemua nama file di atas adalah yang terbaru, saat tulisan ini dibuat. Oh iya, kalau anda menggunakan linux, silahkan download file2 yang sesuai. Langkah selanjutnya, ekstrak file2 tersebut ke suatu folder. Setelah itu, pilih APK yang ingin anda pelajari.

Nah, untuk step-step berikutnya, silahkan ikuti langkah berikut:

  1. dex2jar.bat namafile.apk. Proses ini akan menghasilkan file bernama namafile.apk.dex2jar.jar
  2. jd-gui namafile.apk.dex2jar.jar. Aplikasi jd-gui ini akan membuka satu window yang akan menampilkan struktur folder java yang sedang anda cek. Sampai di sini, anda sudah bisa melihat kode-kode java yang ada.

Lho, tunggu sebentar. Lalu, untuk apa pakai apktool, kalau dengan dua aplikasi tersebut sudah bisa melihat kode sumber? Sabar mas. Ingat ya, mengembangkan aplikasi android, memang bisa dengan 100 persen kode. Tanpa menggunakan file resource sama sekali. Tapi… pada sebagian besar aplikasi yang ada, antar muka aplikasi dan juga informasi string, disimpan di dalam file resource ini. Nah, apktool gunanya untuk melihat file-file tersebut. Cara penggunaannya sendiri, sama sederhananya dengan penggunaan dex2jar.bat:

apktool.bat decode namafile.apk direktori_hasil

Bila direktori_hasil tidak ada, maka apktool.bat akan membuatkannya. Tapi, bila ternyata sudah ada maka anda perlu menambahkan opsi --force atau ganti direktori_hasil dengan yang lain. Opsi --force ini digunakan untuk memaksa apktool.bat menimpa apapun isi yang ada didalamnya. Sehingga, perintahnya menjadi:

apktool.bat decode --force namafile.apk direktori_hasil

Bagaimana? berhasil? bagus!. Kalau ternyata belum berhasil, googling saja, apa errornya ;)). Oh iya, saya menuliskan ini sebagai bahan edukasi. Saya tidak menerima tanggung jawab atas penyalahgunaan aplikasi2 di atas oleh orang lain. Saya tidak bertanggung-jawab atas segala kerusakan dan atau kerugian yang ditimbulkan ;).

Author: Arief Bayu Purwanto

Hello, my name is Arief Bayu Purwanto, a 24 years old father of a beautiful daughter. Interested in online programming, linux, games, and reading. Currently working on kapanlagi.com as junior developer. I live in a relatively quite and cool place called Malang. I'm available for some freelance stuff as well as some consulting job. You can see my portofolio for some previous task I've finished and some other information related to my capability. Btw, I'm plurking here.

  • Han

    saya coba gan…

  • Voxioxvox

    masuk di cmd atw gimana?

    dex2jar.bat namafile.apk. Proses ini akan menghasilkan file bernama namafile.apk.dex2jar.jarjd-gui namafile.apk.dex2jar.jar. Aplikasi jd-gui ini akan membuka satu window yang akan menampilkan struktur folder java yang sedang anda cek. Sampai di sini, anda sudah bisa melihat kode-kode java yang ada.

  • Kalau tutorial dengan screenshot itu dibilang lengkap, ya, yang satu itu memang lengkap. Tapi, tutorial yang itu ndak memberi tahu cara extract resources. Ingat, android ndak cuma kode, tapi juga resources2 layout, string, dll.

  • Budihartono_k

    Thank you very much, it’s helpful,

    But how to see the Android total project at Eclipse?

    Thank you,
    Richard Kho

  • gubaw

    kalo mau merubah Jar menjadi Apk gmn ???

  • Sari Muhri

    Selain cara diatas apa masih ada cara lain untuk menggunakan apktool?

  • Arifiantosofian

    Info yang sangat berguna mas…terima kasih

  • hendra uswandy

    GOOOD GAAAN

  • faizal topan

    dex2jar.bat namafile.apk. pada proses ini untuk mendapatkan file namafile.apk.dex2jar.jar
    saya selalu gagal, padahal saya sudah menggunakan dex2jar terbaru (dex-translator-0.0.9.3), apa salahnya ya, disini saya ingin mendapatkan file jar,
    mohon penjelasannya (pada cmd muncul : java is not recognized as an internal or external command, operable program or batch file)

    mohon bantuannya bagi para ahli, thx

    • itu artinya instalasi java anda bermasalah, atau tidak dikenali di sistem. Coba cari cara untuk menambahkan `java` ke environment variable `PATH`

  • trust me, it work :)

  • LORD

    gan kalau untuk meneliti data yg tersimpan di database aplikasi android pake cara ini juga ?