Có ai biết về một trình dịch ngược miễn phí có thể dịch ngược toàn bộ tệp Jar thay vì một lớp không? Tôi có một vấn đề với các lớp con như tên $ 1. class name $ 2. class name. Class
Có ai biết về một trình dịch ngược miễn phí có thể dịch ngược toàn bộ tệp Jar thay vì một lớp không? Tôi có một vấn đề với các lớp con như tên $ 1. class name $ 2. class name. Class
Câu trả lời:
2009: JavaDecompiler có thể thực hiện tốt công việc với jar: kể từ 0.2.5, Tất cả các tệp, trong các tệp JAR, được hiển thị.
Xem thêm câu hỏi "Làm thế nào để tôi dịch ngược các tệp lớp Java?" .
JD-Eclipse dường như không thay đổi kể từ cuối năm 2009 (xem Thay đổi ).
Vì vậy, sự tích hợp của nó với Eclipse mới nhất (3.8, 4.2+) có thể có vấn đề.
JD-Core được tích cực duy trì.
Cả hai đều là kết quả của công việc tuyệt vời của (người dùng SO) Emmanuel Dupuy .
2018: Một lựa chọn hiện đại hơn, được đề cập trong các bình luận của David Kennedy Araujo :
JetBrains / intellij-cộng đồng / plugin / java-dịch ngược / động cơ
Fernflower là trình dịch ngược phân tích thực sự hoạt động đầu tiên cho Java và có lẽ là ngôn ngữ lập trình cấp cao nói chung.
java -jar fernflower.jar [-<option>=<value>]* [<source>]+ <destination> java -jar fernflower.jar -hes=0 -hdc=0 c:\Temp\binary\ -e=c:\Java\rt.jar c:\Temp\source\
Xem thêm Cách dịch ngược sang các tệp java ý tưởng intellij cho một lệnh làm việc với IntelliJ IDEA gần đây.
Trước hết, đáng ghi nhớ rằng tất cả các tệp lưu trữ Java ( .jar
/ .war
/ etc ...) về cơ bản chỉ là .zip
các tệp ưa thích , với một vài biểu hiện và siêu dữ liệu được thêm vào.
Thứ hai, để giải quyết vấn đề này, cá nhân tôi sử dụng một số công cụ xử lý vấn đề này ở tất cả các cấp độ:
.class
tệpjar
s. Rất đáng để thử.Ưu điểm của tất cả những điều đã nói ở trên là tôi không cần phải nắm giữ bất kỳ công cụ bên ngoài nào khác làm tắc nghẽn môi trường làm việc của tôi. Mọi thứ tôi cần từ một trong những tệp đó có thể được xử lý bên trong IDE của tôi hoặc khác với các tệp khác nguyên bản.
Nếu bạn có cả bash shell và jad:
JAR=(your jar file name)
unzip -d $JAR.tmp $JAR
pushd $JAR.tmp
for f in `find . -name '*.class'`; do
jad -d $(dirname $f) -s java -lnc $f
done
popd
Tôi có thể là một chút, rất nhỏ với điều đó, nhưng nó sẽ hoạt động ít nhiều như quảng cáo. Bạn nên kết thúc với việc $JAR.tmp
chứa các tệp dịch ngược của bạn.
javap
trong cấu trúc vòng lặp cơ bản này và nó hoạt động với tôi.
Tôi đã có thành công hợp lý với một công cụ có tên (bực bội) " JD: Java Decompiler ".
Tôi đã tìm thấy nó tốt hơn hầu hết các trình dịch ngược khi xử lý các lớp được biên dịch cho Java 5 trở lên . Thật không may, nó vẫn có thể có một số trục trặc trong đó JAD thường sẽ thành công.
Cái gì đó như:
jar -xf foo.jar && find . -iname "*.class" | xargs /opt/local/bin/jad -r
có lẽ?
Chèn phần sau vào decompile.jar.sh
# Usage: decompile.jar.sh some.jar [-d]
# clean target folders
function clean_target {
rm -rf $unjar $src $jad_log
}
# clean all debug stuff
function clean_stuff {
rm -rf $unjar $jad_log
}
# the main function
function work {
jar=$1
unjar=`basename $jar.unjar`
src=`basename $jar.src`
jad_log=jad.log
clean_target
unzip -q $jar -d $unjar
jad -d $src -ff -r -lnc -o -s java $unjar/**/*.class > $jad_log 2>&1
if [ ! $debug ]; then
clean_stuff
fi
if [ -d $src ]
then
echo "$jar has been decompiled to $src"
else
echo "Got some problems check output or run in debug mode"
fi
}
function usage {
echo "This script extract and decompile JAR file"
echo "Usage: $0 some.jar [-d]"
echo " where: some.jar is the target to decompile"
echo " use -d for debug mode"
}
# check params
if [ -n "$1" ]
then
if [ "$2" == "-d" ]; then
debug=true
set -x
fi
work $1
else
usage
fi
Sẵn sàng để sử dụng, chỉ cần gõ dj your.jar
và bạn sẽ nhận được your.jar.src
thư mục với các nguồn. Sử dụng -d
tùy chọn cho chế độ gỡ lỗi.
Bạn giải nén nó và sau đó sử dụng jad chống lại dir.
Lưu ý: Giải pháp này chỉ hoạt động cho người dùng Mac và * nix.
Tôi cũng đã cố gắng tìm Jad không có may mắn. Giải pháp nhanh chóng của tôi là tải xuống MacJad có chứa jad. Khi bạn đã tải xuống, bạn có thể tìm thấy jad trong [where-you-download-macjad] / MacJAD / Nội dung / Tài nguyên / jad.