Jak ukryć kod JavaScript z View Source

Jan 31, 2026
Jak
How to hide your JavaScript code

Jeśli nie podejmujesz środków ostrożności z kodem JavaScript, ułatwia życie dla każdego, kto chce go sklonować. Ale jeśli procesy programowania są więcej niż jednym kliknięciem, atakujący wolą klonować oprogramowanie konkurenta. Boty i inni błędniki czesają Internet dla AWS lub Azure Poświadczenia zazwyczaj nie przejmują się zaciemnionym kodem - informacje logowania następnej witryny mogą być również używane do mojego bitcoina i mogą być zbierane z mniejszym wysiłkiem.

Zaciemniający javascript używany do bycia złożonym. Jednak proces stał się znacznie łatwiejszy w ciągu ostatnich kilku lat. Dziś nawet małe firmy mogą i powinny chronić swój kod przed wrązu oczu. W niektórych przypadkach uzyskanie bezpiecznego jest wywołanie pakietu węzła.

Poniższe kroki wprowadzają powszechnie używany obfuspator JavaScript, a także spojrzeć na kilka innych tematów związanych z problemem pod ręką.

  • Najlepsze oprogramowanie antywirusowe
  • 15 Istotnych narzędzi JavaScript

01. Sprawdzanie wersji.

Nasz JavaScript Obfuscator mieszka w środowisku wykonawczego węzła. Zacznijmy, sprawdzając używane wersje. Poniższe dane wyjściowe zapewnia stan wersji znalezionych na stacji roboczej TREULY TRUTELOWE używane do następujących kroków:

 Tamhan @ Tamhan-ThinkPad: ~ $ Node --version
V8.12.0.
Tamhan @ Tamhan-ThinkPad: ~ $ NPM --Version
6.4.1 

02. Zainstaluj program

JavaScript-Obfuscator powinien być zainstalowany w Globalnej pamięci podręcznej montażu swojej stacji roboczej. Wywołaj NPM za pomocą -sol Parametr i nie zapomnij dostarczyć praw nadzorujących - rzeczywisty proces wdrażania należy wykonać w ciągu kilku sekund.

 Tamhan @ Tamhan-ThinkPad: ~ $ sudo NPM install -g
javascript-obfuscator.
[sudo] Hasło dla Tamhana:
. . .

+ [email protected].
Dodano 103 pakietów z 162 współpracowników
W 4,4s 

03. Utwórz próbkę

Testowanie obfuszyjne działa najlepiej, jeśli mamy jakiś "prawdziwy" kodeks. Zacznijmy więc z małą stroną HTML. Ładuje plik JavaScript o nazwie pracownik.js, deklaruje przycisk i zawiera mały kawałek skryptów inline. Gdy zostanie załadowany w przeglądarce, kliknij przycisk, aby wyświetlić pola tekstowe.

 HTML & GT;
& lt; body & gt;
& lt; skrypt SRC = "pracownik.js" & gt; & lt; / script & gt;
& lt; script & gt;
Pracownik funkcyjny () {
alert (Dotretrick ());
}
& lt; / script & gt;
& LT; przycisk Type = "Przycisk" OnClick = "Pracownik (
) "& GT; kliknij mnie! ° C: / Button & GT;
& lt; / body & gt;
& lt; / html & gt; 

04. Dodaj kod

Worker.js rozpoczyna się z zmienną łańcuchową. Są klasycznym celem ataku - jeśli ma być zdekodowany ROM, asembler zwykle zaczyna się od szukania tabel zawierających sekwencje ciągów. Ponadto, szyfrowanie jest wykonywane za pomocą zestawu zmiennych o nazwach "mówienia".

 var mytring = "cześć z przyszłego PLC"

Funkcja DotheTrick () {
var szyfr;
szyfr = rot13 (mystring);
zwrócić szyfr;
} 

05. Wdrożenie szyfrowania

Ponieważ nie jest to przeznaczone jako szyfrowanie 101, powinniśmy osiedlić się na stosunkowo prostej szyfrowaniu podstawienia. Rot13 nie jest trudny, ale można go zaprogramować dość werbalnie. Realizacja Dsoares. Pochodzi z zestawem zmiennych "mówiących" i zapewnia dużo żywności dla naszego zaciemnienia.

 Funkcja ROT13 (STR) {
var re = nowy regexp ("[a-z]", "i");
var min = 'a'.charcodeat (0);
var max = 'z'.charcodeat (0);
var współczynnik = 13;
var wynik = "";
str = str.tudcase ();
  
dla (var i = 0; str.length; i ++) {
Wynik + = (Re.test (Str [I])?
String.fromcharcode ((str.charcododeat
(i) - Min + współczynnik)% (MAX-MIN + 1)
+ min): ul [I]);
}
wynik zwrotu;
} 

06. Pierwsza zaciemnia

Wykonywanie obfuszyjnego biegania kodu jest proste. Odwołać się javascript-obfuscator. i przejść w kropce, aby powiedzieć programowi do pracy na wszystkich plikach znalezionych w bieżącym katalogu roboczym. Pokazuje to wynik na stacji roboczej IBM autora:

 Tamhan @ Tamhan-ThinkPad: ~ / FureeObfuspate /
Kod $ JavaScript-Obfuscator. 

07. Wyjście przekierowania

Wypalanie plików bezpośrednio do folderu pojemnika jest nieefektywne, ponieważ nazwy muszą zostać zmienione przed ich użyciem. Lepszy sposób obejmuje użycie wynik parametr. Gdyby javascript-obfuscator. Znajduje go, program generuje podfolder w bieżącym katalogu roboczym i zrzuca wyniki swoich prac.

 Tamhan @ Tamhan-ThinkPad: ~ / FureeObfuspiec / Code $
javascript-obfuscator. --Output ./obfusca

08. Przeanalizuj wyniki

How to hide your JavaScript code: Results

To okropne, ale może być gorsza

Zanurz się w folderze "Obfuspa" i otwórz nową wersję pracownika. Formatowanie kodu zostało zranione źle. Nazwy metod pozostały jednak takie same, jak są potrzebne do zewnętrznych inwokacji. Ponadto, ciągi siedzieć teraz w tablicy, w której atakujący może je wygodnie zbierać.

 VAR A0_0XB9E2 = ['Hello \ x20FRM x20future
x20plc ',' [A-Z] ', "Test", "CharCodeat"]; 

09. Zapobiegaj zbiorom łańcucha

JavaScript-Obyfuscator jest wyposażony w wybór algorytmów string-mangorytm, które można skonfigurować za pomocą - kodowanie tablicy . Należy

 Tamhan @ Tamhan-ThinkPad: ~ / FureeObfuspiec / Code $
javascript-obfuscator. --output ./obfusca.
BASE64 

10. Spójrz ponownie na wyniki

W tym momencie nasze wyjście OBFUSCATOR wygląda inaczej - tablica na górze pliku jest teraz znacznie mniej czytelna. To jednak nie rozwiązuje wszystkich problemów. Jeśli wykonasz kilka cykli zaciemniających, w końcu skończysz z markiem podobnym do tego, który towarzyszy ten krok:

 VAR A0_0X31E5 = ["BGVUZ3RO", "DGVZDA ==", "
ZNJVBUNOYXJDB2RL ', "Y2HHCKNVZGVBDA ==", "
DG9VCHBLCKNHC2U = '];
. . .
. . .
var mystring = 'hello x20 z x20future x20plc' 

11. Zrozumienie randomizacji.

Naciemniacze pracują w polu ciśnieniowym między wysoką wydajnością a ochroną kodu. Jednym ze sposobów rozwiązania problemu obejmuje elementy "randomizacji". Obfruskatacje drogie drogowe wykonawcze nie są dodawane do wszystkich węzłów, ale tylko do podzbioru. Wykrywanie, czy węzły są dotknięte lub nie są zazwyczaj wykonywane za pomocą generatora liczb losowych, którego czułość może być dostrojona.

12. Idź po ciągach

Wyżej wymieniony generator liczb losowych emituje liczby od zera do jednego. Jeśli liczba jest większa niż próg, modyfikacja nie nastąpi. Oprawa stringirRAyd. Do wartości jednego oznacza, że ​​wszystkie liczby są mniejsze niż próg, zapewniając, że każdy ciąg zostanie zmęczony.

 Tamhan @ Tamhan-ThinkPad: ~ / FureeObfuspiec / Code $
javascript-obfuscator. --output ./obfusca.
- Kodowanie tablicy bazowej64
--STRINGARRAYTHRESHOLD 1 

13. Wstrzyknąć losowy kod

Narzędzia do analizy, takie jak zysk Jsnice z posiadania małej bazy kodu. Biorąc pod uwagę, że JavaScript-Obfuscator przerywa kod w Ast Ast tak, nic nie mówi z wkładającym "kod na śmieci" w locie. Ponieważ ta funkcja dodaje znaczącą bród, deweloperzy muszą go aktywować ręcznie za pomocą dwóch parametrów pokazanych obok tego:

 - CODY-CODE-CETER-CODE CHOOLEAN I LT;
- Próg wtrysku-CODE-CETER-CODE; Numer 

14. Ciesz się chaosem

Uruchamianie zaciemnij obfusor - Naprawdę wtryskiwanie kodu i - Napęd - próg wtrysku 1 Ustaw prowadzi do plikise o około 2,5 KB. Próba pominienia kodu prowadzi do niemal niezrozumiałej ściany głównie tautologicznego javascript.

15. Agresywnie modyfikuj przepływ programu

Kod łamania do AST pozwala na głębokie transformacje. Ustawianie Controlflowflatting. Atrybut do true informuje program, który może wyłączyć połączenia funkcyjne. Prowadzi to do znaczącej ekspansji wygenerowanego kodu - pamiętaj, że wyniki mogą zająć 150-procentowe trafienie.

16. Drażnij debuger

Artefakty z debugowania są największym na świecie prezentem hakerów. Kilka połączeń do konsoli.log () i jego przyjaciół mogą dać cenne informacje na temat atakującego informacji na temat tego, co dzieje się w programie - dobry przykład byłby pokazany fragment:

 Funkcja Dotretrick ()
{
var szyfr;
Console.log ("Przygotowanie do szyfrowania
szyfr ");
szyfr = rot13 (mystring);
Console.log ("Powracający szyfr");
zwrócić szyfr;
} 

17. Oceń problemy techniczne

Możemy spróbować ponownie zaciemnić program z poniższym poleceniem. Wyłącza funkcję buforowania łańcucha i powinien wyłączyć rejestrowanie konsoli za pomocą przekierowania.

 Tamhan @ Tamhan-ThinkPad: ~ / Desktop /
Deaduff / 2018Nov / FureeObfuscate / Code $
javascript-obfuscator. --output ./obfusca.
- Dźwiękowy kodowanie fałszywych
--DisableConsoleOuterPut true 

18. Zagraj w gry dla kotów i myszy

OBFUSCATOR i dostawcy przeglądarki walczą z długą i gorzką bitwą o funkcji debugera. Ze względu na to, "agresywne" środki, takie jak przekierowanie konsoli przetworzenia przepływów programowych, które pokazały towarzyszące temu etapowi, zwykle nie działają długo.

 Debugmprotection: FAŁSZ,
DebugProtectionInterval: FAŁSZ, 

19. Szybki zaciemnia online

Instalowanie całego pakietu węzła .Js do zaciemnienia jednego lub dwóch plików jest bezcelowy. Odwiedzić obfuscator.io. Aby uzyskać dostęp do wersji online programu, który mieszka w przeglądarce. Sprawdź i Comboboxes poniżej wejścia głównego pozwala modyfikować zachowanie programu zgodnie z powyższymi krokami.

20. Dowiedz się więcej

How to hide your JavaScript code: Learn more

Kliknij, aby zobaczyć wszystkie parametry, których potrzebujesz

Zespół deweloperski utrzymuje stosunkowo szczegółową dokumentację wyjaśniającą sposób, w jaki różnorodne parametry wiersza poleceń współdziałają ze sobą. Po prostu odwiedź Głowa tutaj Jeśli wyjście "krótkiej pomocy" pokazano powyżej, nie pomoże ci osiągnąć cel.

21. Śmiertelny wróg zaciemnia

How to hide your JavaScript code: JS Nice

JS Nice to łatwy sposób na nieczytelny kod

ETH Zurych zapewnia usługę de-obfuspieglą hostowaną jsnice.org. . Używa sieci neuronowych i bazy danych wiedzy składających się z istniejącego kodu w celu określenia nazw zmiennych. Stulując się, że formatowanie zwykle działa całkiem dobrze, niektóre nazwiska - takie jak Pixelsizetargetmax. W rutynie szyfrowania towarzyszącej temu kroku - może być raczej zabawny.

 Funkcja ROT13 (PL 120) {
/ ** @type {! Regexp} * /
vuffipsitregexp = nowy regexp
(A0_0X395D ("0x1"), "I"); var.
Pixelsizetargetmax = "A" ["Charcodeat"] (0);
var zerosizeMax = "z" ["Charcodeat"] (0);
/ ** @type {Number} * /
var minh = 13;
/ ** @type {string} * /
var out = ""; 

Generate, the award winning conference for web designers, returns to NYC on April 24-25! To book tickets visit www.generateconf.com 

Generuj, nagradzaną konferencję dla projektantów stron internetowych, wraca do NYC 24-25! Zarezerwuj wizytę biletów www.generateconf.com.

Ten artykuł został pierwotnie opublikowany w wydaniu 283 Magazynu kreatywnego projektowania stron internetowych Projektant stron internetowych . Kup problem 283 tutaj lub Subskrybuj tutaj projektant stron internetowych .

Powiązane artykuły:

  • 9 najlepszych ram JavaScript
  • Ujawnione: najnowsze trendy javascript
  • 5 niesamowitych apis javascript

Jak - Najpopularniejsze artykuły

Zbuduj prototypy z Adobe XD

Jak Jan 31, 2026

(Kredyt obrazu: przyszłość) W nowoczesnej projekcie internetowej i aplikacji często występują czasy, gdy intera..


Utwórz świecący Efekt tekstowy Neon

Jak Jan 31, 2026

Często to najprostsze skutki, które wyglądają najbardziej uderzającym, a neon tekst jest taki taki projekt. Znacznie łatwie..


Utwórz śliskie animacje UI

Jak Jan 31, 2026

Coraz częściej projektanci i deweloperzy uznają znaczenie projektowania ruchu w kontekście doświadczenie użytkownik..


Jak osiągnąć lepsze oświetlenie z V-Ray

Jak Jan 31, 2026

Chaos Group Labs Dyrektor Chris Nichols będzie robią rozmowę o kluczu Wierzchołek , n..


Jak rozwijać mityczne stworzenia

Jak Jan 31, 2026

Ci, którzy chcą stworzyć realistyczne projekty stworzenia za pomocą mieszanki oprogramowania - Zbrush, wspaniały proj..


Jak kodować znacznik rzeczywistości rozszerzonej

Jak Jan 31, 2026

Strona 1 z 2: Strona 1 Strona 1 Strona 2..


Opracuj swoje umiejętności karykatury

Jak Jan 31, 2026

Kiedy postanowiłem być niepełnym wymiarze godzinowym ilustratorem i karikaturystom kilka lat temu, miałem mnóstwo programów..


Narysuj dokładne kości i mięśnie

Jak Jan 31, 2026

Anatomia jest ogromnym tematem i wymaga mieszania informacji naukowej i praktyczności artystycznej. Na przykład potrzebny jest ..


Kategorie