แยกซอร์สโค้ดจากไฟล์. jar


172

มีวิธีแยกซอร์สโค้ดจากไฟล์. jar (Java ME) ที่รันได้หรือไม่?


3
แต่โปรดทราบว่าการทำเช่นนี้อาจผิดกฎหมายขึ้นอยู่กับว่าคุณเป็นเจ้าของลิขสิทธิ์ขวดประเทศที่คุณอาศัยอยู่และวัตถุประสงค์ในการทำมัน
ริชาร์ด

2
หากเป็นโอเพ่นซอร์สให้ขอซอร์สจากผู้พัฒนา มิฉะนั้น "การปฏิบัติตาม EULA ใด ๆ จะได้รับการชื่นชม"
Andrew Thompson

ตรวจสอบ decompiler ของ procyon ดาวน์โหลด jar เพื่อถอดรหัสไฟล์ jar ฉันได้ทำตามขั้นตอนด้านล่างแล้ว
nitin angadi

คำตอบ:


146

ใช้JD GUI เปิดแอปพลิเคชั่นแล้วลากและวางไฟล์ JAR ของคุณลงไป


6
มีวิธีการรับซอร์สจาก. jar โดยไม่ใช้ JD GUI หรือไม่
Zulqurnain Jutt

@ZulqurnainJutt ใช้ตามที่กล่าวไว้ในคำตอบของ @ elachancejar xf filename.jar
Arvind Sridharan

46

คุณสามารถแตกไฟล์ jar ด้วยคำสั่ง:

jar xf filename.jar

ข้อมูลอ้างอิง: เอกสาร JAR ของ Oracle


18
นี่เทียบเท่ากับการเปลี่ยนชื่อfilename.jarเป็นfilename.jar.zipและเพียงแค่ทำการขยายไฟล์
Mathias Bynens

27
สิ่งนี้ไม่ได้ดึงซอร์สโค้ด มันแยกรหัสที่รวบรวมมา
0xcaff

5
@caffinatedmonkey มันจะดึงซอร์สโค้ดเมื่อ jar มีไฟล์ java เช่นขวดที่มีชื่อมักลงท้ายด้วย "-sources" แน่นอนว่ามันจะแตกไฟล์. class เท่านั้นเมื่อ jar ไม่มีไฟล์ต้นฉบับจาวา
edwardmp

37

ฉันเชื่อว่าสิ่งนี้สามารถทำได้ง่ายมาก คุณสามารถแตกไฟล์ต้นฉบับ (ไฟล์ Java) ของไฟล์ jar ลงในไฟล์ zip

ขั้นตอนในการรับซอร์สของไฟล์ jar เป็นไฟล์ zip:

  1. ดาวน์โหลด JAD จากhttp://techieme.in/resources-needed/และบันทึกไว้ที่
    ตำแหน่งใด ๆในระบบของคุณ
  2. ลากและวางขวดที่คุณต้องการแหล่งที่มาบน JAD 3 JAD UI จะเปิดพร้อมกับโครงสร้างแพ็คเกจทั้งหมดในรูปแบบทรี
  3. คลิกที่เมนูไฟล์และเลือกแหล่งบันทึก jar
  4. มันจะบันทึกแหล่งที่มาเป็น zip ที่มีชื่อเดียวกับ jar

หวังว่านี่จะช่วยได้

ลิงก์นี้ใช้งานไม่ได้เนื่องจากเหตุผลบางประการดังนั้นให้เพิ่มลิงก์จากที่ซึ่งคุณสามารถดาวน์โหลดJDGUI ได้


1
@Nitesh ... ฉันจะโพสต์ลิงก์ที่โฮสต์ในเว็บไซต์ของฉัน ... โปรดดาวน์โหลดจากที่นั่น
dharam

4
เวอร์ชั่นในลิงค์ techieme นั้นทำงานได้อย่างสวยงามขอบคุณ!
DerStrom8

29

JAR ของคุณอาจมีแหล่งที่มาและ javadoc ซึ่งในกรณีนี้คุณสามารถใช้jar xf my.jarเพื่อแยกไฟล์ได้

มิฉะนั้นคุณสามารถใช้ decompiler ตามที่ระบุไว้ในคำตอบของ adarshr:

ใช้JD GUI เปิดแอปพลิเคชั่นแล้วลากและวางไฟล์ JAR ของคุณลงไป


21
โปรดทราบว่าไฟล์. jar เป็นไฟล์. zip จริงและสามารถเปิดได้ด้วยเครื่องมือ ZIP ใด ๆ
Chris Nava

11

ฉันรู้ว่ามันเป็นคำถามเก่า ๆ แต่ก็คิดว่ามันจะช่วยใครซักคน

1) ไปที่โฟลเดอร์ไฟล์ jar ของคุณ

2) เปลี่ยนเป็นส่วนขยายเป็น. zip

3) คุณทำได้ดีและสามารถดึงออกมาได้อย่างง่ายดายเพียงคลิกสองครั้ง

หมายเหตุ:ฉันทดสอบสิ่งนี้ใน MAC มันใช้งานได้ หวังว่ามันจะทำงานบน windows ด้วย


2
@JCodex ฉันกำลังทำโครงการวิจัยเกี่ยวกับเครื่องมือวิเคราะห์ความคิดเห็น "ช่องมองภาพ" และโถของมันมีทั้งไฟล์จาวาและคลาส ดังนั้นความคิดเห็นของคุณไม่เป็นความจริง 100% ฉันรู้ว่ามันมักจะมีเพียง. class แต่ไม่ในกรณีนี้อย่างน้อย
wired00

2
โซลูชันของคุณจะแตกไฟล์. class ไม่ใช่รหัสแหล่งที่มา
Carlos Sá

Seems JD-GUI เป็นเครื่องมือหลายแพลตฟอร์มที่ถอดรหัสรหัสได้จริงและแสดงซอร์สโค้ดสำหรับคลาสในแพ็คเกจทั้งหมด ฉันลองแล้วจะได้ซอร์สโค้ดเป็นวินาทีใน MacOS ฉันติดตั้ง Java 8 แล้ว คุณสามารถหาได้จากjd.benow.caไม่แน่ใจว่าใช้ได้กับโครงการขนาดใหญ่หรือไม่
Carlos Sá

1
ต้องการซอร์สโค้ดซึ่งไม่ได้จัดเตรียมตามวิธีที่คุณอธิบาย
chiragchavda.ks

3

ทำสิ่งต่อไปนี้บนกล่อง linux ของคุณโดยที่ java ทำงาน (ถ้าคุณชอบวิธีการทำงานของเทอร์มินัล)

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 .

หมายเหตุ : ตามที่ @Richard ให้ความเห็นว่า "นี่อาจผิดกฎหมายทั้งนี้ขึ้นอยู่กับว่าคุณเป็นเจ้าของลิขสิทธิ์ขวดโหลประเทศที่คุณอาศัยอยู่และจุดประสงค์ในการทำ"


สำหรับไฟล์คลาสเฉพาะคุณสามารถทำแพ็กเกจ java -jar procyon-decompiler-0.5.36.jar / of / the / java / class.class> className.java
nitin angadi

0

AndroChef Java Decompiler สร้างรหัสที่ดีมากที่คุณสามารถใช้โดยตรงในโครงการของคุณ ...


-2

เครื่องมือด้านบนแตกขวดออก นอกจากนี้ยังมีเครื่องมือและคำสั่งอื่น ๆ เพื่อแยก jar แต่ AFAIK คุณไม่สามารถรับรหัส java ในกรณีที่รหัสถูกทำให้งงงวย


7
คำตอบที่ดีที่สุด
fnc12

-6

สมมติว่าไฟล์ JAR ของคุณอยู่ใน C: \ Documents และ Settings \ mmeher \ Desktop \ jar และชื่อไฟล์ JAR คือ xx.jar จากนั้นเขียนคำสั่งสองคำสั่งด้านล่างในพรอมต์คำสั่ง:

1> cd C: \ Documents and Settings \ mmeher \ Desktop \ jar

2> jar xf xx.jar


-6

-Covert .jar ไฟล์เป็น. zip (ใน windows เพียงแค่เปลี่ยนนามสกุล) -Uzip โฟลเดอร์. zip - คุณจะได้รับไฟล์. java สมบูรณ์


3
ในฐานะที่เป็นโน้ตเล็ก ๆ เกี่ยวกับวิธีนี้ ... มันเป็นความจริงที่ไฟล์ jar เป็นไฟล์ zip แฟนซี อย่างไรก็ตามการคลายซิปในขวดจะทำให้ไฟล์ * .class เป็นไฟล์ java ที่ "รวบรวม" เป็นส่วนใหญ่ เป็นไปได้ที่จะ "แยกไฟล์" คลาสเป็นไฟล์ java ปกติ ฟังก์ชั่นนี้รวมอยู่ใน IDEs มากมาย
Daniel Hernandez

นี่จะปลดล็อกไฟล์คลาส
Harshil
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.