Dokumentacja
/

Pierwsze kroki

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 Obfuscation przy minimalnych zmianach lub od Medium Obfuscation przy 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.name

    Nazwy funkcji i klas są zamieniane na losowe identyfikatory. Kod, który korzysta z .name przy 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 dla node, ale niektórych opcji przeznaczonych dla przeglądarki nie można używać z targetem node.
  • browser-no-eval — tak samo jak browser, ale wynik nie korzysta z eval(). 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ń vmSelfDefending opartych 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. Brak window, brak document, inna zmienna globalna self.
  • userscript — piaskownica menedżera userscriptów (np. Tampermonkey). Zabezpieczenia vmSelfDefending są odpowiednio dostosowywane. Wymaga obfuskatora w wersji 6.9.0 lub nowszej.
  • bytenode — dla kodu, który zostanie skompilowany do .jsc przy 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)

PresetBezpieczeństwoWydajnośćFunkcje
VM LowDobre~10xPodstawowa VM, pośredni dispatch
VM MediumSilne~12-15x+ Tasowanie opcodes, kodowanie, wabiki
VM HighBardzo silne~15-18x+ Martwy kod, opcodes ze stanem, kodowanie stosu
VM Ultra HighMaksymalne~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)

PresetOchronaWydajnośćFunkcje
DefaultPodstawowaMinimalneString array, upraszczanie
LowLekka~1.1x+ Self-defending, wyłączenie konsoli
MediumUmiarkowana~1.5x+ Przepływ sterowania, martwy kod, base64
HighSilna~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.