jump to navigation

Obfuskacja – zaciemnianie kodu w Javie, narzędzie Czerwiec 17, 2009

Posted by artiko in : Java, Software , 2comments

W dzisiejszych czasach aplikacje pisane w Javie lub C# dość łatwo zdekompilować i otrzymać czasami przejrzysty kod. Oczywiście już dawno temu wymyślono sposoby na zabezpieczanie się przed tym :)
Jednym i bardzo prostym jest właśnie obfuskacja, czyli zaciemnianie kodu. Polega ona na takiej modyfikacji kodu bądź bytecodu, by nie było możliwe jego późniejsze zrozumienie. Po dokładny opis odsyłam na stronę Wikipedii – pl.wikipedia.org/wiki/Zaciemnianie_kodu.
Po bardzo krótkich poszukiwaniach w sieci znalazłem projekt o nazwie ProGuard, dzięki któremu można w naprawdę szybki sposób można zaciemnić kod, zmniejszyć objętość plików oraz dokonać optymalizacji kodu wynikowego. Można go uruchamiać z linii komend, jednak posiada również GUI. Osobiście wolę GUI, gdyż w przypadku używania wersji konsolowej trzeba tworzyć plik z konfiguracją dla każdej paczki. Aplikacja jest napisana w Javie, co czyni ją multiplatformową.
Do programu w zakładce Input/Output po prostu dodajemy nasz plik jar z aplikacją, plik wynikowy oraz, co bardzo ważne, pliki bibliotek, do których znajdują się odniesienia w naszym kodzie. Następne zakładki można pozostawić na wartościach domyślnych, w Process kliknąć Process! i po chwili dostajemy plik wynikowy, zabezpieczony przed tymi, którzy chcieliby do niego zaglądać :)
Ja przy pierwszym użyciu natrafiłem na błąd
Warning: javax.swing.JFrame: can't find superclass or interface javax.swing.TransferHandler$HasGetTransferHandler

Rozwiązanie jest proste, w zakładce Information wystarczy odznaczyć pola Skip non-public library classes i class members.