Java Decompiler

Posted by: on May 6, 2007 | 21 Comments

Sebuah Java Decompiler, seringkali diperlukan untuk mengetahui source code suatu binary Java yang diakhiri dengan ekstensi *.class itu. Mungkin untuk mengetahui alur sebuah library yang tidak menyertakan source code-nya, atau juga mungkin untuk mem-bypass fungsi keamanannya hihihi… ;) ) Berbeda dengan program-program yang dikompilasi dengan menggunakan native compiler seperti GCC atau C/C++, kode binary Java dikompilasi hingga tingkat medium (disebut byte code) yang akan di-interpretasikan oleh Java Virtual Machine. Walhasil, proses dekompilasinya akan menghasilkan sebuah source code Java yang benar-benar cantik dan mudah dibaca. Bandingkan dengan hasil dekompilasi program binary yang dikompilasi dengan native compiler, hasil maksimal decompiler adalah bahasa assembler-nya (hiii… takuut).

Saat ini, saya mengandalkan JAD sebagai decompiler yang cepat dan handal. Sebuah tool command-line-based yang cerdas, yang bisa melakukan dekompilasi sebuah source Java dengan nyaris sempurna. Lisensinya juga free. Program ini melakukan dekompilasi sebuah file *.class dan dikembalikan dalam bentuk file *.jad. File ini berisi source code Java dari *.class tersebut.

Antar Muka Grafis

Menggunakan command line, terkadang menyesakkan. Oleh karena itu, ada banyak program-program yang membuat antar muka yang nyaman untuk menjalankan program ini. Tinggal membuka file *.class dengan antar muka tersebut, maka program tersebut memerintahkan JAD untuk mendekompilasi, dan hasilnya langsung dibuka di text editor milik antar muka ini sehingga rasanya, membuka file *.class serasa membuka file teks berisi source code Java saja. Sangat nyaman.

Program antar mukanya, seperti yang di-list oleh homepage JAD, ada cukup banyak. Ada beberapa yang saya coba, di antaranya adalah DJ Java Decompiler, FrontEnd Plus, dan Cavaj Java Decompiler. Dari ketiga tools ini, menurut saya DJ-lah yang paling nyaman. Sayangnya, DJ tidak free dan harus bayar (baca: ngecrack). Untuk Cavaj, saya tak berhasil dalam instalasi sehingga tak bisa berbicara banyak mengenai antar muka ini. Paling masuk akal adalah FrontEnd Plus, ia juga free untuk digunakan. Sayangnya, program ini termasuk program Jadul dan development-nya terhenti di tahun 2001. Jadi tampilannya, sangat jadul dan jelek.

Sebenarnya ada satu lagi yang sangat menarik perhatian. Ia adalah JadClipse. Antar muka ini adalah plugin Eclipse. Jadi, dengan plugin ini, Eclipse memiliki kemampuan tambahan untuk membuka file *.class dengan Java editornya yang sangat hebat (syntax coloring, formatting, folding, dll). Sangat menggiurkan jika Eclipse memiliki fitur seperti ini. Sayangnya, saya tak berhasil melakukan instalasi plugin ini. Meskipun secara teori sudah terinstall dengan baik, namun ia tetap gagal melakukan dekompilasi. File *.class tetap dibuka oleh viewer default Eclipse, yang hanya menyajikan hasil disassembling-nya, bukan decompiling-nya. So sad :( Ada yang bisa bantu saya dengan share pengalaman tentang plugin ini?

Mungkin, kalau nanti ada waktu luang, saya akan membuat plugin sendiri untuk saya sendiri. Saya sangat tertarik dengan fitur ini di Eclipse. :)

21 Comments

  1. ratna
    May 7, 2007

    Kepengen nyoba lih … blum pernah. Hmmm … aku bisa baca dokumentasinya dimana aja? … dll deh yg perlu. Maklum … dulu pernah ada aplikasi yg dah jalan … trus … code terakhirnya ditimpuk orang, krn kerja tim, pake Win CVS kala itu,ada yg commit, dan … yg bekap code terakhir, org2na pd ‘menghilang’ :D . Wkt itu klo ndak salah sih … mengandalkan history yg ada di winCVS, jd bisa balik meski dg perjuangan. Sptnya kok lebih hemat waktu pake ini. So Decompiler sangat dibutuhkan. Btw … .NET ada ndak yah :D .

    Reply
  2. Galih Satria
    May 7, 2007

    #ratna:
    - download aja dulu :)
    - tetap lebih enak ngambil source yang di history na, soalnya kan masih ada remark dan komentar yang berguna. kalau didecompile komentar ini nggak akan muncul
    - Decompiler untuk .NET pasti ada, karena secara konsep, framework ini sama dengan konsep Java.

    Reply
  3. dnial
    May 7, 2007

    Back to track…
    Hihihihi…

    Reply
  4. tukang ketik
    May 7, 2007

    keren!

    Reply
  5. Nilla
    May 7, 2007

    Duh, kayak lg nyimak dosen di kampus! Hihihihi… :P

    Reply
  6. Galih Satria
    May 8, 2007

    #dnial:
    I never come out from my track :P

    #Nilla:
    Wanna come to my class? Go ahead :)

    Reply
  7. kiki
    May 8, 2007

    mas..
    ada gk program supaya file *.class qt gk bisa di decompile atau minimal brantakan bgt hasil decompilenya, seperti dotFuscator yang ada di .NET

    Reply
  8. Galih Satria
    May 8, 2007

    #kiki:
    tentu saja ada. tapi saya belum pernah pakai, jadi belum tahu. tapi, pasti ada kok :)

    Reply
  9. Bobo
    May 14, 2007

    tools decopiler diatas tidak membuka source cod sebenarnya. tetapi hasil compilernya. coba perhatikan deh hasil kompilernya pasti beda ama sorce code aslinya… malah bikin Qta pusing. ada yang tau tools buat baca source code yang sebenarnya ga? tolongin duonks..

    Reply
  10. Galih Satria
    May 15, 2007

    #Bobo:
    Ya yang bener aza kalau ada yang bisa ngembali’in persis dengan komentarnya. itu mah pekerjaan peramal kale.. ;) )

    Reply
  11. andee
    June 23, 2007

    ada ga yang bisa decompile dari extention ex4 dari basicnya c++

    Reply
  12. SuperTrade
    July 25, 2007

    Ada… biaya mulai dari $70 per ex4 tapi tergantung tingkat kesulitan, karena benahin coding agar bisa dibaca itu susah.. dan ada beberapa enkripsi yg perlu dibuka.. kirim email via veematics@yahoo.com

    Reply
  13. chan
    July 26, 2007

    agar file *.class dibuka dengan jadclipse secara otomatis, anda harus mengubah default viewer utk type tsb. di eclipse bisa diset di preference, file association or something, saya lupa. tapi ada kok, saya udah lama pake.

    Reply
  14. romy_usenet
    September 11, 2007

    Memang kode byte java dibuat oleh para perancangx sesederhana mungkin sehingga memudahkan interpreter mengeksekusi instruksi JVM yg sudah dikompilasi(itu gunax biar bisa lebih cpt diekseksekusi dibandingkan dgn bhs interpretasi lainnya),berbeda dengan bahasa mesin intel yg kompleks dgn panjang instruksi yg tidak tetap.makax sama mudah juga mendengkompilasi kode byte java kedalam bentuk source kode.rancangan bahasax yg teratur jg memudahkan proses dekompilasi tsb,tentu saja diperlukan pemahaman tentang pemrograman java spy bisa membaca setiap baris source kode hasil dekompilasi (perancang JAD menganggap pengguna programx adalah programmer yg sudah cukup berpengalaman,makax tdk ditambahkan comment di source).walaupun ada perbedaan dikit dgn source kode asli,secara umum sama aja koq.itu hanyalah perbedaan interpretasi sedikit dari JAD dgn programmer aslinya.klo mengenai dekompilasi dari bahasa mesin asli intel emang susah klo dirubah kembali ke source code,karena selain panjang instruksi yg tidak tetap,juga format yg tidak teratur,dan bnyk instruksi yg harusx tidak perlu.tetapi tetap ada koq dekompiler u/ bhs mesin intel.

    Reply
  15. akmal-PENS-ITS
    November 24, 2007

    Sebelumnya saya minta maaf…karna comentnya ga’ sejalan dg topik nya…
    mas galih aq mo nanya tentang aplikasi database dengan menggunakan java dan database servernya dg Mysql,

    kemaren aq ada ngikutin tutorial yang ada di buku pemerograman GUI Swing Java dengan Netbeans 5,

    ada beberapa permasalahan yg mengganjal hati saya:
    1
    pada contoh program yg membahas tentang pengolahan data base nya,, buku ini menyarankan agar tidak menggunakan properti model default pada komponen jTable, karna memiliki kekurangan jika di pakai untuk koneksi ke data base, yaitu ada kesulitan dalam mengisikan data record ke dalam tabel,
    Apa hal itu benar….?

    2.
    Setelah saya ikuti petunjuk buku itu ternyata program saya juga gak jalan…
    gambaran program yang saya buat itu
    mau nampilin data dari tabel d3_semester1, proses koneksi ke data base nya telah berhasil
    coding nya seperti berikut ini:

    ini class Insert_d3Semester1.java

    /*
    *

    edited by moderator 

    */
    mohon tanggapannya dan bantuannya mas….soalnya saya sdg nyelesaikan proyek akhir saya di PENS-ITS dan terus terang saya blum prnh nangani masalah database dengan java…..

    no hp saya 0852****** (edited by moderator)

    Reply
  16. Galih Satria
    November 24, 2007

    #akmal:
    Maaf Akmal, komentarmu saya edit tanpa mengurangi dari isi. Menurut saya,

    01. Ini tidak benar. Model default tetap bisa digunakan untuk mengisi record, meskipun dengan cara manual. Agar otomatis, subclass-kan default model dengan yang cocok untuk koneksi ke database.

    Reply
  17. edya
    January 28, 2008

    Gimana cara mengompiler ke file jar pakai Dj java compiler

    Reply
  18. ex4decompiler
    September 12, 2008

    untuk ex4 decompiler bisa diliat di sini –> http://ex4decompiler.blogspot.com/

    Reply
  19. Pegasus
    July 29, 2009

    mas, donload JAD di mana? gak dapat nie… :(

    Reply
  20. Co
    November 18, 2010

    saya mau tanya
    hasil .jar yg di decompile oleh ‘java decompiler’ kan bisa dibaca..

    tapi kadang2 ada yang error ketika saya coba jalankan di netbean, file2 yang terbaca bukan nama sebenarnya, keliatannya sudah di ‘rusak’.. itu menurut saya apakah benar ya??

    apa ada juga cara untuk memperbaikinya.. atau memang sengaja dibuat begitu oleh pembuatnya.

    hehe.. terimakasih…

    Reply
  21. nuno
    July 27, 2011

    java… java.. yaa… java…
    i like java… especially awewe west java…
    programnya pake basa sunda.. aliran sundanesse..
    weleh weleh…. gkggkgkkg….

    Reply

Leave a Reply

Switch to our mobile site