Pierwsze kroki
Obfuscator.io przekształca czytelny kod źródłowy w wersję chronioną, trudną do zrozumienia i poddania inżynierii wstecznej. Doskonale nadaje się do ochrony własnych algorytmów, logiki licencjonowania oraz kodu krytycznego dla biznesu.
Witamy w Obfuscator.io
Ten przewodnik przeprowadza przez obfuskację pierwszego pliku, wybór presetu i zrozumienie panelu opcji. Szczegółowe omówienia znajdują się w sekcjach Obfuskacja VM, Podstawowa obfuskacja oraz Dobre praktyki.
Szybki start
1. Wklej swój kod
Wprowadź kod JavaScript w edytorze po lewej stronie. Kod można wkleić bezpośrednio albo skorzystać z przesyłania plików do przetwarzania wsadowego.
2. Wybierz preset
Wybierz preset z listy rozwijanej w panelu opcji. Warto zacząć od
Low Obfuscationprzy minimalnych zmianach lub odMedium Obfuscationprzy zrównoważonej ochronie. Presety VM zapewniają najwyższy poziom bezpieczeństwa.3. Kliknij „Obfuscate”
Naciśnij przycisk Obfuscate, aby przekształcić kod. Chroniony wynik pojawi się w panelu po prawej stronie.
4. Skopiuj lub pobierz
Skorzystaj z przycisku Copy albo Download, aby pobrać zobfuskowany kod. Wynik jest gotowy do użycia na produkcji.
Zgodność kodu Ważne
Obfuskacja (zarówno VM, jak i bez VM) przekształca kod w sposób, który wpływa na niektóre zachowania środowiska uruchomieniowego JavaScriptu. Kod nie może polegać na następujących mechanizmach:
function.toString()/class.toString()Obfuskacja całkowicie zmienia postać kodu źródłowego. Kod, który parsuje lub porównuje źródło funkcji, przestanie działać.
function.name/class.nameNazwy funkcji i klas są zamieniane na losowe identyfikatory. Kod, który korzysta z
.nameprzy logowaniu, serializacji lub refleksji, otrzyma nazwy po obfuskacji.
// Before obfuscation
function calculatePrice() { return 100; }
console.log(calculatePrice.name); // "calculatePrice"
console.log(calculatePrice.toString()); // "function calculatePrice() { return 100; }"
// After obfuscation
console.log(calculatePrice.name); // "_0x1a2b3c" (random)
console.log(calculatePrice.toString()); // Completely transformed code
Opcje podstawowe
Przed obfuskacją należy skonfigurować poniższe opcje podstawowe, dopasowując je do środowiska docelowego.
Target target
Określa środowisko wykonania zobfuskowanego kodu:
browser(domyślnie) — standardowe środowisko strony internetowej. Kod wynikowy jest identyczny jak dlanode, ale niektórych opcji przeznaczonych dla przeglądarki nie można używać z targetemnode.browser-no-eval— tak samo jakbrowser, ale wynik nie korzysta zeval(). Do zastosowania, gdy strona docelowa ma politykę Content Security Policy zabraniającąeval/unsafe-eval.node— środowisko Node.js. Opcje przeznaczone dla przeglądarki są wyłączone (wymagająwindow/document, więc w Node nic by nie robiły albo zgłaszałyby błąd). Część zabezpieczeńvmSelfDefendingopartych na API dostępnych wyłącznie w przeglądarce — wykrywanie przeglądarek headless, odzyskiwanie czystego realmu przez iframe, kontrole inspektora i DOM — nie jest generowana dla tego targetu.service-worker— kontekst Service Workera. Brakwindow, brakdocument, inna zmienna globalnaself.userscript— piaskownica menedżera userscriptów (np. Tampermonkey). ZabezpieczeniavmSelfDefendingsą odpowiednio dostosowywane. Wymaga obfuskatora w wersji 6.9.0 lub nowszej.bytenode— dla kodu, który zostanie skompilowany do.jscprzy użyciu bytenode. Wymaga obfuskatora w wersji 6.13.0 lub nowszej.
Strict Mode strictMode
Określa, jak obfuskator traktuje tryb strict JavaScriptu:
Auto(domyślnie) — automatyczne wykrywanie trybu strict na podstawie kodu. Obfuskator analizuje kod pod kątem dyrektyw"use strict"Enable— wymuszenie traktowania całego kodu jako działającego w trybie strict, niezależnie od obecności"use strict"Disable— za tryb strict uznawane są wyłącznie jawne dyrektywy"use strict"w kodzie źródłowym
Presety w praktyce
Presety to gotowe kombinacje opcji. Dzielą się na dwie osobne grupy:
Presety VM Pro (wirtualizacja kodu bajtowego)
| Preset | Bezpieczeństwo | Wydajność | Funkcje |
|---|---|---|---|
VM Low | Dobre | ~10x | Podstawowa VM, pośredni dispatch |
VM Medium | Silne | ~12-15x | + Tasowanie opcodes, kodowanie, wabiki |
VM High | Bardzo silne | ~15-18x | + Martwy kod, opcodes ze stanem, kodowanie stosu |
VM Ultra High | Maksymalne | ~20x+ | + Warstwy obfuskacji spoza VM |
Podane wartości wydajności to średnie — rzeczywisty wpływ silnie zależy od kodu (np. kod intensywnie korzystający z rekurencji lub z gorących pętli będzie zauważalnie wolniejszy).
Presety bez VM (standardowa obfuskacja)
| Preset | Ochrona | Wydajność | Funkcje |
|---|---|---|---|
Default | Podstawowa | Minimalne | String array, upraszczanie |
Low | Lekka | ~1.1x | + Self-defending, wyłączenie konsoli |
Medium | Umiarkowana | ~1.5x | + Przepływ sterowania, martwy kod, base64 |
High | Silna | ~2x | + Debug protection, kodowanie rc4 |
Przegląd interfejsu
- Edytor wejściowy — miejsce na wklejenie lub wpisanie kodu źródłowego JavaScript. Pliki można przeciągnąć i upuścić albo skorzystać z przycisku przesyłania. Obsługiwane są również pliki HTML ze skryptami osadzonymi w dokumencie Pro.
- Panel wyniku — wyświetla zobfuskowany rezultat. Przyciski Copy i Download pozwalają pobrać chroniony kod.
- Wybór presetu — pozwala wybrać preset VM lub bez VM. Presety VM są zgrupowane na górze. Preset wyznacza bazowe opcje, które można następnie dostosować.
- Panel opcji — służy do precyzyjnego dostrajania ustawień obfuskacji. Kliknięcie ikony
?obok dowolnej opcji wyświetla jej dokumentację. - Przycisk Obfuscate — przekształca kod przy użyciu wybranych opcji. Presety VM przetwarzane są po stronie serwera, presety bez VM działają w przeglądarce.
- Przesyłanie wielu plików Pro — przetwarza wiele plików naraz i pozwala pobrać je jako archiwum ZIP.
- Panel historii Pro — daje dostęp do wcześniejszych obfuskacji oraz pozwala przywrócić kod wejściowy i wynikowy.
