Jak mogę otworzyć Javę.pliki klas w sposób czytelny dla człowieka?

Próbuję rozgryźć, co plik klasowy apletu Javy robi pod maską. Otwarcie go za pomocą Notatnika lub Textpada pokazuje tylko kilka gobbledy-gook.

Czy Jest jakiś sposób, aby przywrócić go do nieco czytelnego formatu, żebym mógł spróbować dowiedzieć się, co robi?

  • Environment = = Windows W / VS 2008 zainstalowany.
Author: Pops, 2008-09-17

17 answers

Jd-gui jest najlepszym dekompilatorem w tej chwili. może obsługiwać nowsze funkcje w Javie, w porównaniu do getting-dusty JAD.

 187
Author: DarenW,
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-10-19 02:20:22

Jeśli nie masz nic przeciwko odczytaniu kodu bajtowego, javap powinien działać poprawnie. Jest częścią standardowej instalacji JDK.

Usage: javap <options> <classes>...

where options include:
   -c                        Disassemble the code
   -classpath <pathlist>     Specify where to find user class files
   -extdirs <dirs>           Override location of installed extensions
   -help                     Print this usage message
   -J<flag>                  Pass <flag> directly to the runtime system
   -l                        Print line number and local variable tables
   -public                   Show only public classes and members
   -protected                Show protected/public classes and members
   -package                  Show package/protected/public classes
                             and members (default)
   -private                  Show all classes and members
   -s                        Print internal type signatures
   -bootclasspath <pathlist> Override location of class files loaded
                             by the bootstrap class loader
   -verbose                  Print stack size, number of locals and args for methods
                             If verifying, print reasons for failure
 67
Author: Michael Myers,
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-09-16 20:08:16

Chcesz dekompilatora Javy, możesz użyć do tego narzędzia wiersza poleceń javap. Ponadto, Java Decompiler HOW-to opisuje jak można dekompilować plik klasy.

 7
Author: Drew Frezell,
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-09-16 20:05:14

Używanie Jad do dekompilacji jest prawdopodobnie najlepszą opcją. Jeśli kod nie został zaciemniony, będzie to wynik ok.

 2
Author: Rasmus Faber,
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-09-16 20:03:26

To, czego szukasz, to dekompilator Javy. Polecam JAD http://www.kpdus.com/jad.html jest darmowy do użytku niekomercyjnego i wykonuje swoją pracę.

Uwaga: to nie sprawi, że kod będzie dokładnie taki sam jak został napisany. tzn. stracisz komentarze i ewentualnie nazwy zmiennych, więc będzie to trochę trudniejsze niż czytanie zwykłego kodu źródłowego. Jeśli programista jest naprawdę skryty, to również zaciemni swój kod, dzięki czemu jeszcze trudniej czytać.

 2
Author: David Beleznay,
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-09-16 20:05:58

Cpuguru, jeśli twój aplet został skompilowany z javac 1.3 (lub mniej), najlepszym rozwiązaniem jest użycie Jad.

Niestety, ostatnim JDK obsługiwanym przez JAD 1.5.8 (14 kwietnia 2001) jest JDK 1.3.

Jeśli twój aplet został skompilowany z nowszym kompilatorem, możesz spróbować JD-GUI: Ten dekompiler jest w fazie rozwoju, niemniej jednak, generuje poprawne Źródła Javy, przez większość czasu, dla klas skompilowanych z JDKs 1.4, 1.5 lub 1.6.

DarenW, dziękuję za post. JD-GUI nie jest jeszcze najlepszym dekompilatorem... ale pracuję nad :)

 2
Author: Emmanuel Dupuy,
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-12-23 17:56:50

To skompilowany kod, musisz użyć dekompilatora jak JAD: http://www.kpdus.com/jad.html

 1
Author: cynicalman,
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-09-16 20:03:44

Musisz użyć dekompilatora. Inni zasugerowali JAD, są inne opcje, jad jest najlepszy.

Powtórzę komentarze, że możesz stracić trochę w porównaniu do oryginalnego kodu źródłowego. Będzie to wyglądać szczególnie zabawnie, jeśli kod używany generyki, ze względu na kasowanie.

 1
Author: Zac Gochenour,
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-09-16 20:12:50

JAD i/lub JADclipse Eclipse plugin, na pewno.

 1
Author: John Gardner,
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-09-16 20:35:47

Jeśli plik klasy, do którego chcesz zajrzeć jest open source, nie powinieneś go dekompilować, ale zamiast tego dołączyć pliki źródłowe bezpośrednio do swojego IDE. w ten sposób możesz po prostu przeglądać kod jakiejś klasy bibliotecznej tak, jakby był to twój własny

 1
Author: arturh,
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-05-13 10:54:10

Jd-gui " http://code.google.com/p/innlab/downloads/detail?name=jd-gui-0.3.3.windows.zip&can=2&q= " jest najlepszą i przyjazną dla użytkownika opcją do dekompilacji .plik klasowy....

 1
Author: Karthikeyan Subramanian,
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-09-27 10:05:57

Zgodnie z sugestią możesz użyć JAD do dekompilacji i przeglądania plików. Aby ułatwić czytanie, możesz użyć wtyczki JADclipse dla eclipse do integracji JAD bezpośrednio z eclipse lub użyć DJ Java Decompiler, który jest znacznie łatwiejszy w użyciu niż wiersz poleceń jad

 0
Author: ,
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-09-16 20:07:55

JAD jest doskonałą opcją, jeśli chcesz uzyskać czytelny kod Java w wyniku. Jeśli jednak naprawdę chcesz zagłębić się w wewnętrzne elementy formatu .class, będziesz chciał javap. Jest on dołączony do JDK i pozwala na "dekompilację" szesnastkowego kodu bajtowego do czytelnego ASCII. Język, który tworzy, jest nadal bajtowy (Nie podobny do Javy), ale jest dość czytelny i niezwykle pouczający.

Ponadto, jeśli naprawdę chcesz, możesz otworzyć dowolny .class plik w hex editor i odczytać bezpośrednio kod bajtowy. Wynik jest identyczny jak przy użyciu javap.

 0
Author: Daniel Spiewak,
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-09-16 20:09:25

Nie ma potrzeby dekompilowania apletu.klasy. Publiczny kod źródłowy API Javy jest dostarczany wraz z JDK (jeśli zdecydujesz się go zainstalować) i jest lepiej czytelny niż dekompilowany kod bajtowy. Możesz znaleźć skompresowane w src.zip (znajduje się w folderze instalacyjnym JDK).

 0
Author: Arno,
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-09-16 20:45:34

CFR-another java decompiler jest świetnym dekompilatorem dla nowoczesnej Javy napisanej i Java 6.

 0
Author: tidbeck,
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-01-18 13:54:18

Jak zauważył @MichaelMyers, użyj

javap -c <name of java class file> 

Aby uzyskać kod montażu JVM. Można również przekierować wyjście do pliku tekstowego dla lepszej widoczności.

javap -c <name of java class file> > decompiled.txt
 0
Author: Nilashish C,
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
2018-02-16 15:51:07

Możesz również użyć dostępnych dekompilatorów Javy. Dla np. http://www.javadecompilers.com

 0
Author: Prachi Sharma,
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
2018-02-23 11:50:23