Dekompilacja pliku .jar

Qubixon | 2020-06-06 11:50:00 UTC | #1

Wie ktoś może jak zdekompilować plik .jar? Bardziej mi chodzi o pewien plugin, ale nie wiem jak to zrobić :confused:


DBanaszewski | 2020-06-06 11:29:24 UTC | #2

Możesz użyć prostej aplikacji JD-GUI, znajdziesz ją tutaj: http://java-decompiler.github.io/
Otwierasz plik .jar i kod jest podawany na tacy (o ile kod źródłowy nie jest “zaciemniony”).


KrEdEnS | 2020-06-06 11:29:17 UTC | #3

@DBanaszewski WinRAR-em przypadkiem nie da się rozpakować .jar?

Tak mi się skojarzyło:
https://share.kredens.ovh/SbINuPZv98.png


DBanaszewski | 2020-06-06 11:29:46 UTC | #4

[quote=”KrEdEnS, post:3, topic:15042”]
WinRAR-em przypadkiem nie da się rozpakować .jar?
[/quote]
Rozpakowanie to nie dekompilacja ;)


KrEdEnS | 2020-06-06 11:30:01 UTC | #5

W sumie racja


logixdev | 2020-06-06 11:38:13 UTC | #6

Mam nadzieję, że nie chcesz tego użyć do jakiegoś chamskiego podkradania kodu.
Moim zdaniem najlepszym dekompilerem jest Procyon (ale działający w wierszu poleceń) lub bazujący na nim otwartoźródłowy Luyten z GUI: https://github.com/deathmarine/Luyten


Qubixon | 2020-06-06 11:41:44 UTC | #7

Tylko nie wiem czy w Java Decompiler da się edytować ten kod. Ponieważ mam tam pola do edycji, ale nie wiem czy jest taka możliwość edytowania.


Qubixon | 2020-06-06 12:09:01 UTC | #8

Kod jest przeznaczony do edycji, nie mam na celu kraść go tylko edytować.


DBanaszewski | 2020-06-06 12:25:13 UTC | #9

Chciałeś tylko zdekompilować plik .jar, o możliwość edycji nie prosiłeś.

Jeżeli chcesz zmodyfikować daną klasę, zainteresuj się np. InteliJ IDEA - ma on wbudowany dekompilator.

Tworzysz projekt, dodajesz oryginalny plik .jar jako bibliotekę, tworzysz (dokładnie taki sam) package, tworzysz nową klasę o takiej samej nazwie jak plik, który chcesz edytować, kopiujesz oryginalną zawartość pliku, edytujesz to co potrzebujesz, kompilujesz pliki, podmieniasz pliki w .jar i gotowe - to jest tylko moje rozwiązanie.


logixdev | 2020-06-06 12:25:13 UTC | #10

W takim razie spoko, szkoda tylko, że kodu źródłowego nie dostałeś po prostu. Otwartoźródłowe projekty są dostępne np. na GitHubie i można je łatwo zaimportować w przypadku np. wspomnianego IntelliJ. Pamiętaj, że przy bardziej skomplikowanych pluginach może się pojawić kilka błędów w kodzie, część dekompilerów np. importy z poszczególnych klas upraszcza na zasadzie dodawania *, zadbaj też o dodanie odpowiedniej dla pluginu wersji Bukkit API.

P.S. Jak chcesz dokonać tylko zmian we wiadomościach (czyli edytować tzw. stringi), to polecam takie chyba dość mało znane narzędzie, a bardzo proste, przyjemne i nieinwazyjne: https://leonardosnt.github.io/jar-string-editor/


Qubixon | 2020-06-06 12:01:23 UTC | #11

Dziękuję za pomoc :smiley:


luxDev | 2020-06-06 12:37:28 UTC | #12

Można też używając Luyten zdekompilować cały kod do archiwum zip

image|690x388

jednak nie oszukujmy się, nie jest to do końca najlepszy sposób, najlepiej gdyby kod byłby na jakimś VCS


system | 2020-07-08 12:37:12 UTC | #13

Ten temat został automatycznie zamknięty 32 dni po ostatnim wpisie. Tworzenie nowych odpowiedzi nie jest już możliwe.