.Jar dosyasından kaynak kodu ayıklayın


172

Kaynak kodu yürütülebilir bir .jar dosyasından (Java ME) ayıklamanın bir yolu var mı?


3
Ancak, kavanozun telif hakkına, yaşadığınız ülkeye ve bunu yapma amacınıza bağlı olarak bunu yapmanın yasadışı olabileceğini unutmayın.
Richard

2
Açık kaynaksa, geliştiriciden kaynak alın. Aksi takdirde "EULA ile her türlü uyum takdir edilecektir".
Andrew Thompson

Procyon ayrıştırıcısını kontrol edin. Kavanoz dosyalarını decompile etmek için kavanozunu indirin. Aşağıdaki adımları
attım

Yanıtlar:


146

JD GUI kullanın . Uygulamayı açın, JAR dosyanızı sürükleyip bırakın.


6
GUI olmadan .jar kaynak kodu almanın bir yolu var mı?
Zulqurnain Jutt

@ Elachance'in cevabında belirtildiği gibi @ZulqurnainJutt kullanımıjar xf filename.jar
Arvind Sridharan

46

Şu komutla bir jar dosyası ayıklayabilirsiniz:

jar xf filename.jar

Referanslar: Oracle'ın JAR belgeleri


18
Bu adlandırma eşdeğerdir filename.jariçin filename.jar.zipsadece Ayıklama sonra ve.
Mathias Bynens

27
Bu, kaynak kodunu çıkarmaz. Derlenmiş kaynak kodunu ayıklar.
0xcaff

5
@caffinatedmonkey jar, java dosyaları içerdiğinde kaynak kodunu çıkarır; örneğin, genellikle "-sources" ile biten isimleri olan kavanozlar. Gerçekten sadece jar herhangi bir java kaynak dosyası içermiyorsa .class dosyalarını ayıklar.
edwardmp

37

Bunun çok kolay yapılabileceğine inanıyorum. Bir jar dosyasının kaynak dosyalarını (Java dosyaları) her zaman bir zip dosyasına ayıklayabilirsiniz.

Bir jar dosyasının kaynaklarını zip olarak alma adımları:

  1. Http://techieme.in/resources-needed/ adresinden JAD'i indirin ve
    sisteminizdeki herhangi bir yere kaydedin.
  2. JAD'de kaynaklarını istediğiniz kavanozu sürükleyip bırakın. 3 JAD UI tüm paket yapısıyla birlikte ağaç formatında açılacaktır.
  3. Dosya menüsünü tıklayın ve kavanoz kaynaklarını kaydet'i seçin.
  4. Kaynakları kavanoz ile aynı ada sahip bir zip olarak kaydedecektir.

Bu yardımcı olur umarım.

Bağlantı bazı nedenlerden dolayı öldü, bu yüzden JDGUI'yi indirebileceğiniz yerden bağlantı ekleyin


1
@Nitesh ... Web sitemde barındırılan bağlantıyı paylaşacağım ... lütfen oradan indirin
dharam

4
Techieme bağlantısındaki sürüm güzel çalışıyor, teşekkür ederim!
DerStrom8

29

JAR'ınız kaynak ve javadoc içerebilir, bu durumda jar xf my.jarbunları çıkarmak için kullanabilirsiniz .

Aksi takdirde adarshr'ın cevabında belirtildiği gibi bir dekomperi kullanabilirsiniz:

JD GUI kullanın . Uygulamayı açın, JAR dosyanızı sürükleyip bırakın.


21
.Jar dosyalarının aslında .zip dosyaları olduğunu ve herhangi bir ZIP aracıyla açılabileceğini unutmayın.
Chris Nava

11

Eski bir soru olduğunu biliyorum Hala birine yardım edeceğini düşündüm

1) Jar dosyanızın klasörüne gidin.

2) uzantısını .zip olarak değiştirin.

3) Gitmek için iyi ve sadece çift tıklayarak kolayca ayıklayabilirsiniz.

Not: Bunu MAC'de test ettim, işe yarıyor. Umarım pencerelerde de çalışır.


2
@JCodex, duygu analiz aracı "görüş bulucu" üzerinde bir araştırma projesi yapıyorum ve onun kavanoz gerçekten hem java AND sınıfı dosyaları içeriyor. bu nedenle yorumunuz% 100 doğru değil. Genellikle sadece .class içerdiğini biliyorum ama bu durumda en azından değil
wired00

2
Çözümünüz kaynak kodu değil, yalnızca .class dosyalarını ayıklar.
Carlos Sá

JD-GUI, aslında kodu çözen ve tüm paketlerdeki sınıflar için kaynak kodunu gösteren çok platformlu bir araçtır. Denedim ve MacOS'ta bir saniyede kaynak kodunu alabilirim. Java 8 yüklü. Jd.benow.ca adresinden edinebilirsiniz . Büyük projeler için işe yarayıp yaramadığından emin değilsiniz .
Carlos Sá

1
açıkladığınız şekilde sağlanmayan kaynak koduna ihtiyacınız var
chiragchavda.ks

3

Java'nın çalıştığı linux kutunuzda aşağıdakileri yapın (eğer bir şeyleri yapmak için terminal yolunu seviyorsanız)

cd ~
mkdir decompiled_code && cd decompiled_code
wget https://bitbucket.org/mstrobel/procyon/downloads/procyon-decompiler-0.5.36.jar
java -jar procyon-decompiler-0.5.36.jar /Path/to/your/jar -o .

NOT : @Richard'ın yorumladığı gibi "kavanozun telif hakkına, yaşadığınız ülkeye ve bunu yapma amacınıza bağlı olarak bu yasa dışı olabilir."


Belirli bir sınıf dosyası için java -jar procyon-decompiler-0.5.36.jar paketini / / / java / class.class> className.java
nitin angadi yapabilirsiniz

0

AndroChef Java Decompiler doğrudan projelerinizde kullanabileceğiniz çok iyi bir kod üretir ...


-2

Yukarıdaki aletler kavanozu çıkarır. Ayrıca kavanozu çıkarmak için başka araçlar ve komutlar da vardır. Ancak AFAIK, kodun gizlenmesi durumunda java kodunu alamazsınız.


7
En büyük cevap
fnc12

-6

JAR dosyanızın C: \ Documents and Settings \ mmeher \ Desktop \ jar dizininde olduğunu ve JAR dosya adının xx.jar olduğunu varsayalım, komut istemine aşağıdaki iki komutu yazın:

1> cd C: \ Belgeler ve Ayarlar \ mmeher \ Desktop \ jar

2> kavanoz xf xx.jar


-6

-Covert .jar dosyasını .zip'e dönüştürün (Windows'ta sadece uzantıyı değiştirin)-.zip klasörünü açın. -Java dosyalarını tamamlayacaksınız


3
Bu yöntemle ilgili küçük bir not olarak ... Jar dosyalarının süslü zip dosyaları olduğu doğrudur. Ancak, bir kavanozun sıkıştırılması büyük olasılıkla * .class dosyaları, yani "derlenmiş" java dosyaları verecektir. Sınıf dosyalarını normal java dosyalarına "decompile" etmek mümkündür. Bu işlevsellik birçok IDE'ye dahildir
Daniel Hernandez

bu sadece sınıf dosyalarının kilidini açacak
Harshil
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.