jump to navigation

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

Posted by artiko in : Java, Software , 2komentarze

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.

Grupowanie wyświetlanych obiektów Java3D Maj 13, 2009

Posted by artiko in : Java , add a comment

Do rozwiązania typowy problem: na canvasie wyświetlamy kilkadziesiąt obiektów, z czego część jest statyczna w czasie działania programu, część dynamicznie odświeżana. Co zrobić, by nie musieć przy odświeżaniu przeładowywać wszystkich obiektów w canvasie i uniknąć mrugania?
Odpowiedź jest prosta jesli użyjemy klasy javax.media.j3d.BranchGroup do której metodą addChild(Node arg0) możemy po prostu dodawać obiekty 3D. Oczywiście całą taką grupę łatwo się transformuje.
Jeśli do jednej grupy dodamy obiekty statyczne w wyświetlaniu, do drugiej odświeżane wystarczy, że w czasie wykonania programu będziemy odświeżać tylko tą drugą grupę. Można to uczynić używając metody detach() na rzecz grupy, a następnie przeładowując jej zawartość i dodając ją do canvasu, bądź grupy nadrzędnej.

Forest Fire – Symulator pożaru lasu Listopad 23, 2008

Posted by artiko in : Java, Software , add a comment

Forest Fire to projekt studencki symulujący pożar lasu przy użyciu teorii automatów komórkowych.
Samo podejście do wykorzystania Automatów Komórkowych jest w nim niestandardowe, gdyż korzysta z kilku warstw nałożonych na siebie, co pozwala znacznie lepiej symulować las oraz rozprzestrzenianie się w nim ognia. Pozwoliło to również w bardziej wierny sposób zasymulować wpływ takich czynników, jak wiatr, teren oraz struktura lasu na jego pożar.
Zachęcam do testowania, projekt dostępny jest w postaci aplikacji Java Web Start na tej stronie -> Link