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ı?
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.
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
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.
Jad komutunu kullanmak, muhtemelen en iyi seçeneğinizdir. Kod gizlenmediyse, iyi bir sonuç verecektir.
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.
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 :)
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.
Bu derlenmiş kod, JAD gibi bir kod çözücü kullanmanız gerekecek: http://www.kpdus.com/jad.html
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.
@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
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.
ayrıca mevcut çevrimiçi Java kod çözücülerini de kullanabilirsiniz. Örneğin http://www.javadecompilers.com
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).
Ö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
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.
CFR - başka bir Java kod çözücü , Java 6 ile yazılmış modern Java için harika bir kod çözücüdür.