Zabezpieczenie oprogramowania przed złamaniem oraz inżynierią wsteczną z systemem kluczy licencyjnych oraz opcją czasowego ograniczenia funkcjonalności.
PELock to system pozwalający zabezpieczyć dowolne 32 bitowe oprogramowanie dla systemu Windows przed złamaniem (ang. cracking), modyfikacjami oraz ochronić je przed inżynierią wsteczną (ang. reverse engineering).
PELock posiada wbudowany system licencyjny, dzięki któremu możesz w prosty sposób dodać klucze licencyjne do swojego oprogramowania. Możliwe jest również ustawienie ograniczeń czasowych (ang. time-trial) np. 30 dniowy okres użytkowania dla zabezpieczonych aplikacji.
Możesz dodatkowo ściśle zintegrować zabezpieczenia i elementy systemu licencyjnego wykorzystując dedykowane SDK i setki przykładów użycia z pełnymi kodami źródłowymi dla C/C++, Delphi, Lazarus, Freepascal, PureBasic, PowerBASIC, D, Assembler.
Zabezpieczyć możesz dowolny skompilowany program dla systemu Windows kompatybilny z formatem Portable Executable, niezależnie w jakim języku i środowisku programowania został stworzony.
Obsługiwane formaty plików | Rozszerzenia | |
---|---|---|
Aplikacje | EXE | |
Wygaszacze ekranu | SCR | |
Biblioteki dynamiczne | DLL | |
Kontrolki ActiveX | OCX | |
Rozszerzenia Panelu Sterowania | CPL | |
Paczki biblioteczne Borland | BPL DPL | |
Kodeki audio | ACM | |
Filtry DirectShow | AX |
Bardzo często zdarza się tak, że po wypuszczeniu aplikacji na rynek, już dzień po premierze pojawiają się nielegalne numery seryjne, cracki, patche czy generatory numerów seryjnych (ang. keygen).
Wynika to najczęściej ze stosowania słabych algorytmów weryfikacji danych rejestracyjnych, ale nawet najbardziej zaawansowane metody weryfikacji danych rejestracyjnych oparte o cyfrowe sygnatury czy silną kryptografię, nie są przeszkodą dla crackerów, jeśli aplikacja je stosująca, nie jest odpowiednio zabezpieczona przeciwko ingerowaniu w jej skompilowany kod.
Zabezpieczenie | Słabości | Wektory ataku |
---|---|---|
Numer seryjny |
|
generator kluczy keygen crack |
Plik rejestracyjny |
|
generator kluczy patch crack |
Klucz sprzętowy |
|
emulator patch crack |
Suma kontrolna |
|
loader patch crack |
Exe-Paker |
|
unpaker inline patch debug loader |
Weryfikacja online |
|
proxy patch crack |
Czy możesz powiedzieć, że twoje oprogramowanie jest zabezpieczone we wszystkich aspektach? PELock oferuje zabezpieczenia eliminujące wszystkie powyższe zagrożenia, zdejmując z Ciebie ciężar projektowania, wdrażania i testowania własnych metod na klientach końcowych twojego oprogramowania.
Niezabezpieczone oprogramowanie jest wyjątkowo podatne na analizę i korzystając z narzędzi do inżynierii wstecznej ułatwione jest uzyskanie wielu informacji o skompilowanej aplikacji. Możliwe jest odtworzenie fragmentów kodów źródłowych oprogramowania, takich jak np. algorytmy, a w odpowiednich warunkach nawet całych kodów źródłowych.
Nieuczciwa konkurencja może wykorzystać techniczną wiedzę uzyskaną w procesie inżynierii wstecznej do sklonowania funkcjonalności twojego oprogramowania, nie są to rzeczy wzięte z filmów o hakerach, a szara rzeczywistość, która może dotknąć każdego twórcę oprogramowania.
Gry komputerowe narażone są na tzw. hacki, czyli programy, które potrafią ingerować w wewnętrzne mechanizmy funkcjonowania gry, modyfikując jej kod w trakcie działania, w celu uzyskania przewagi nad przeciwnikami, np. w rozgrywkach online.
Przykładem takiego hacka może być modyfikacja gier FPS, która sprawia, że widać położenie przeciwników nawet przez ściany (z ang. wallhack). Innego rodzaju popularną modyfikacją jest tzw. aimbot, czyli automat naprowadzający celownik broni idealnie na pozycję przeciwnika.
Stosowanie tego typu dopalaczy w grach może skutecznie zniechęcić innych, uczciwych graczy do rozgrywki, przez co sama gra traci na popularności.
Straty dla twórców oprogramowania mogą być ogromne, zarówno dla dużych jak i małych firm, a tym bardziej jeśli jesteś samodzielnym programistą, dlatego warto pomyśleć również nad odpowiednim zabezpieczeniem już w procesie projektowania oprogramowania.
Własne metody zabezpieczeń nie zawsze się sprawdzają, opłaca się postawić na sprawdzone rozwiązanie takie jak PELock, które nie będzie miało problemów zarówno z zapewnieniem odpowiedniego poziomu ochrony, wykorzystując najnowsze osiągnięcia techniczne w dziedzinie zabezpieczeń oprogramowania oraz jednocześnie gwarantując maksymalny poziom kompatybilności i stabilności.
W przypadku PELock-a do zabezpieczenia wymagany jest jedynie skompilowany plik aplikacji. Jeśli jednak masz możliwość edycji kodów źródłowych aplikacji to jak najbardziej rekomendowane jest wykorzystanie funkcji z SDK PELock-a, aby wprowadzić dodatkowe mechanizmy zabezpieczające oraz wykorzystać funkcje systemu licencyjnego.
SDK zapewnia specjalne makra i funkcje, które odpowiadają za komunikację pomiędzy aplikacją, a dodanym w procesie zabezpieczania kodem ochronnym.
Im więcej elementów SDK użyjesz — tym integracja zabezpieczenia i aplikacji będzie lepsza, a tym samym jej złamanie, odbudowa czy analiza będzie trudniejsza. SDK oraz przykłady jego użycia dostępne są dla wielu języków programowania m.in:
Piszesz w C lub C++? PELock posiada setki przykładów użycia i SDK kompatybilne z takimi środowiskami i kompilatorami jak Visual C++, Intel C++ Compiler, GCC, MinGW, G++, Clang, C++Builder, Watcom C++, LCC, Pelles C, Digital Mars.
Jeśli tworzysz w Delphi, niezależnie od wersji, znajdziesz wiele przykładów oraz dodatkowy komponent, który ułatwi wykorzystanie funkcji SDK PELock-a. Znajdziesz również przykłady dla środowiska Lazarus i kompilatora FreePascal.
PureBasic to nowoczesna odsłona języka programowania BASIC z doskonałą optymalizacją kodu, setkami dodatkowych wbudowanych funkcji i rzeszą fanów. PELock w pełni wspiera ten język programowania i udostępnia dedykowane SDK oraz setki przykładów użycia.
PowerBASIC to kolejna odsłona języka BASIC, przeznaczona do tworzenia okienkowych i konsolowych aplikacji Windows z ogromną społecznością programistów. Jeśli piszesz w PowerBASIC to znajdziesz dedykowane SDK oraz setki przykładów użycia.
Tworzysz oprogramowanie w assemblerze dla 32 bitowych procesorów x86 z wykorzystaniem kompilatora MASM? W SDK znajdziesz nie tylko wszystko to, co jest dostępne dla języków wysokiego poziomu, ale także dodatkowe mechanizmy zabezpieczeń przeznaczone wyłącznie dla kodu assemblera.
Język programowania D zyskuje na coraz większej popularności. Sprawia to jego elastyczność, bogactwo oferowanych funkcji oraz niesłychana prędkość kompilacji. Wykorzystują i wspierają jego rozwój takie firmy jak m.in. Facebook. PELock oferuje rozbudowane SDK oraz wiele przykładów użycia dla języka D.
Cały proces zabezpieczenia aplikacji przebiega automatycznie (może być uruchomiony z linii komend) i polega na przebudowie, modyfikacji i zaszyfrowaniu skompilowanego oprogramowania, jego kodu, struktur danych, oraz dodaniu do niego dodatkowego kodu zabezpieczającego.
Przykładowe wykorzystanie podstawowych makr szyfrujących systemu licencyjnego, kod pomiędzy nimi jest szyfrowany na etapie zabezpieczania pliku aplikacji, a po uruchomieniu kod pomiędzy makrami jest deszyfrowany i wykonywany jedynie jeśli znaleziony zostanie klucz licencyjny, w którym znajdują się klucze pozwalające odszyfrować fragment kodu pomiędzy nimi. Po jego wykonaniu jest on powtórnie szyfrowany.
#include <windows.h>
#include <stdio.h>
#include <conio.h>
#include "pelock.h"
int main(int argc, char *argv[])
{
// kod pomiędzy makrami DEMO_START i DEMO_END bedzie zaszyfrowany
// w zabezpieczonym pliku i nie bedzie dostępny (wykonany) bez
// poprawnego klucza licencyjnego
DEMO_START
printf("Witaj w pelnej wersji mojej aplikacji!");
DEMO_END
printf("\n\nNacisnij dowolny klawisz, aby kontynuowac . . .");
getch();
return 0;
}
procedure TfrmMain.FormShow(Sender: TObject);
begin
{$I DEMO_START.INC}
lblInfo.Caption := 'Ta aplikacja jest zarejestrowana';
{$I DEMO_END.INC}
end;
import std.stdio;
import std.string;
import core.stdc.stdio;
import core.sys.windows.windows;
import PELock;
int main(string args[])
{
// kod pomiedzy makrami DEMO_START i DEMO_END bedzie zaszyfrowany
// w zabezpieczonym pliku i nie bedzie dostepny (wykonany) bez
// poprawnego klucza licencyjnego
mixin(DEMO_START);
writef("Witaj w pelnej wersji mojej aplikacji!");
mixin(DEMO_END);
writef("\n\nNacisnij dowolny klawisz, aby kontynuowac . . .");
getchar();
return 0;
}
#COMPILE EXE
%USEMACROS = 1
#INCLUDE "win32api.inc"
#INCLUDE "pelock.inc"
FUNCTION PBMAIN () AS LONG
' kod pomiedzy makrami DEMO_START i DEMO_END bedzie zaszyfrowany
' w zabezpieczonym pliku i nie bedzie dostepny (wykonany) bez
' poprawnego klucza licencyjnego
DEMO_START
MSGBOX "Witaj w pelnej wersji mojej aplikacji!"
DEMO_END
END FUNCTION
IncludePath "..\..\..\..\..\SDK\Polish\PureBasic\"
XIncludeFile "pelock.pb"
; start
; kod pomiedzy makrami DEMO_START i DEMO_END bedzie zaszyfrowany
; w zabezpieczonym pliku i nie bedzie dostepny (wykonany) bez
; poprawnego klucza licencyjnego
DEMO_START
MessageRequester("PELock", "Witaj w pelnej wersji mojej aplikacji!")
DEMO_END
Po zabezpieczeniu, kod aplikacji jest odpowiednio zmodyfikowany, chroniąc go przed analizą i ewentualną odbudową, czyli przywróceniem do stanu pierwotnego, w którym możliwe byłoby dokonywanie analizy lub modyfikacji w kodzie i danych. Kod, dane i dodatkowe elementy aplikacji (zasoby) są zaszyfrowane, wykorzystując silne algorytmy kryptograficzne oraz wielowarstwowe szyfrowanie polimorficzne, a sam kod zabezpieczający jest poddany mutacjom wykorzystując innowacyjny silnik metamorficzny, co sprawia, że analiza całości jest niesłychanie trudnym technicznie zadaniem, nawet dla ludzi profesjonalnie zajmujących się inżynierią wsteczną oprogramowania.
Należy nadmienić, że po zabezpieczeniu, kod aplikacji jest ściśle zintegrowany z dodanym kodem zabezpieczającym, jeśli atakujący spróbuje usunąć kod zabezpieczający, sama aplikacja nadal pozostanie bezpieczna i nie będzie można jej uruchomić, ani z niej skorzystać.
PELock oferuje niezwykle rozbudowany system licencyjny, pozwalający w łatwy sposób kontrolować oprogramowanie na podstawie udostępnionego klucza licencyjnego.
Wbudowany menedżer kluczy licencyjnych pozwala w prosty sposób dodawać użytkowników do projektu, generować i weryfikować klucze licencyjne, blokować te nielegalnie opublikowane w Internecie.
System licencyjny posiada szereg funkcji API, dzięki którym zabezpieczone oprogramowanie może w prosty sposób odczytać nazwę użytkownika przypisaną do klucza, zweryfikować jego poprawność oraz odczytać dodatkowe wartości i dane zapisane w kluczu.
Poniżej znajdziesz przykład odczytania dodatkowych wartości liczbowych zapisanych w kluczu licencyjnym, które mogą być wykorzystane w dowolnym celu w twoim oprogramowaniu:
#include <windows.h>
#include <stdio.h>
#include <conio.h>
#include "pelock.h"
int main(int argc, char *argv[])
{
unsigned int nNumberOfItems = 0;
// kod pomiedzy markerami DEMO_START i DEMO_END bedzie zaszyfrowany
// w zabezpieczonym pliku i nie bedzie dostepny bez poprawnego klucza
DEMO_START
printf("To wersja oprogramowania jest zarejestrowana!\n");
// odczytaj wartosc liczbowa zapisana w kluczu, PELock oferuje 16 indywidualnie
// ustawianych wartosci, ktore moga byc uzyte jak tylko chcesz
nNumberOfItems = GetKeyInteger(5);
printf("Mozesz zapisac maksymalnie %u elementow w bazie danych\n", nNumberOfItems);
DEMO_END
printf("\n\nNacisnij dowolny klawisz, aby kontynuowac . . .");
getch();
return 0;
}
procedure TfrmMain.FormShow(Sender: TObject);
begin
{$I DEMO_START.INC}
lblInfo.Caption := 'Ta aplikacja jest zarejestrowana';
// odczytaj wartosc liczbowa z klucza (indeksy od 1-16)
lblLicenses.Caption := 'Liczba licencji: ' + IntToStr(GetKeyInteger(1));
{$I DEMO_END.INC}
end;
import std.stdio;
import std.string;
import core.stdc.stdio;
import core.sys.windows.windows;
import PELock;
int main(string args[])
{
// inicjalizuj klase PELock
PELock myPELock = new PELock;
uint nNumberOfItems = 0;
// kod pomiedzy markerami DEMO_START i DEMO_END bedzie zaszyfrowany
// w zabezpieczonym pliku i nie bedzie dostepny bez poprawnego klucza
mixin(DEMO_START);
writef("To wersja oprogramowania jest zarejestrowana!\n");
// odczytaj wartosc liczbowa zapisana w kluczu, PELock oferuje 16 indywidualnie ustawianych
// wartosci, ktore moga byc uzyte jak tylko chcesz
nNumberOfItems = myPELock.GetKeyInteger(5);
writef("Mozesz zapisac maksymalnie %d elementow w bazie danych\n", nNumberOfItems);
mixin(DEMO_END);
writef("\n\nNacisnij dowolny klawisz, aby kontynuowac . . .");
getchar();
return 0;
}
#COMPILE EXE
%USEMACROS = 1
#INCLUDE "win32api.inc"
#INCLUDE "pelock.inc"
FUNCTION PBMAIN () AS LONG
DIM nNumberOfItems AS LONG
nNumberOfItems = 0
' kod pomiedzy markerami DEMO_START i DEMO_END bedzie zaszyfrowany
' w zabezpieczonym pliku i nie bedzie dostepny bez poprawnego klucza
DEMO_START
MSGBOX "To wersja oprogramowania jest zarejestrowana!"
' odczytaj wartosc liczbowa zapisana w kluczu, PELock oferuje 16 indywidualnie ustawianych
' wartosci, ktore moga byc uzyte jak tylko chcesz
nNumberOfItems = GetKeyInteger(5)
MSGBOX "Mozesz zapisac maksymalnie" & STR$(nNumberOfItems) & " elementow w bazie danych"
DEMO_END
END FUNCTION
IncludePath "..\..\..\..\..\SDK\Polish\PureBasic\"
XIncludeFile "pelock.pb"
; start
nNumberOfItems.l = 0
; kod pomiedzy markerami DEMO_START i DEMO_END bedzie zaszyfrowany
; w zabezpieczonym pliku i nie bedzie dostepny bez poprawnego klucza
DEMO_START
MessageRequester("PELock", "To wersja oprogramowania jest zarejestrowana!")
; odczytaj wartosc liczbowa zapisana w kluczu, PELock oferuje 16 indywidualnie ustawianych
; wartosci, ktore moga byc uzyte jak tylko chcesz
nNumberOfItems = GetKeyInteger(5)
MessageRequester("PELock", "Mozesz zapisac maksymalnie " + Str(nNumberOfItems) + " elementow w bazie danych")
DEMO_END
Klucze licencyjne generowane są z wykorzystaniem silnych algorytmów kryptograficznych, takich jak m.in. RSA-2048, co sprawia, że nie jest możliwe nieautoryzowane utworzenie kluczy licencyjnych przez takie narzędzia jak np. keygeny.
PELock posiada wbudowany binder dla dodatkowych bibliotek DLL, dzięki któremu możliwe jest połączenie pliku aplikacji EXE oraz dodatkowych bibliotek DLL do jednego, wyjściowego pliku EXE.
Jeśli twoja aplikacja wykorzystuje lub wymaga do działania dodatkowych bibliotek DLL możesz je ukryć wewnątrz zabezpieczonej aplikacji, nikt postronny nie będzie w stanie ich podejrzeć, ani żaden inny program nie będzie miał do nich dostępu, bo cały proces ich ładowania jest emulowany w pamięci i nic nie jest zapisywane na dysku, a działanie aplikacji pozostanie takie samo.
Do poprawnego zabezpieczenia oprogramowania nie jest wymagana jakakolwiek zmiana domyślnej konfiguracji. Jeśli jednak chcesz, zajrzyj w okno Opcji, znajdziesz tam setki dodatkowych ustawień konfiguracyjnych, które pozwolą Ci dostosować zabezpieczenie w najmniejszym detalu do własnych potrzeb.
Odkryj bogactwo dodatkowych funkcji PELock-a, dzięki którym nie będziesz potrzebował już żadnych innych narzędzi zabezpieczających dla swoich aplikacji.
Wszystkie opcje są dokładnie opisane w pliku pomocy w języku polskim, nie bój się eksperymentować, jednym kliknięciem możesz przywrócić wszystkie domyślne ustawienia.
PELock został przetestowany na wszystkich dostępnych 32 jak i 64 bitowych wersjach systemu operacyjnego Windows. I nie mówię tutaj tylko o dwóch czy trzech ostatnich wersjach Windows.
Zarówno PELock jak i kod zabezpieczający dodawany do aplikacji jest kompatybilny z systemami:
Doprowadzenie oprogramowania do kompatybilności z tak ogromną gamą systemów operacyjnych wymagało tysięcy godzin pracy, analiz, testów i poprawek. Czy znasz jakiekolwiek inne oprogramowanie kompatybilne zarówno z tymi najnowszymi jak i najstarszymi systemami operacyjnymi Windows? Ze wszystkimi.
Dzięki temu ogromnemu wysiłkowi — PELock zapewnia stabilną pracę twojego zabezpieczonego oprogramowania niezależnie od warunków, w jakich zostanie uruchomione u klientów końcowych.
PELock poprawnie obsługuje aplikacje wykorzystujące nowoczesne technologie anty-exploitacyjne wbudowane w nowe wersje systemów Windows i zintegrowane z aplikacjami dzięki wsparciu odpowiednich opcji kompilatorów. Technologie te są w pełni obsługiwane i aktywne dla zabezpieczonych aplikacji.
Dzięki temu twoja aplikacja będzie zabezpieczona zarówno przed złamaniem, ale również nie będziesz musiał rezygnować z dodatkowych zabezpieczeń przeciwko exploitom i lukom 0day.
Technologia | Skrót | |
---|---|---|
Control Flow Guard | CFG | |
Address Space Layout Randomization | ASLR | |
Data Execution Prevention | DEP | |
Safe Exception Handling | SAFESEH |
Inni twórcy systemów zabezpieczeń tego nie powiedzą, ale systemy te są często niekompatybilne z oprogramowaniem antywirusowym. Dochodzi w takich wypadkach do fałszywych i błędnych detekcji zabezpieczonego oprogramowania jako zainfekowanego, jest to tzw. przypadek false-positive detection.
Przyczyna zwykle leży w błędnym rozpoznaniu przez oprogramowanie antywirusowe krytycznych fragmentów zabezpieczonych plików aplikacji, które często ze względu na szyfrowanie mogą powodować tego typu kłopoty w niektórych pakietach oprogramowania antywirusowego.
Problem ten został dokładnie przeanalizowany, przetestowany i rozwiązany w PELock-u poprzez odpowiednią przebudowę zabezpieczonego pliku aplikacji, tak aby jej kod, dane i wewnętrzna struktura nie wzbudzały jakichkolwiek zastrzeżeń w oprogramowaniu antywirusowym.
Jeśli masz jakieś pytania dotyczące oprogramowania PELock, masz jakieś uwagi, coś jest niejasne, napisz do mnie, chętnie odpowiem na każde Twoje pytanie.