Hogyan kell elrejteni a JavaScript kódot a nézetforrásból

Feb 3, 2026
kézikönyv
How to hide your JavaScript code

Ha nem veszi óvintézkedéseket a JavaScript-kóddal, akkor könnyedén az életet, aki azt akarja, hogy klónozza. De ha a programozási folyamatok egynél több kattintás van, a támadók inkább a versenytárs szoftverének klónozására. Botok és más gonosztevők fésülés az interneten AWS vagy Azure hitelesítő általában nem zavarja Összezavart kódot - a következő honlap bejelentkezési adatait is fel lehet használni, hogy az enyém a Bitcoin, és lehet takarítani kevesebb erőfeszítéssel.

A JavaScript obsuscating összetett. Azonban a folyamat az utóbbi években jelentősen könnyebbé vált. Ma még a kisvállalkozások is megvédhetik a kódot a csillogó szemektől. Bizonyos esetekben a biztonságos biztonság csak egy csomópontot keres.

A következő lépések bevezetnek egy általánosan használt JavaScript Obfuscatort, és néhány további témát néznek a kezében.

  • A legjobb víruskereső szoftver
  • 15 Essential JavaScript eszköz

01. verzióellenőrzés

JavaScript Obfuscator a csomópont futási környezetben él. Indítsa el az általunk használt verziók ellenőrzésével. Az alábbi kimenet biztosítja a Tényleg való munkaállomáson található verzióállapotot a következő lépésekhez:

 Tamhan @ Tamhan-ThinkPad: ~ $ csomópont - verzió
V8.12.0
Tamhan @ Tamhan-ThinkPad: ~ $ NPM - Version
6.4.1 

02. Telepítse a programot

A Javascript-Obfsuskátort a munkaállomás globális összeszerelési gyorsítótárába kell telepíteni. Hívja meg az NPM-et a -g Paraméter és ne felejtsük el a superuser jogokat - a tényleges telepítési folyamatot néhány másodpercen belül kell elvégezni.

 Tamhan @ Tamhan-ThinkPad: ~ $ sudo npm install -g
JavaScript-Obfuscator
[sudo] Jelszó Tamhan számára:
. . .

+ [email protected]
Hozzáadott 103 csomagot 162 hozzászólóból
A 4.4-es években 

03. Hozzon létre egy mintát

A Testing Obfuscation a legjobb, ha van néhány "valódi" kód. Tehát kezdjük el egy kis HTML weboldalt. A munkavállalónak nevezett JavaScript-fájlt betölti, kijelenti egy gombot, és egy kis inline szkripteket tartalmaz. Ha böngészőben van betöltve, kattintson a gombra a szövegmező megjelenítéséhez.

 & lt; html & gt;
& lt; test & gt;
& lt; script src = "worker.js" & gt; & lt; / script & gt;
& lt; script & gt;
Funkcionális munkás () {
riasztás (dothetrick ());
}
& lt; / script & gt;
& lt; gomb típusa = "gomb" onclick = "munkavállaló (
) "& gt; Kattintson ide! & lt; / gomb és gt;
& lt; / test & gt;
& lt; / html & gt; 

04. Adjon hozzá egy kódot

A munkavállaló.js egy karakterláncváltozóval indul. Ezek egy klasszikus támadási cél - ha egy ROM-ot dekódolni kell, az összeszerelő általában a String szekvenciákat tartalmazó táblázatokat keresi. Ezenkívül a titkosítást olyan változókkal végzik, amelyek nagyon "beszélő" nevekkel rendelkeznek.

 var mystring = "Hello a jövőbeni plc-ről"

funkció dotetrick () {
Var Chiffrat;
chiffrat = rot13 (mystring);
vissza a chiffrat;
} 

05. A titkosítás végrehajtása

Mivel ez nem titkosításként szolgál, 101, viszonylag egyszerű helyettesítési titkosításra kellene rendezni. A Rot13 nem nehéz, de meglehetősen verboselybe van programozva. Dsoares végrehajtása Jön egy sor "beszéd" változók, és sok ételt biztosít az Obfuscatornak.

 Funkció Rot13 (STR) {
var re = új regexp ("[A-z]", "I");
var min = 'a'.charcodeat (0);
var max = 'z'.charcodeat (0);
var faktor = 13;
var eredmény = "";
str = str.touppercase ();
  
mert (var i = 0; i & lt; str. length, i ++) {
Eredmény + = (Re.Test (STR [I])?
String.fromcharcode ((str.charcodeat
(i) - min + faktor)% (max-min + 1)
+ MIN): STR [I]);
}
visszatérési eredmény;
} 

06. Első Obfuscation

Egyszerű, hogy a kód egy obfuscation futása egyszerű. Meghívás JavaScript-Obfuscator , és adja át a pontot, hogy elmondja a programnak, hogy dolgozzon az aktuális munkakönyvtárban található összes fájlon. Ez a szerző IBM munkaállomásának eredményét mutatja:

 Tamhan @ Tamhan-ThinkPad: ~ / FutureObfuscate /
Code $ JavaScript-Obfuscator. 

07. Átirányítási kimenet

A fájlok közvetlenül a tartály mappába történő tüzelése nem hatékony, mivel a neveket meg kell változtatni, mielőtt használhatók. A jobb módja a Kimenet paraméter. Ha JavaScript-Obfuscator találja, a program létrehoz egy almappát a aktuális könyvtárat és kiírja az eredményeket a munkájával van.

 Tamhan @ Tamhan-ThinkPad: ~ / FuteObfuscate / Code $
JavaScript-Obfuscator. --Output ./obfusca

08. Az eredmények elemzése

How to hide your JavaScript code: Results

Szörnyű, de rosszabb lehet

Merüljön az "Obfusca" mappába, és nyissa meg a munkavállaló új verzióját, hogy ünnepelje a szemét a jelen lépéshez mellékelt abominációra. A kód formázását rosszul kezelték. A módszernevek azonban ugyanakkor maradtak, mivel a külső feliratokhoz szükségesek. Ezenkívül a húrok most egy tömbbe ülnek, ahol a támadó kényelmesen betakaríthatja őket.

 var a0_0xb9e2 = ['hello \ x20from \ x20Future
\ x20plc ',' [a-z] ',' Test ',' Charcodeat ']; 

09. A string betakarításának megakadályozása

A Javascript-Obfuscator egy sztring-mangling algoritmusokkal rendelkezik, amelyek konfigurálhatók - tömb-kódolás . Ne feledje, hogy a kimeneti könyvtárat minden egyes felhívás előtt ki kell üríteni, mert az elfelejtés az előző futtatásból származó kimeneti fájlok "rekurzív" -jához vezet.

 Tamhan @ Tamhan-ThinkPad: ~ / FuteObfuscate / Code $
JavaScript-Obfuscator. - output ./obfusca
- STRING-tömb-kódoló alap64 

10. Nézd meg újra az eredményeket

Ezen a ponton a Obfuscator kimenetünk eltérőnek tűnik - a fájl tetején lévő tömb sokkal kevésbé olvasható. Ez azonban nem oldja meg az összes problémát. Ha néhány OBSUSCATION CYCLE-t végez, akkor végül végül a Mark-Uphoz hasonlóan a következő lépéshez hasonlóan:

 var A0_0x31E5 = ['bgvuz3ro', 'dgvzda ==', '
Znjvbunoyxjdb2rl ',' y2hhcknvzgvbda == ','
DG9VCHBLKNHC2U = '];
. . .
. . .
var mystring = 'hello \ x20from \ x20future \ x20plc' 

11. A randomizáció megértése

Az Obfuscators a nagy teljesítmény és a kódvédelem közötti nyomásmezenként működik. A probléma egyik módja a "randomizálási" elemek. A futásidejű drága obszuskációkat nem adják hozzá minden csomóponthoz, de csak egy részhalmazához. A csomópontok érintettek, vagy általában véletlenszerű számgenerátoron keresztül történik, amelynek érzékenysége hangolható.

12. Menj a húrok után

A fent említett véletlenszám-generátor számokat bocsát ki nulláról. Ha a szám nagyobb, mint a küszöbérték, a módosítás nem kerül sor. Beállítás strandarroythreshold Az egyik értékre azt jelenti, hogy minden szám kisebb, mint a küszöbérték, biztosítva, hogy mindegyik és minden karakterlánc kézbesüljön.

 Tamhan @ Tamhan-ThinkPad: ~ / FuteObfuscate / Code $
JavaScript-Obfuscator. - output ./obfusca
- String-Array-kódoló bázis64
--stringArdthreshold 1 

13. Injektáljon véletlen kódot

Elemzési eszközök, például a Jsnice profit, amelynek kis kódja van. Tekintettel arra, hogy a javascript-álcázás szünetek a kódot egy AST amúgy, semmi ellen szól behelyezése „szemetet kód” menet közben. Mivel ez a funkció jelentős duzzadást ad, a fejlesztőknek manuálisan kell aktiválniuk a következő két paraméter segítségével:

 --dead-code-injekció & lt; Boolean & Gt;
--dead-code-injekció-küszöbérték & lt; number & gt; 

14. Élvezze a káoszt

Mindkettővel futtatja az obsuscatort --dead-Code-injekció igaz és --dead-Code-injekciós-küszöbérték 1 A készlet körülbelül 2,5 kb méretű fájlhoz vezet. A kód megpróbálásának megpróbítása a többnyire tautológiai javascript szinte indokferömény falához vezet.

15. Agresszíven módosítja a programáramlást

A Törés kód egy AST lehetővé teszi a mély átalakításokat. A Controlflowflattening A TRUE attribútum azt mondja a programnak, hogy inline funkciók hívásokat kezdeményezhet. Ez a generált kód jelentős bővüléséhez vezet - tartsa szem előtt, hogy az eredmények 150 százalékos teljesítményt érhetnek el.

16. bosszantja a hibakeresőt

A hibakeresési tárgyak a világ legnagyobb ajándéka a hackereknek. Néhány hívás a Console.Log () és a barátai számára, és a barátai számára értékes információkat adhatnak arról, hogy mi történik a program belsejében - jó példa lenne az ábrán látható részlet:

 Funkció dothetrick ()
{
Var Chiffrat;
konzol.log ("A titkosításhoz való felkészülés
chiffrat ");
chiffrat = rot13 (mystring);
konzol.log ("visszatérő chiffrat");
vissza a chiffrat;
} 

17. Értékelje a technikai problémákat

Megpróbálhatunk újrakezdeni a programot az alábbi parancssal. Letiltja a String Caching funkciót, és átirányítja a konzol naplózását átirányítás útján.

 Tamhan @ Tamhan-ThinkPad: ~ / Asztal /
DeadStuff / 2018nov / FutureObfuscate / Code $
JavaScript-Obfuscator. --Output ./obfusca
- tömb-kódoló hamis
--disableConsoleOutput True 

18. Játsszon macskát és egér játékokat

Obfuscator és böngésző gyártók harcolnak egy hosszú és keserű csata a debugger funkció. Ennek köszönhetően az "agresszív" intézkedések, például a program áramlási megszakítóinak konzol átirányítása, amely a lépést kísérve, általában nem működik hosszú ideig.

 DebugProtection: FALSE,
DebugprotectionInteral: FALSE, 

19. Gyors online obsuscation

A teljes csomópont telepítése Az egyik vagy két fájl obsuscatlatálásához értelmetlen. Látogatás obfuscator.io A böngészőben élett program online verziójának elérése. Ellenőrizze és comboboxokat a fő bemenet alatt hagyja módosítani a program viselkedését a fenti lépésekben.

20. További információ

How to hide your JavaScript code: Learn more

Kattintson az összes szükséges paraméter megtekintéséhez

A fejlesztői csapat viszonylag részletes dokumentációt tart fenn, amely megmagyarázza, hogy a különböző parancssori paraméterek kölcsönhatásba lépnek egymással. Egyszerűen látogasson el hevedez Ha a fent említett "rövid segítség" kimenet nem segít elérni a célját.

21. Obfuscator halandó ellensége

How to hide your JavaScript code: JS Nice

JS NICE egy egyszerű módja annak, hogy a kódot olvashatatlanná teszi

Az Eth Zürich egy de-obfuscation szolgáltatást biztosít jsnice.org . Neurális hálózatokat és egy meglévő kódból álló tudásbázisot használ a változó nevek meghatározásához. A formázás elfogyasztása közben általában jól működik, néhány nevet - például PixelSizetargetmax A jelenlétet kísérő titkosítási rutinban - meglehetősen szórakoztató lehet.

 Funkció Rot13 (PL $ 120) {
/ ** @type {! Regexp} * /
var inufficiproyexp = új regexp
(A0_0x395D ("0x1"), "I"); varha
PixelSizetargetmax = "A" ["Charcodeat"] (0);
var Zerosizemax = "Z" ["Charcodeat"] (0);
/ ** @type {szám} * /
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 

Generálja, a díjnyertes konferencia webes tervezők számára, Április 24-25. A jegyek meglátogatása www.generateconf.com

Ezt a cikket eredetileg a Creative Web Design magazin 283. kiadásában tették közzé Web designer . Itt vásároljon 283 kérdést vagy Iratkozzon fel itt a webdesignerre .

Kapcsolódó cikkek:

  • 9 a legjobb JavaScript keretrendszerek közül
  • Kiderült: A legújabb JavaScript-trendek
  • 5 félelmetes JavaScript API-k

kézikönyv - Most Popular Articles

Hogyan kell rajzolni egy kutyát

kézikönyv Feb 3, 2026

A mai bemutató megmutatja, hogyan kell felhívni a kutyát. A kutyák és a macskák csontvázai meglehetősen hasonlóak, kül�..


Hogyan kódolja a Smart szöveges hatásokat a CSS-vel

kézikönyv Feb 3, 2026

[Kép: középső gyermek] A Rollover Linkek nagyszerű módja annak, hogy megragadjanak a felhasználó figyelmét, ..


Hogyan építsünk egy blogolási helyet Gatsby-vel

kézikönyv Feb 3, 2026

Olyan keretek, mint a reagálás csak a JavaScript-ot az ügyfelek felé küldje el, amelyet a képernyőn megjelenő elemek lét..


Mi a terminátor vonal?

kézikönyv Feb 3, 2026

A világítás sok aspektusa van, amelyet meg kell fontolnod a forma közvetítéséhez. Egy nagyon hasznos alapvető a terminát..


Kezdjük a rozsda

kézikönyv Feb 3, 2026

Page 1 of 2: 1 oldal 1 oldal 2. oldal ..


Hogyan készítsünk Redshift Proxy-t a Cinema 4D-ben

kézikönyv Feb 3, 2026

Cinema 4D Nagy sok dolog, de lassíthatja, ha sok tárgy van a jelenetben, ami valódi probléma, amikor a geometria...


Építsen egy egyszerű zenelejátszót reagálással

kézikönyv Feb 3, 2026

Reagál A népszerű JavaScript könyvtár a felhasználói felületek építéséhez, és ebben a bemutatóban megmu..


Egyéni Maya interfész létrehozása

kézikönyv Feb 3, 2026

A modern szoftverek rendkívül erősek és mindenre kiterjedőek lehetnek. Maya nem különbözik, és egy zavaros tömböt kínál az eszközök, parancsok és opciókhoz, hogy segítsen el..


Kategóriák