Jak "dekompilować" pliki klas Java? [zamknięte]
Jakiego programu mogę użyć do dekompilacji pliku klasy? Czy rzeczywiście dostanę Kod Javy, czy tylko kod montażowy JVM?
Na Pytania dotyczące wydajności Javy na tej stronie często widzę odpowiedzi od osób, które "dekompilowały" plik klasy Javy, aby zobaczyć, jak kompilator optymalizuje pewne rzeczy.
19 answers
Aktualizacja Luty 2016:
Www.javadecompilers.com wymienia JAD jako:
Więc twój przebieg może się różnić w zależności od ostatnich jdk (7, 8).Najpopularniejszy dekompiler Javy, ale przede wszystkim tylko w tym wieku. Napisany w C++, tak bardzo szybko.
Nieaktualne, nieobsługiwane i nie dekompiluje poprawnie Javy 5 i nowszej
Ta sama strona zawiera listę innych narzędzi.
I javadecompiler, jak zauważył Salvador Valencia w komentarze (Wrzesień 2017), oferuje SaaS, w którym przesyłasz plik .class
do chmury i zwraca ci dekompilowany kod.
Oryginalna odpowiedź: październik 2008
-
[26]}wersja ostateczna JSR 176, definiująca główne funkcje J2SE 5.0 (Java SE 5), została opublikowana 30 września 2004 roku.
- ostatnia wersja Javy wspierana przez jad, słynny Dekompiler Javy napisany przez Pana Pavel Kouznetsov, to JDK 1.3.
- Większość dekompilatorów Javy do pobrania dzisiaj z Internetu, takie jak " DJ Java Decompiler "lub" Cavaj Java Decompiler", są zasilane przez JAD: nie mogą wyświetlać Java 5 źródeł.
Java Decompiler (Yet another Fast Java decompiler) has:
- jawne wsparcie dla dekompilacji i analizy Java 5+".Klasa " pliki.
- ładny GUI:
Działa z kompilatorami od JDK 1.1.8 do JDK 1.7.0 i innymi ( Jikes , JRockit , itd.).
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ć dekompilowany kod źródłowy bez instalowania czegokolwiek.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-15 21:45:21
Istnieje kilka dekompilatorów... Szybkie wyszukiwanie daje:
- Procyon : open-source (Apache 2) i aktywnie rozwijany
- Krakatau : open-source (GPLv3) i aktywnie rozwijany
- CFR : open-source (MIT) i aktywnie rozwijany
- JAD
- DJ Java Decompiler
- Mocha
I wiele innych.
Wytwarzają kod Java. Java zawiera coś, co pozwala zobacz kod bajtowy JVM (javap ).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-07 15:39:35
Aby zobaczyć kod źródłowy Javy sprawdź jakiś dekompiler. Poszukaj jad .
Jeśli chcesz zobaczyć kody bajtowe, po prostu użyj javap , który jest dostarczany wraz z JDK.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-11-07 16:03:51
Próbowałem kilku i Procyon wydawał mi się najlepszy. Jest aktywnie rozwijany i obsługuje wiele funkcji najnowszych wersji Javy.
To są inne, których próbowałem:
-
CFR
- Obiecująca, ale często nieudana metoda dekompilacji. Będę miał na nią oko. Aktywnie rozwijany z obsługą najnowszych funkcji Java.
- ma inne podejście w tym zamiast próbować zrekonstruować oryginalne źródło, stara się wyprowadzić równoważny kod Javy, co może sprawić, że będzie on lepszy dla zamaskowanego kodu. Z moich testów było mniej więcej na równi z Procyonem, ale nadal miło mieć coś innego. Musiałem użyć znacznika
-skip
linii poleceń, aby nie zatrzymywać się na błędach. Aktywnie rozwijany i co ciekawe napisany jest w Pythonie.
- zadziałało, ale wydajność Procyona była znacznie lepiej. Oto strona porównująca wyjście Procyona z oryginałem i JD-GUI . JD-GUI jest również dostępny jako wtyczka Eclipse , która w ogóle nie działała. Nie wydaje się być open source i rozwój wydaje się sporadyczne.
- działa, ale obsługuje tylko Javę 1.4 i niżej. Dostępny również jako wtyczka Eclipse . Nie jest już w fazie rozwoju.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-12-22 16:00:27
Używam Jad Decompiler .
Jest do tego plugin Eclipse, jadeclipse . Jest całkiem ładny.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-15 13:21:08
Procyon zawiera dekompilator. To FOSS.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-10 14:02:51
Sadza jest opcją dla nowszego kodu Javy. Przynajmniej ma tę zaletę, że jest nadal utrzymywana...
Także, Java Decompiler jest dekompilatorem z samodzielnym interfejsem graficznym i integracją Eclipse.
, Jdec nie został wymieniony, choć nie jest tak dopracowany jak inne opcje.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-09-18 23:59:11
JD-GUI jest naprawdę dobry. Możesz po prostu otworzyć plik JAR i przeglądać kod tak, jakby pracujesz nad IDE. Dobry towar.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-23 16:38:21
Oto lista dekompilatorów z lutego 2015:
Procyon , open-source, https://bitbucket.org/mstrobel/procyon/wiki/Java%20Decompiler
CFR, free, no source-code available, http://www.benf.org/other/cfr/
JD, Tylko do użytku niekomercyjnego, http://jd.benow.ca/
Fernflower , open-source, https://github.com/fesh0r/fernflower,
JAD - podano tylko tutaj z przyczyn historycznych. Free, no source-code available, http://varaneckas.com/jad/ Nieaktualna, nieobsługiwana i nie dekompiluje poprawnie Javy 5 i nowszej.
Możesz przetestować wyżej wymienione Dekompilatory online, bez konieczności instalacji i dokonać własnego wyboru.
Dekompilatory Javy w chmurze: http://www.javadecompilers.com/
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-24 11:19:51
Istnieje kilka programów, których możesz użyć. Otrzymasz rzeczywisty kod Javy, ale czasami kod ten zostanie zaciemniony, więc metody są nazwane jedną literą lub cyfrą lub losową mieszanką liter i cyfr.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-19 18:21:45
Większość dekompilatorów dla Javy opiera się na JAD . Jest to świetne narzędzie, ale niestety nie zostało zaktualizowane przez jakiś czas i nie obsługuje bardzo dobrze klas Java 1.5+. Nie widziałem żadnych narzędzi, które będą poprawnie obsługiwać klasy 1.5+.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-11-07 16:18:26
Spójrz na cavaj .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-11-07 16:02:55
Wszystkie linki jad wymienione do tej pory wydają się być zepsute, więc znalazłem tę stronę. Działa świetnie (przynajmniej dla Linuksa)! Na Ubuntu 11.10 musiałem pobrać statyczny z jakiegokolwiek powodu.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-04-04 03:11:15
JAD to taki, który działa i jest prosty.
Ponadto, jeśli chcesz tylko zobaczyć metody, użyj javap.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-13 05:41:45
Jeśli chcesz zobaczyć, jak kompilator Javy wykonuje pewne rzeczy, nie chcesz dekompilacji, chcesz dezasemblować. Dekompilacja polega na przekształceniu kodu bajtowego w źródło Javy, co oznacza, że wiele informacji niskiego poziomu jest traconych, a jeśli zastanawiasz się nad optymalizacją kompilatora, to prawdopodobnie są to informacje, które Cię interesują.
W każdym razie, tak się składa, że napisałem open source Java disassembler. W przeciwieństwie do Javap, działa to nawet na wysoce patologicznych klasy, dzięki czemu możesz zobaczyć, co narzędzia maskujące robią również z Twoimi klasami. Może również dekompilować, choć nie polecam.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-30 03:13:59
JAD nie działa dla mnie (Ubuntu 11.10 problem) więc posunąłem się do przodu i skoczyłem na JODO . Przynajmniej ma otwarty kod źródłowy Javy i był w stanie dekompilować mój .klasa
Polecam najpierw sprawdzić 'Branch/generic' branch. Pnie nie są stabilne.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-25 17:52:07
Na Platformie IntelliJ IDEA można użyć Java Decompiler IntelliJ Plugin. Umożliwia wyświetlanie wszystkich źródeł Java podczas procesu debugowania, nawet jeśli nie masz ich wszystkich. Jest on oparty na słynnych narzędzi JD-GUI.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-10-23 08:36:03
Za pomocą AndroChef Java Decompiler możesz dekompilować pliki klas apk, dex, jar i java. To proste i łatwe. AndroChef JD opiera się na FernFlower . Możesz go ocenić w 10 darmowych zastosowaniach.
AndroChef obsługuje funkcje języka Java, takie jak generics, enums i adnotacje. Według niektórych badań AndroChef Java Decompiler jest w stanie dekompilować 98,04% aplikacji Java generowanych za pomocą tradycyjnych kompilatorów Javy - bardzo wysoki wskaźnik odzyskiwania. To proste, ale potężne narzędzie, które pozwala na dekompilację Java i Dalvik bytecode (DEX, APK) do czytelnego Źródła Java.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-10-23 08:44:20
Dla OSX polecam: jarzilla lub JD-GUI
Oba pozwalają na oglądanie jar, war, itp. zawartość pliku i dekompiluje pliki klas w nich zawartych.
Jarzilla: https://code.google.com/p/jarzilla/
JD-GUI: http://jd.benow.ca/
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-02 16:01:12