it-swarm-tr.com

Java .class dosyalarını insan tarafından okunabilir bir şekilde nasıl açabilirim?

Bir Java uygulamasının sınıf dosyasının kaputun altında ne yaptığını anlamaya çalışıyorum. Not Defteri veya Textpad ile açmak sadece gobbledy-gook bir demet gösterir.

Ne okuduğunu bilmek için biraz okunabilir bir formata çevirmenin bir yolu var mı?

  • Çevre == Windows w/VS 2008 yüklü.
96
cpuguru

jd-gui , şu anda en iyi kod çözücüdür. Java'daki JAD ile karşılaştırıldığında yeni özelliklerin üstesinden gelebilir.

195
DarenW

Bayt kodunu okurken sakıncası yoksa javap iyi çalışmalıdır. Standart JDK kurulumunun bir parçası.

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

Bir Java decompiler istiyorsanız, bunu yapmak için javap komut satırı aracını kullanabilirsiniz. Ayrıca, Java Decompiler NASIL YAPILABİLİR , bir sınıf dosyasını nasıl açabileceğinizi açıklar.

7
Drew Frezell

Jad komutunu kullanmak, muhtemelen en iyi seçeneğinizdir. Kod gizlenmediyse, iyi bir sonuç verecektir.

2
Rasmus Faber

aradığınız bir Java de-compiler. JAD tavsiye ederim http://www.kpdus.com/jad.html Ticari olmayan kullanım için ücretsizdir ve işi halleder. 

Not: Bu, kodu tam olarak yazılanlarla aynı yapmayacaktır. yani, yorumlarınızı ve muhtemelen değişken isimlerinizi kaybedeceksiniz, bu yüzden normal kaynak kodunu okumaktan biraz daha zor olacak. Eğer geliştirici gerçekten gizliyse, kodlarını da gizlemiş olacak, bu da okumasını zorlaştıracaktır. 

2
David Beleznay

cpuguru, uygulamanız javac 1.3 (veya daha az) ile derlenmişse, en iyi seçeneğiniz Jad kullanmaktır.

Ne yazık ki, JAD 1.5.8 (14 Nis 2001) tarafından desteklenen son JDK, JDK 1.3'tür.

Uygulamanız daha yeni bir derleyici ile derlendiyse, JD-GUI : deneyi deneyebilirsiniz, ancak yine de, JDK'lar 1.4, 1.5 ile derlenen sınıflar için çoğu zaman doğru Java kaynaklarını oluşturur veya 1.6.

DarenW, göreviniz için teşekkür ederim. JD-GUI, henüz en iyi decompiler değil ... ama üzerinde çalışıyorum :)

2
Emmanuel Dupuy

Bakmak istediğiniz sınıf dosyası açık kaynak ise, onu açmamalısınız, bunun yerine kaynak dosyaları doğrudan IDE'nize ekleyin. Bu şekilde, bazı kütüphane sınıflarının kodlarını kendi şifrenizmiş gibi görüntüleyebilirsiniz.

1
arturh

Bu derlenmiş kod, JAD gibi bir kod çözücü kullanmanız gerekecek: http://www.kpdus.com/jad.html

1
cynicalman

Bir decompiler kullanmanız gerekir. Diğerleri JAD'i önerdi, başka seçenekler de var, JAD en iyisi.

Orijinal kaynak koduna kıyasla biraz kaybedebileceğiniz yorumları yankılanacağım. Kod, silme nedeniyle jenerik kullanıyorsa, özellikle komik görünecek.

1
Zac Gochenour

@MichaelMyers tarafından belirtildiği gibi, kullanın 

javap -c <name of Java class file> 

jVM Assembly kodunu almak için. Daha iyi görünürlük için çıktıyı bir metin dosyasına da yönlendirebilirsiniz.

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= " en iyi ve kullanıcı dostu seçenek .class dosyasını açmak için ....

JAD ve/veya JADclipse Eclipse eklentisi, elbette.

1
John Gardner

ayrıca mevcut çevrimiçi Java kod çözücülerini de kullanabilirsiniz. Örneğin http://www.javadecompilers.com

0
Prachi Sharma

Applet.class dosyasını açmanıza gerek yoktur. Genel Java API sınıfları kaynak kodu JDK ile birlikte gelir (eğer yüklemeyi tercih ederseniz) ve ayrı ayrı bytecode'dan daha iyi okunur. Sıkıştırılmış bulabilirsiniz src.Zip (JDK kurulum klasörünüzde bulunur).

0
Arno

Önerildiği gibi, JAD'yi sıkıştırmak ve dosyaları görüntülemek için kullanabilirsiniz. Okumayı kolaylaştırmak için, JAD'yi doğrudan Eclipse'e entegre etmek üzere Eclipse için JADclipse eklentisini kullanabilir veya JAD komut satırından çok daha kolay olan DJ Java Decompiler kullanabilirsiniz

0
amitwadhwa

JAD, sonuç olarak okunabilir Java kodu almak istiyorsanız mükemmel bir seçenektir. Eğer gerçekten .class dosya formatının içindekilerine girmek istiyorsanız, javap öğesini isteyeceksiniz. JDK ile birlikte gelir ve onaltılık bayt kodunu "okunabilir ASCII'ye" eklemenizi sağlar. Ürettiği dil hala bytecode (Java gibi bir şey değil), ancak oldukça okunaklı ve son derece öğretici.

Ayrıca, eğer gerçekten istiyorsanız, herhangi bir .class dosyasını hex editöründe açabilir ve bytecode'u doğrudan okuyabilirsiniz. Sonuç javap kullanmakla aynıdır.

0
Daniel Spiewak

CFR - başka bir Java kod çözücü , Java 6 ile yazılmış modern Java için harika bir kod çözücüdür.

0
tidbeck