it-swarm-id.com

Bagaimana saya bisa membuka file Java .class dengan cara yang bisa dibaca manusia?

Saya mencoba mencari tahu apa yang dilakukan file kelas applet Java di bawah tenda. Membuka itu dengan Notepad atau Textpad hanya menunjukkan sekelompok gobbledy-gook.

Apakah ada cara untuk merengkuhnya kembali menjadi format yang agak mudah dibaca sehingga saya bisa mencoba mencari tahu apa yang dilakukannya?

  • Lingkungan == Windows w/VS 2008 diinstal.
96
cpuguru

jd-gui adalah dekompiler terbaik saat ini. itu dapat menangani fitur-fitur yang lebih baru di Jawa, dibandingkan dengan JAD yang semakin berdebu.

195
DarenW

Jika Anda tidak keberatan membaca bytecode, javap akan berfungsi dengan baik. Itu bagian dari instalasi JDK standar.

Usage: javap <options> <classes>...

where options include:
   -c                        Disassemble the code
   -classpath <pathlist>     Specify where to find user class files
   -extdirs <dirs>           Override location of installed extensions
   -help                     Print this usage message
   -J<flag>                  Pass <flag> directly to the runtime system
   -l                        Print line number and local variable tables
   -public                   Show only public classes and members
   -protected                Show protected/public classes and members
   -package                  Show package/protected/public classes
                             and members (default)
   -private                  Show all classes and members
   -s                        Print internal type signatures
   -bootclasspath <pathlist> Override location of class files loaded
                             by the bootstrap class loader
   -verbose                  Print stack size, number of locals and args for methods
                             If verifying, print reasons for failure
68
Michael Myers

Anda ingin dekompiler Java, Anda dapat menggunakan alat baris perintah javap untuk melakukan ini. Juga, Java Decompiler HOW-TO menjelaskan bagaimana Anda bisa mendekompilasi file kelas.

7
Drew Frezell

Menggunakan Jad untuk mendekompilasi itu mungkin pilihan terbaik Anda. Kecuali jika kode telah dikaburkan, itu akan menghasilkan hasil yang oke.

2
Rasmus Faber

apa yang Anda cari adalah Java de-compiler. Saya merekomendasikan JAD http://www.kpdus.com/jad.html Ini gratis untuk penggunaan non komersial dan menyelesaikan pekerjaan. 

Catatan: ini tidak akan membuat kode persis sama dengan apa yang ditulis. mis. Anda akan kehilangan komentar dan kemungkinan nama variabel, jadi ini akan menjadi sedikit lebih sulit daripada hanya membaca kode sumber normal. Jika pengembang benar-benar tertutup, mereka juga akan mengaburkan kode mereka, membuatnya lebih sulit untuk dibaca. 

2
David Beleznay

cpuguru, jika applet Anda telah dikompilasi dengan javac 1.3 (atau kurang), opsi terbaik Anda adalah menggunakan Jad.

Sayangnya, JDK terakhir yang didukung oleh JAD 1.5.8 (14 Apr 2001) adalah JDK 1.3.

Jika applet Anda dikompilasi dengan kompiler yang lebih baru, Anda dapat mencoba JD-GUI : dekompiler ini sedang dalam pengembangan, namun demikian, ia menghasilkan sumber Java yang benar, sebagian besar waktu, untuk kelas yang dikompilasi dengan JDK 1.4, 1.5 atau 1.6.

DarenW, terima kasih atas kiriman Anda. JD-GUI belum dekompiler terbaik ... tapi saya sedang mengerjakan :)

2
Emmanuel Dupuy

Jika file kelas yang Anda ingin tinjau adalah open source, Anda tidak harus mendekompilasinya, tetapi melampirkan file sumber langsung ke IDE Anda. dengan begitu, Anda bisa melihat kode beberapa kelas perpustakaan seolah-olah itu milik Anda

1
arturh

Itu kode yang dikompilasi, Anda harus menggunakan dekompiler seperti JAD: http://www.kpdus.com/jad.html

1
cynicalman

Anda perlu menggunakan dekompiler. Yang lain menyarankan JAD, ada opsi lain, JAD adalah yang terbaik.

Saya akan mengulangi komentar bahwa Anda mungkin kehilangan sedikit dibandingkan dengan kode sumber asli. Ini akan terlihat sangat lucu jika kode yang digunakan generik, karena penghapusan.

1
Zac Gochenour

Seperti yang ditunjukkan oleh @MichaelMyers, gunakan 

javap -c <name of Java class file> 

untuk mendapatkan kode Majelis JVM. Anda juga dapat mengarahkan output ke file teks untuk visibilitas yang lebih baik.

javap -c <name of Java class file> > decompiled.txt
1
Nilashish C

jd-gui " http://code.google.com/p/innlab/downloads/detail?name=jd-gui-0.3.3.windows.Zip&can=2&q= " adalah pilihan terbaik dan ramah pengguna untuk mendekompilasi file .class ....

Plugin JAD dan/atau JADclipse Eclipse, pasti.

1
John Gardner

anda juga dapat menggunakan pengurai Java online yang tersedia. Untuk mis. http://www.javadecompilers.com

0
Prachi Sharma

Tidak perlu mendekompilasi Applet.class. Source code Java API publik dilengkapi dengan JDK (jika Anda memilih untuk menginstalnya), dan lebih mudah dibaca daripada bytecode yang di-decompile. Anda dapat menemukan kompresi di src.Zip (terletak di folder instalasi JDK Anda).

0
Arno

Seperti yang disarankan, Anda dapat menggunakan JAD untuk mendekompilasi dan melihat file. Untuk membuatnya lebih mudah dibaca Anda dapat menggunakan plugin JADclipse untuk Eclipse untuk mengintegrasikan JAD langsung ke Eclipse atau menggunakan DJ Java Decompiler yang jauh lebih mudah digunakan daripada baris perintah JAD

0
amitwadhwa

JAD adalah opsi yang sangat baik jika Anda ingin kode Java yang dapat dibaca sebagai hasilnya. Jika Anda benar-benar ingin Menggali bagian dalam format file .class, Anda ingin javap. Ini dibundel dengan JDK dan memungkinkan Anda untuk "mendekompilasi" bytecode heksadesimal menjadi ASCII yang dapat dibaca. Bahasa yang dihasilkannya masih bytecode (tidak seperti Java), tetapi cukup mudah dibaca dan sangat instruktif.

Juga, jika Anda benar-benar ingin, Anda dapat membuka file .class dalam hex editor dan membaca bytecode secara langsung. Hasilnya identik dengan menggunakan javap.

0
Daniel Spiewak

CFR - decompiler Java lain adalah decompiler yang bagus untuk Java modern yang ditulis dalam Java 6.

0
tidbeck