Wpis z mikrobloga

Czy ktoś z was wie jak nazywa się program do zabezpieczania aplikacji napisanych w Javie wymagających licencji, gdzie przy "częściowym" jego złamaniu, aplikacja w trakcie działania specjalnie zaczyna tworzyć niepotrzebne obiekty w celu zapchania pamięci?

Czegoś takiego jeszcze nie widziałem, a to było nawet interesujące. Już prawie miałem się poddać, ale potem autorzy tego zabezpieczenia popełnili pewien błąd, który znacząco ułatwił mi obejście tych mechanizmów.

Być może są też inne efekty "częściowego złamania", generalnie mechanizm polega na tym, że tworzone są dodatkowe klasy z metodami i polami, które działają jak flagi, tzn. w różnych miejscach w kodzie aplikacji dodawane są if'y, które sprawdzają, czy te flagi mają odpowiednie wartości - jeśli nie, dany kawałek kodu nie jest uruchamiany, albo uruchamiany jest "złośliwy" kod który w nieprzewidywalny sposób uniemożliwia korzystanie z aplikacji (przy czym całość jest zaciemniona, więc na pierwszy rzut oka nie wiadomo który kod jest właściwy). Domyślnie te flagi mają oczywiście wartości niepoprawne, dopiero proces aktywacji licencji ustawia je odpowiednio za pomocą refleksji gdzie pola i ich wartości są wyliczane na podstawie licencji z użyciem różnych matematycznych sztuczek (tego procesu nie analizowałem, nie mam licencji :).

W każdym razie to na pewno nie ZKM, bo w ZKM nie ma koncepcji licencji. Jeśli ktoś miał z tym do czynienia to chętnie poznam więcej szczegółów :)


#reverseengineering #programowanie #java