Program apa yang dapat saya gunakan untuk mendekompilasi file kelas? Apakah saya benar-benar mendapatkan kode Java, atau hanya kode perakitan JVM?
Pada pertanyaan kinerja Java di situs ini saya sering melihat tanggapan dari orang-orang yang telah "mendekompilasi" file kelas Java untuk melihat bagaimana kompiler mengoptimalkan hal-hal tertentu.
java
decompiler
Tidur
sumber
sumber
Jawaban:
Pembaruan Februari 2016:
www.javadecompilers.com mencantumkan JAD sebagai:
Jadi jarak tempuh Anda mungkin berbeda dengan jdk terbaru (7, 8).
Situs yang sama mencantumkan alat lain.
Dan javadecompiler, seperti dicatat oleh Salvador Valencia dalam komentar (September 2017), menawarkan SaaS tempat Anda mengunggah
.class
file ke cloud dan mengembalikan kode yang terurai.Jawaban asli: Oktober 2008
Java Decompiler ( Decompiler Fast Java yang lain) memiliki:
Ia bekerja dengan kompiler dari JDK 1.1.8 hingga JDK 1.7.0, dan lainnya ( Jikes , JRockit , dll.).
Ini fitur versi demo online langsung yang sebenarnya berfungsi penuh! Anda bisa menjatuhkan file jar pada halaman dan melihat kode sumber yang di-decompile tanpa menginstal apa pun.
sumber
Ada beberapa dekompiler di luar sana ... Hasil pencarian cepat:
Dan masih banyak lagi.
Ini menghasilkan kode Java. Java hadir dengan sesuatu yang memungkinkan Anda melihat kode byte JVM ( javap ).
sumber
Untuk melihat kode sumber Java, periksa beberapa dekompiler. Pergi mencari jad .
Jika Anda ingin melihat bytecodes, cukup gunakan javap yang datang dengan JDK.
sumber
Saya mencoba beberapa, dan Procyon tampaknya bekerja yang terbaik untuk saya. Itu sedang dalam pengembangan aktif dan mendukung banyak fitur dari versi terbaru Java.
Inilah yang saya coba:
-skip
flag baris perintah agar tidak berhenti pada kesalahan. Secara aktif dikembangkan, dan cukup menarik ditulis dalam Python.sumber
IGNORE_EXCEPTIONS
masalahnya sekarang telah diubah menjadi bendera baris perintah-skip
.Saya menggunakan JAD Decompiler .
Ada plugin Eclipse untuknya, jadeclipse . Cukup bagus.
sumber
Procyon termasuk dekompiler. Itu FOSS.
sumber
Jelaga adalah pilihan untuk kode Java yang lebih baru. Setidaknya itu memiliki keuntungan masih dipertahankan baru-baru ini ...
Juga, Java Decompiler adalah dekompiler dengan GUI yang berdiri sendiri dan integrasi Eclipse.
Terakhir, Jdec belum disebutkan, meskipun itu tidak dipoles seperti opsi lainnya.
sumber
JD-GUI sangat bagus. Anda bisa membuka file JAR dan menelusuri kode seolah-olah Anda sedang mengerjakan IDE. Barang bagus.
sumber
Berikut daftar dekompiler per Feb 2015:
Procyon , open-source, https://bitbucket.org/mstrobel/procyon/wiki/Java%20Decompiler
CFR , gratis, tidak ada kode sumber yang tersedia, http://www.benf.org/other/cfr/
JD , gratis untuk penggunaan non-komersial saja, http://jd.benow.ca/
Fernflower , open-source, https://github.com/fesh0r/fernflower ,
JAD - diberikan di sini hanya karena alasan historis. Gratis, tidak ada kode sumber yang tersedia, http://varaneckas.com/jad/ Sudah kedaluwarsa, tidak didukung, dan tidak dapat didekompilasi dengan benar pada Java 5 dan yang lebih baru.
Anda dapat menguji dekompiler yang disebutkan di atas secara online, tidak diperlukan instalasi dan membuat pilihan berpendidikan Anda sendiri.
Java decompiler di cloud: http://www.javadecompilers.com/
sumber
Ada beberapa program yang bisa Anda gunakan. Anda akan mendapatkan kode Java yang sebenarnya, tetapi kadang-kadang kode tersebut telah dikaburkan sehingga metode diberi nama dengan satu huruf atau angka atau campuran acak huruf dan angka.
DJ Decompiler Mocha
sumber
Sebagian besar pengurai untuk Java didasarkan pada JAD . Ini adalah alat yang hebat, tetapi sayangnya belum diperbarui untuk sementara waktu dan tidak menangani kelas Java 1.5+ dengan sangat baik. Saya belum melihat alat yang akan menangani dengan benar 1,5+ kelas.
sumber
Lihatlah cavaj .
sumber
jad
bawahnya.Semua tautan JAD yang terdaftar sejauh ini tampaknya rusak, jadi saya menemukan situs ini. Berfungsi bagus (untuk Linux, setidaknya)! Di Ubuntu 11.10 saya harus mengunduh yang statis untuk alasan apa pun.
http://www.varaneckas.com/jad
sumber
JAD adalah yang berfungsi dan sederhana.
Juga, jika Anda hanya ingin melihat metodenya, gunakan javap.
sumber
Jika Anda ingin melihat bagaimana kompiler Java melakukan hal-hal tertentu, Anda tidak ingin dekompilasi, Anda ingin pembongkaran. Dekompilasi melibatkan transformasi bytecode menjadi sumber Java, yang berarti bahwa banyak informasi tingkat rendah hilang, dan jika Anda bertanya-tanya tentang optimasi kompiler, ini mungkin informasi yang sangat Anda minati.
Lagi pula, kebetulan saya telah menulis disassembler Java open source . Tidak seperti Javap, ini bekerja bahkan pada kelas yang sangat patologis, sehingga Anda dapat melihat apa yang dilakukan alat kebingungan untuk kelas Anda juga. Itu juga dapat melakukan dekompilasi, meskipun saya tidak akan merekomendasikannya.
sumber
JAD tidak bekerja untuk saya (masalah Ubuntu 11.10) jadi saya telah bergerak maju dan menghirup JODO . Setidaknya memiliki kode sumber Java Terbuka dan mampu mendekompilasi .class saya dengan benar.
Saya sarankan untuk memeriksa cabang 'cabang / generik' terlebih dahulu. Batangnya tidak stabil.
sumber
Pada platform IntelliJ IDEA Anda dapat menggunakan Plugin Java Decompiler IntelliJ . Ini memungkinkan Anda untuk menampilkan semua sumber Java selama proses debugging Anda, bahkan jika Anda tidak memiliki semuanya. Ini didasarkan pada alat JD-GUI yang terkenal .
sumber
Dengan AndroChef Java Decompiler Anda dapat mendekompilasi file apk, dex, jar, dan java class. Sederhana dan mudah. AndroChef JD didasarkan pada FernFlower . Anda dapat mengevaluasinya dalam 10 penggunaan gratis.
sumber
Untuk OSX saya sarankan: jarzilla atau JD-GUI
Keduanya memungkinkan Anda melihat toples, perang, dll. file konten dan mendekompilasi semua file kelas di dalamnya.
Jarzilla: https://code.google.com/p/jarzilla/
JD-GUI: http://jd.benow.ca/
sumber