Jak skrýt kód JavaScriptu z zobrazení Zdroj

Feb 6, 2026
jak
How to hide your JavaScript code

Pokud neberete preventivní opatření s vaším kódem JavaScript, děláte život pro každého, kdo se chce klonovat. Pokud však vaše programovací procesy jsou více než jedním kliknutím, útočníci budou raději klonovat konkurenční software. Bots a další miscantts česání internetu pro pověření AWS nebo Azure obvykle neobtěžují se zmateným kódem - přihlašovací údaje příští webové stránky mohou být také použity pro důlní bitcoin a mohou být sklizeny s menším úsilím.

Obfuscující JavaScript byl složitý. Proces se však v posledních letech stal výrazně jednodušší. Dnes mohou i malé společnosti chránit své kodex od zvědavých očí. V některých případech je zajištění je jen vyvolání obalu uzl.js pryč.

Následující kroky představují běžně používaný Javascript obfuscator a také se podívat na několik dalších témat souvisejících s problémem v ruce.

  • Nejlepší antivirový software
  • 15 Základní nástroje JavaScriptu

01. Kontrola verze

Náš JavaScript obfuscator žije v uzlu runtime prostředí. Začněte se kontrolou použitých verzí. Níže uvedený výstup poskytuje stav verze nalezené na vaší pracovní stanici skutečně použité pro následující kroky:

 Tamhan @ Tamhan-ThinkPad: ~ $ uzel --Version
v8.12.0.
Tamhan @ Tamhan-ThinkPad: ~ $ npm --version
6.4.1 

02. Nainstalujte program

JavaScript-obfuscator by měl být instalován do globální mezipaměti montáže vaší pracovní stanice. Vyvolejte NPM s -G Parametr a nezapomeňte poskytnout práva superuserů - skutečný proces nasazení by měl být proveden během několika sekund.

 Tamhan @ Tamhan-ThinkPad: ~ $ sudo npm instalace -g
JavaScript-obfuscator
[sudo] heslo pro Tamhan:
. . .

+ [email protected]
Přidáno 103 balíků od 162 přispěvatelů
v 4,4s 

03. Vytvořte vzorek

Testování obfuscation funguje nejlépe, pokud budeme mít nějaký "skutečný" kód. Dejme tedy s malou webovou stránkou HTML. Načtuje soubor JavaScript s názvem Worker.js, deklaruje tlačítko a obsahuje malý kousek inline skriptování. Když je načten do prohlížeče, klepněte na tlačítko pro zobrazení textového pole.

 & lt; html & gt;
& lt; tělo & gt;
& lt; skript src = "worker.js" & gt; & lt; / script & gt;
& lt; scénář a gt;
funkční pracovník () {
výstraha (Dothetrick ());
}
& lt; / script & gt;
Tlačítko Type = "Tlačítko" Onclick = "Pracovník (
) "" & gt; klikněte na mě! & lt; / tlačítko & gt;
& lt; / tělo & gt;
& lt; / html & gt; 

04. Přidat nějaký kód

Pracovník.JS začíná s proměnnou řetězce. Jedná se o klasický cíl útoku - Pokud má být ROM dekódován, assembler obvykle začíná hledáním stolů obsahujících řetězce. Kromě toho se šifrování provádí pomocí sady proměnných s velmi "mluvícími" jmény.

 var mystring = "Ahoj z budoucího PLC"

Funkce Dothetrick () {
var šiffrat;
šiffrat = rot13 (mystring);
vrátit šiffrat;
} 

05. implementovat šifrování

Vzhledem k tomu, že to není určeno jako šifrování 101, měli bychom se usadit na poměrně jednoduchém substituční šifře. Rot13 není obtížný, ale může být naprogramován docela verevně. Implementace DSOARS Dodává se s množstvím "mluvících" proměnných a poskytuje spoustu potravin pro náš obvoskce.

 Funkce ROT13 (Str) {
var re = nový regexp ("[a-z]", "i");
var min = 'a'.charcodeat (0);
var max = 'z'.charcodeat (0);
varový faktor = 13;
var výsledky = "";
str = str.touppercase ();
  
pro (var i = 0; i & lt; str.length; i ++) {
výsledek + = (re.test (str [i])?
String.FromCharCode ((str.Charcodeat
(I) - min + faktor)% (max-min + 1)
+ min): str [i]);
}
Výsledek návratu;
} 

06. První zmatka

Provádění obfuscation běh kódu je jednoduchý. Invoke JavaScript-obfuscator a projít v tečce, abyste program vyprávěli, aby pracoval na všech souborech nalezených v aktuálním pracovním adresáři. To ukazuje výsledek na pracovní stanici IBM autora:

 Tamhan @ Tamhan-ThinkPad: ~ / FutingObfuscate /
kód $ javascript-obfuscator. 

07. Přesměrování výstupu

Vypínání souborů přímo do složky kontejneru je neefektivní, protože názvy musí být změněny dříve, než mohou být použity. Lepší způsob zahrnuje použití výstup parametr. Li JavaScript-obfuscator Najít to, program vytváří podsložku v aktuálním pracovním adresáři a vylučuje výsledky svých pracovních programů.

 Tamhan @ Tamhan-ThinkPad: ~ / FutingObfuscate / kód $
JavaScript-obfuscator. - Opcutput ./Obfusca

08. Analyzujte výsledky

How to hide your JavaScript code: Results

Je to hrozné, ale mohlo by to být horší

Ponořte se do složky "obfusca" a otevřete novou verzi pracovníků.Js, aby vám hodil oči na ohavnosti, která je ukázána doprovázet tento krok. Formátování kódu bylo špatně zmírněno. Jména metod však zůstala stejná, protože jsou potřebné pro externí vyvolání. Kromě toho se řetězce nyní sedí v poli, kde je útočník může pohodlně sklízet.

 VAR A0_0XB9E2 = ['HELLO X20FROM X20FURUCE
X20PLC ',' [A-Z] ',' Test ',' Charcodeat ']; 

09. Zabránit sklizni řetězci

JavaScript-obfuscator je dodáván s výběrem řetězců-manglingových algoritmů, které lze konfigurovat pomocí - prostředění . Mějte na paměti, že výstupní adresář musí být vyprázdněn před každým vyvoláním, protože zapomenout na to, že tak učiní, že tak učiní na "rekurzivní" zmatenost výstupních souborů z předchozího spuštění.

 Tamhan @ Tamhan-ThinkPad: ~ / FutingObfuscate / kód $
JavaScript-obfuscator. - Opcutput ./obfusca.
- Base64 kódování - prostředění 

10. Znovu se podívejte na výsledky

V tomto okamžiku se náš výstup obfuscator vypadá jinak - pole v horní části souboru je nyní mnohem méně čitelný. To však nevyřeší všechny problémy. Pokud provádíte několik obfuscation cyklů, nakonec skončíte se značkou podobným typu, který doprovází tento krok:

 VAR A0_0x31E5 = ['BGVUZ3RO', 'DGVZDA ==', '
Znjvbuoyxjdb2rl ',' y2hhcknvzgvbda == ','
DG9VCHBLCKNHC2U = '];
. . .
. . .
Var MyString = 'HELLO X20FROM X20FUTERE \ X20PLC' 

11. Porozumění randomizaci

Obfuscátory pracují v tlakovém poli mezi vysoce výkonnou a ochranou kódů. Jedním ze způsobů, jak řešit problém zahrnuje prvky "Randomising". Runtime-drahé zmatky nejsou přidány do všech uzlů, ale pouze na podmnožinu. Detekce, pokud jsou uzly ovlivněny nebo nejsou obvykle prováděny přes generátor náhodného čísla, jehož citlivost lze naladit.

12. Jděte po strunech

Výše uvedené náhodné číslo generátoru vydává čísla od nuly na jednu. Pokud je číslo větší než prahová hodnota, modifikace se neuskuteční. Nastavení StringarrayThreshold. Na hodnotu jednoho znamená, že všechna čísla jsou menší než prahová hodnota, která zajistí, že každý řetězec se rozdíjejí.

 Tamhan @ Tamhan-ThinkPad: ~ / FutingObfuscate / kód $
JavaScript-obfuscator. - Opcutput ./obfusca.
- Base64
--Stringarrarthreshold 1 

13. Injekce náhodného kódu

Analysis nástroje, jako je zisk JSnice z mající malé kódové základny. Vzhledem k tomu, že JavaScript-obfuscator rozbije kód do AST stejně, nic mluví proti vložení "odpadkového kódu" na mouchu. Vzhledem k tomu, že tato funkce dodává významný bloat, vývojáři jej musí aktivovat ručně prostřednictvím dvou parametrů uvedených vedle tohoto:

 - Dead-Code-injekce & lt; Boolean & GT;
-Dead-kód-injekce-prahová hodnota <45]
  

14. Užijte si chaos

Běh obfuscator s oběma - Dead-code-injekce true a - Dead-Code-injekce-prahová hodnota 1 Sada vede k souborům asi 2,5kb. Pokus o napomáhání kódu vede k téměř nesrovnatelné stěně většinou tautologického JavaScriptu.

15. Agresivně modifikovat tok programu

Prolomentní kód do AST umožňuje hluboké transformace. Nastavení. ControlFlowFlowFlowFlowing. Atribut true sdělí program, který může de-inline funkční hovory. To vede k významnému rozšíření generovaného kódu - mějte na paměti, že výsledky mohou trvat 150% výkonu výkonu.

16. Obtěžujte ladicí program

Artefakty z ladění jsou největším světovým darem hackerům. Několik volání do konzoly.log () a jeho přátelé mohou poskytnout útočníkovi cenné informace o tom, co se děje uvnitř programu - dobrý příklad by byl ukázaný na úryvci:

 Funkce Dothetrick ()
{
var šiffrat;
console.log ("Příprava na šifrování
šiffrat ");
šiffrat = rot13 (mystring);
console.log ("vracet šiffrat");
vrátit šiffrat;
} 

17. Vyhodnotit technické problémy

Můžeme se pokusit znovu obfuscate program s příkazem níže. Zakáže funkci mezipaměti řetězce a měla by vypnout protokolování konzoly přes přesměrování.

 Tamhan @ Tamhan-ThinkPad: ~ / Desktop /
Deadstuff / 2018Nov / FutureObfuscate / Code $
JavaScript-obfuscator. - Opcutput ./obfusca.
- -String-array-kódující false
--disableConsoleOutput true 

18. Zahrajte si kočky a myši hry

Obfuscator a dodavatelé prohlížeče bojují o dlouhou a hořkou bitvu o funkci ladicího programu. Vzhledem k tomu, agresivní "opatření, jako je například přesměrování konzoly interruporů průtoků programů, ukázaly tento krok, obvykle nefungují dlouho.

 DebugProtekce: FALSE,
DebugprotectionInterval: False, 

19. Rychlá online zmatek

Instalace celého balíčku node.js pro obfuscating jeden nebo dva soubory je zbytečné. Návštěva obfuscator.io Přístup k online verzi programu, který žije ve vašem prohlížeči. Kontrola a kombinování pod hlavním vstupem vám umožní upravit chování programu podle výše uvedených kroků.

20. Další informace

How to hide your JavaScript code: Learn more

Klikněte pro zobrazení všech parametrů, které potřebujete

Developer Team udržuje relativně podrobnou dokumentaci, která vysvětluje způsob, jakým různé parametry příkazového řádku vzájemně ovlivňují. Jednoduše navštívit hlavu Pokud je uvedeno výše "krátká nápověda", nepomůže vám dosáhnout svého cíle.

21. úmyslný nepřítel obfuscator

How to hide your JavaScript code: JS Nice

JS NIGHT je snadný způsob, jak vykreslit váš kód nečitelný

Eth Curych poskytuje službu de-obfuscation Service pořádaná na adrese Jsnic.org. . Využívá neuronové sítě a znalostní databáze tvořenou stávajícím kódem pro určení názvů proměnných. Při rozběhnutí formátování obvykle funguje docela dobře, některé jména - například pixelsizetargetMax. V šifrovací rutině doprovázející tento krok - může být spíše zábavná.

 Funkce ROT13 (PL $ 120) {
/ ** @type {! regexp} * /
var insfittitelregexp = nový regexp
(A0_0x395d ("0x1"), "I"); var.
pixelsizetargetmax = "A" ["Charcodeat"] (0);
VAR Zerosizemix = "Z" ["Charcodeat"] (0);
/ ** @type {číslo} * /
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&nbsp;

Generovat, ocenění výherní konference pro web designéry, se vrátí do NYC 24. dubna! Chcete-li rezervovat návštěvu vstupenek www.generateconf.com.

Tento článek byl původně publikován v čísle 283 časopisu Creative Web Design Web Designer. . Prodám vydání 283 zde nebo Přihlásit se zde web designer zde .

Související články:

  • 9 nejlepších rámců JavaScriptu
  • Odhalení: Nejnovější trendy JavaScriptu
  • 5 Úžasné JavaScript API

jak - Nejoblíbenější články

Jak vytvořit aplikaci s Vue.js

jak Feb 6, 2026

Ekosystém JavaScript se mění po dobu několika desetiletí, což znamená, že vývojáři předních konců museli sledovat n..


Jak malovat Elven Maiden

jak Feb 6, 2026

V tomto tutoriálu vás budu vést prostřednictvím mého procesu pro vytvoření podmanivého fantazie portrét Elven Maiden. J..


Navrhněte citlivým místem s emisemi na bázi EM

jak Feb 6, 2026

Pravděpodobně jste slyšeli, že byste měli používat relativní jednotky pro velikost písma. To je dobré pravidlo pro přístupný web design; Pokud uživatel změní výchozí velikos..


Jak malovat panoráma s bloky barvy

jak Feb 6, 2026

Dech beroucí výhledy, ohromující panorama a krásné městské scraky dělají skvělé fotografie, ale mohou být poněkud s..


Jak míchat barevné tužky

jak Feb 6, 2026

Naučit se míchat barevné tužky vám pomůže získat více z vašich nástrojů. Spíše než spoléhat se na jednotlivce, ploché barvě každé tužky, můžeme je smíchat dohromady, a..


10 Zlatá pravidla pro reagující SVGS

jak Feb 6, 2026

Mnoho výhod SVG - včetně nekonečně škálovatelných vektorových obrazů, malých velikostí souborů a přímou integraci ..


Vytvořit ohromující tileable textury v mixéru

jak Feb 6, 2026

Strana 1 z 2: Strana 1 Strana 1 Stránka..


Jak poskytnout fotorealistickou oblohu

jak Feb 6, 2026

Pro tento tutoriál budeme používat Vue Xstream. vytvořit oblohu plnou mraků. I když se můžete rozhodnout z..


Kategorie