Jakiego programu mogę użyć do dekompilacji pliku klasy? Czy rzeczywiście otrzymam kod Java, czy to tylko kod asemblera JVM?
Na pytania dotyczące wydajności Java na tej stronie często widzę odpowiedzi osób, które „zdekompilowały” plik klasy Java, aby zobaczyć, w jaki sposób kompilator optymalizuje pewne rzeczy.
java
decompiler
Wyrko
źródło
źródło
Odpowiedzi:
Aktualizacja z lutego 2016 r .:
www.javadecompilers.com wymienia JAD jako:
Twój przebieg może się różnić w zależności od najnowszego jdk (7, 8).
Ta sama witryna zawiera listę innych narzędzi.
A javadecompiler, jak zauważył Salvador Valencia w komentarzach (wrzesień 2017 r.), Oferuje SaaS, w którym przesyłasz
.class
plik do chmury i zwraca on zdekompilowany kod.Oryginalna odpowiedź: październik 2008 r
Dekompilator Java (jeszcze inny szybki dekompilator Java) ma:
Działa z kompilatorami od JDK 1.1.8 do JDK 1.7.0 i innymi ( Jikes , JRockit itp.).
Zawiera on wersję demonstracyjną online na żywo, która jest w pełni funkcjonalna! Możesz po prostu upuścić plik jar na stronę i zobaczyć zdekompilowany kod źródłowy bez instalowania czegokolwiek.
źródło
Istnieje kilka dekompilatorów ... Szybkie wyszukiwanie daje:
I wiele więcej.
Tworzą one kod Java. Java zawiera coś, co pozwala zobaczyć kod bajtowy JVM ( javap ).
źródło
Aby zobaczyć kod źródłowy Java, sprawdź jakiś dekompilator. Idź szukaj jad .
Jeśli chcesz zobaczyć kody bajtowe , po prostu użyj javap dostarczonego z JDK.
źródło
Próbowałem kilku, a Procyon wydawał mi się najlepszy. Jest w trakcie aktywnego rozwoju i obsługuje wiele funkcji najnowszych wersji Java.
Oto inne, których próbowałem:
-skip
flagi wiersza polecenia, aby nie poprzestała na błędach. Aktywnie opracowany i, co ciekawe, napisany w języku Python.źródło
IGNORE_EXCEPTIONS
rzecz została teraz zmieniona na flagę wiersza poleceń-skip
.Używam JAD Decompiler .
Jest do tego wtyczka Eclipse , jadeclipse . To jest całkiem miłe.
źródło
Procyon zawiera dekompilator. To jest FOSS.
źródło
Soot to opcja dla nowszego kodu Java. Przynajmniej ma tę zaletę, że wciąż jest ostatnio utrzymywany ...
Ponadto, Java Decompiler to dekompilator posiadający zarówno samodzielny interfejs GUI, jak i integrację z Eclipse.
Wreszcie, Jdec nie został wspomniany, chociaż nie jest tak dopracowany, jak inne opcje.
źródło
JD-GUI jest naprawdę dobry. Możesz po prostu otworzyć plik JAR i przeglądać kod tak, jakbyś pracował na IDE. Dobry towar.
źródło
Oto lista dekompilatorów z lutego 2015:
Procyon , open-source, https://bitbucket.org/mstrobel/procyon/wiki/Java%20Decompiler
CFR , bezpłatny, brak kodu źródłowego, http://www.benf.org/other/cfr/
JD , bezpłatny tylko do użytku niekomercyjnego, http://jd.benow.ca/
Fernflower , open-source, https://github.com/fesh0r/fernflower ,
JAD - podany tutaj tylko z powodów historycznych. Darmowy, brak kodu źródłowego, http://varaneckas.com/jad/ Nieaktualny, nieobsługiwany i nie dekompiluje poprawnie Java 5 i nowszych.
Możesz testować wyżej wymienione dekompilatory online, nie wymaga instalacji i dokonać własnego, wykształconego wyboru.
Dekompilatory Java w chmurze: http://www.javadecompilers.com/
źródło
Istnieje kilka programów, których możesz użyć. Otrzymasz rzeczywisty kod Java, ale czasami kod został zaciemniony, więc metody są nazywane jedną literą lub cyfrą lub losową kombinacją liter i cyfr.
DJ Dekompilator Mocha
źródło
Większość dekompilatorów Java jest oparta na JAD . To świetne narzędzie, ale niestety nie było od dłuższego czasu aktualizowane i nie radzi sobie zbyt dobrze z klasami Java 1.5+. Nie widziałem żadnych narzędzi, które poprawnie obsługiwałyby klasy 1.5+.
źródło
Spójrz na Cavaj .
źródło
jad
pod spodem.Wszystkie wymienione do tej pory linki JAD wydają się być uszkodzone, więc znalazłem tę stronę. Działa świetnie (przynajmniej dla Linuksa)! Na Ubuntu 11.10 musiałem pobrać wersję statyczną z dowolnego powodu.
http://www.varaneckas.com/jad
źródło
JAD to taki, który działa i jest prosty.
Ponadto, jeśli chcesz zobaczyć metody, użyj javap.
źródło
Jeśli chcesz zobaczyć, jak kompilator Java robi pewne rzeczy, nie chcesz dekompilacji, potrzebujesz dezasemblacji. Dekompilacja obejmuje przekształcenie kodu bajtowego w źródło Java, co oznacza, że utracono wiele informacji niskiego poziomu, a jeśli zastanawiasz się nad optymalizacją kompilatora, prawdopodobnie są to informacje, którymi jesteś zainteresowany.
W każdym razie zdarzyło mi się napisać dezasembler Java typu open source . W przeciwieństwie do Javap działa to nawet na wysoce patologicznych klasach, więc możesz zobaczyć, co narzędzia zaciemniające robią również na twoich klasach. Może także przeprowadzać dekompilację, choć nie poleciłbym tego.
źródło
JAD nie działa dla mnie (problem z Ubuntu 11.10), więc posunąłem się naprzód i sopedowałem na JODO . Przynajmniej ma kod źródłowy Open Java i był w stanie poprawnie zdekompilować moją klasę .
Polecam najpierw sprawdzić gałąź „oddziały / ogólny” . Pnie nie są stabilne.
źródło
Na platformie IntelliJ IDEA można użyć wtyczki IntelliJ Java Decompiler . Pozwala wyświetlić wszystkie źródła Java podczas procesu debugowania, nawet jeśli nie masz ich wszystkich. Opiera się na słynnych narzędziach JD-GUI .
źródło
Za pomocą AndroChef Java Decompiler można dekompilować pliki klas apk, dex, jar i java. To proste i łatwe. AndroChef JD oparty jest na FernFlower . Możesz to ocenić w 10 darmowych zastosowaniach.
źródło
Dla OSX polecam: jarzilla lub JD-GUI
Oba pozwalają zobaczyć słoik, wojnę itp. zawartość pliku i dekompiluje znajdujące się w nich pliki klas.
Jarzilla: https://code.google.com/p/jarzilla/
JD-GUI: http://jd.benow.ca/
źródło