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.
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.
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
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.
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.
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ć.
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 :)
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
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.
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.
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
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....
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
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
.
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).
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.
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
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
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