Piractwo komputerowe stało się plagą ostatnich lat. Z sieci ściągamy praktycznie wszystko:

– muzykę,
– książki,
– filmy,
– programy.

Najgorsze jest to, że w polskim społeczeństwie panuje cicha akceptacja tego procederu. Jeszcze kilka lat temu standardem była instalacja nielegalnych systemów operacyjnych na nowo zakupionych maszynach. Co ciekawe taka usługa udostępniana była przez sklepy składające komputery. Ze względu na zaostrzenie kontroli, żaden z renomowanych sklepów nie uskutecznia takich praktyk obecnie – za dużo mógłby stracić.

Podobnie jest z aplikacjami mobilnymi. Czasami dziwię się, że ludzie potrafią spędzić godzinę, a nawet i więcej tylko po to, aby znaleźć gdzieś za darmo aplikację, która kosztuje zaledwie 3 zł. Dodatkowo potrafią zapłacić za dostęp do tego typu zawartości.

W przypadku aplikacji mobilnych na platformę Windows Phone sytuacja ze ściąganiem nielegalnie aplikacji jest już w miarę ok. Na początku istnienia Windows Phone Store użytkownicy mogli bezkarnie instalować płatne aplikacje na swoich telefonach bez dokonywania zapłaty. Były nawet darmowe narzędzia, które same ściągały aplikację ze sklepu, usuwały sprawdzanie czy aplikacja została zakupiona i następnie wgrywały ją na telefon. Obecnie jest to niemożliwe ponieważ już od ponad pół roku Microsoft wprowadził szyfrowanie XAPów.

Na zagadnienie piractwa można spojrzeć jeszcze z innej strony. Zamiast kraść aplikację przez użytkownika można dokonać kradzieży kodu i wypuścić aplikację pod własnym nazwiskiem. Ze względu na łatwy dostęp do narzędzi jest to banalnie proste. Wystarczy ściągnąć jedno z wielu narzędzi do dekompilacji kodu, np. dotPeek i otworzyć w nim skompilowany program:

dotPeek

dotPeek

Po czymś takim, wystarczy już tylko skopiować i skompilować kod. Grrrr… I nasze tygodnie pracy zamieniane są w minuty…

Nie mam nic przeciwko temu, aby wzorować się na innych programach. Sam jeśli mam jakiś pomysł na aplikację to najpierw sprawdzam, czy istnieją już podobne aplikacje. Następnie wszystkie znalezione aplikacje instaluję na telefonie. Robię listę rzeczy fajnych oraz tych, które należy zmienić. Potem jeszcze sprawdzam, co piszą użytkownicy o tych aplikacjach. Dopiero po takiej analizie podejmuję decyzję, czy warto jest rozpoczynać pracę nad moim pomysłem. Niejednokrotnie po takiej analizie decyzja o rozpoczęciu pracy nad programem była negatywna. Ktoś już zrealizował mój pomysł dosyć dobrze i nie było sensu tworzyć kolejnej aplikacji. Ale kopiowanie kodu – [mark]totalnie nie fair[/mark].

Aby się zabezpieczyć przed taką sytuacją należy obfuskować kod. Niestety na rynku nie znajdziemy darmowego, uniwersalnego narzędzia, które pozwoli nam zabezpieczać wszystkie nasze projekty. Z tego powodu zacząłem korzystać z programu Babel Obfuscator. Po wnikliwej analizie wszystkich programów dostępnych na rynku stwierdziłem, że będzie to narzędzie odpowiednie dla mnie – zestaw funkcji spełniał moje wymagania, jak również cena była odpowiednia.

Mam nadzieję, że każdy z nas jest świadomy, że nie są to rozwiązania gwarantujące 100% ochrony kodu. Ich użycie powoduje tylko zwiększenie trudności przy przeprowadzaniu inżynierii wstecznej. W większości przypadków jest to tożsame ze zwiększeniem czasochłonności tego procesu. A o to nam chodzi. Należy tak skomplikować i wydłużyć proces odzyskiwania kodu z aplikacji, aby stał się on nieopłacalny.

Zaszyfrowanie kodu naszej aplikacji przy pomocy tego narzędzia jest bajecznie proste. Wystarczy dodać naszą aplikację do programu Babel Obfuscator. Następnie skonfigurować proces zaciemniania i go uruchomić. Cały proces przedstawiają poniższe zrzuty ekranu:

Wynikiem działania tej aplikacji jest zaszyfrowana aplikacja:

dotPeek - Obfuscated

dotPeek – Obfuscated

Jak widać na załączonym zdjęciu domyślenie się co robi wybrana metoda już nie jest takie łatwe. Nazwy są zaszyfrowane, został zmieniony przebieg programu.

Jak pewnie sami zauważycie, wydobycie kodu z tej aplikacji jest możliwe. I nie stanowi to problemu. Problemem natomiast jest odgadnięcie co dany fragment kodu robi.

Wydaje mi się, że tworząc aplikacje hobbistycznie nic więcej nie potrzebujemy. Aplikacja robi to, co do niej należy. Oczywiście są od niej droższe i wyposażone w dodatkowe funkcje aplikacje, ale czy rzeczywiście potrzebujemy tych wszystkich dodatkowych funkcjonalności?

A może Wy znacie inne narzędzia, które możecie polecić?