Miten piilottaa JavaScript-koodisi Näytä lähde

Feb 3, 2026
Miten tehdään
How to hide your JavaScript code

Jos et ota varotoimia JavaScript-koodisi kanssa, teet elämästä helppoa kaikille, jotka haluavat kloonata sitä. Mutta jos ohjelmointiprosessit ovat useampia kuin yksi klikkaus pois, hyökkääjät haluavat kloonata kilpailijan ohjelmistoa. Botit ja muut väärentäneet Internetin kampaamiset AWS- tai Azure-tunnistetiedot eivät yleensä häiritse havaittuja koodia - Seuraava sivuston kirjautumistieto voidaan käyttää myös bitcoiniin ja voidaan korjata vähemmän vaivaa.

Javascript ei ole monimutkainen. Prosessi on kuitenkin merkittävä helpompaa viime vuosina. Tänään jopa pienet yritykset voivat ja sen pitäisi suojata koodinsa upeista silmistä. Joissakin tapauksissa turvallinen on vain solmu.js-paketin kutsuminen.

Seuraavat vaiheet ottavat käyttöön yleisesti käytetyn JavaScript Obfuscratorin ja katsomaan myös muutamia muita ongelmia koskevia aiheita.

  • Paras virustorjuntaohjelmisto
  • 15 Essential JavaScript Työkalut

01. Version tarkistus

JavaScript Obfuscator asuu solmussa Runtime-ympäristössä. Aloitamme tarkistamalla käytetyt versiot. Alla oleva tulostus tarjoaa version tilaan, joka löytyy teidän todella toimivasta työasemasta, jota käytetään seuraavista vaiheista:

 Tamhan @ Tamhan-ThinkPad: ~ $ solmu --versio
v8.12.0
Tamhan @ Tamhan-Thinkpad: ~ $ npm --versio
6.4.1 

02. Asenna ohjelma

JavaScript-Obfuscator olisi asennettava työaseman maailmanlaajuiseen kokoonpanon välimuistiin. Vedota NPM: n kanssa -s Parametri ja älä unohda tarjota Superuser-oikeuksia - todellinen käyttöönottoprosessi on tehtävä muutamassa sekunnissa.

 Tamhan @ Tamhan-Thinkpad: ~ $ sudo npm asentaa -g
JavaScript-Obfuscator
[sudo] salasana Tamhan:
. . .

+ [email protected]
Lisätty 103 pakettia 162 osallistujasta
4.4s 

03. Luo näyte

Testaus häiriö toimii parhaiten, jos meillä on joitakin "todellisia" koodia. Joten aloitamme pienellä HTML-verkkosivulla. Se lataa JavaScript-tiedoston nimeltä Worker.js, julistaa painikkeen ja sisältää pienen bittin inline-komentoinnit. Kun se on ladattu selaimeen, napsauta painiketta, jos haluat näyttää tekstin.

 & lt; html & gt;
& lt; body & gt;
& lt; script src = "työntekijä.js" & gt; & lt; / script & gt;
& lt; skripti & gt;
Toiminta työntekijä () {
hälytys (dothetarrick ());
}
& lt; / script & gt;
& lt; button tyyppi = "painike" onclick = "työntekijä (
) "& gt; klikkaa minua! & lt; / button & gt;
& lt; / body & gt;
& lt; / html & gt; 

04. Lisää koodi

Työntekijät alkavat merkkijono muuttujalla. Ne ovat klassinen hyökkäystavoite - jos ROM on dekoodattava, kokoonpano alkaa tavallisesti etsimällä taulukoita, jotka sisältävät merkkijonoja sekvenssejä. Lisäksi salaus suoritetaan käyttämällä joukon muuttujia, joilla on hyvin "puhuminen" nimet.

 var mystring = "Hei tulevasta PLC: stä"

Toiminto DotheTrick () {
var chiffrat;
chiffrat = ROT13 (Mystring);
Palauta chiffrat;
} 

05. Täytä salaus

Koska tätä ei ole tarkoitettu salauksena 101, meidän on ratkaistava suhteellisen yksinkertainen korvaus salaus. ROT13 ei ole vaikeaa, mutta se voidaan ohjelmoida melko verbosely. Dsoaresin toteutus Mukana on joukko "puhuvia" muuttujia ja tarjoaa paljon ruokaa Obfuscatorille.

 Toiminto ROT13 (STR) {
var re = uusi regexp ("[A-Z]", "I");
var min = 'a'.chcodeat (0);
var max = 'z'.chcodeat (0);
var tekijä = 13;
var tulo = "";
str = str.tuuppercase ();
  
Sillä (var i = 0; i & lt; str.length; i ++) {
Tulos + = (Re.Test (STR [I])?
String.fromcharcode ((str.chcarcodeat
(i) - min + tekijä)% (max-Min + 1)
+ min): STR [I]);
}
palata tulos;
} 

06. Ensimmäinen häiriö

Koodin havainnon suorittaminen on yksinkertainen. Vedota JavaScript-Obfuscator ja siirry pisteeseen, jotta voit kertoa ohjelmasta työskennellä kaikkiin nykyisessä työhakemistossa. Tämä osoittaa tuloksen tekijän IBM Workstation:

 TAMHAN @ Tamhan-ThinkPad: ~ / FutumoBfuscate /
Koodi $ JavaScript-Obfuscator. 

07. Uudelleenohjausteho

Tiedostojen sammuttaminen suoraan kontti kansioon on tehoton, koska nimet on vaihdettava ennen niiden käyttöä. Parempi tapa liittyy lähtö parametri. Jos JavaScript-Obfuscator Tarkastelee sen, ohjelma tuottaa alikansioa nykyisessä työhakemistossa ja kaataa sen työnsä tulokset siellä.

 Tamhan @ Tamhan-Thinkpad: ~ / FutumoBfuscate / Code $ $
JavaScript-Obfuscator. --Output ./obusca

08. Analysoi tulokset

How to hide your JavaScript code: Results

Se on kamala, mutta se voi olla pahempi

Sukella "Obfusca" -kansioon ja avaa uuden version Worker.js juhlaa silmäsi kauhistuttavaan, joka näkyy tämän vaiheen mukana. Koodin muotoilu mangled pahasti. Menetelmän nimet pysyivät kuitenkin samana, koska niitä tarvitaan ulkoisiin kuvioihin. Lisäksi jouset istuvat matriisin, jossa hyökkääjä voi korjata ne kätevästi.

 var A0_0XB9E2 = ['Hellox \ X20From \ X20FURE
\ X20Plc "," [A-Z] "," testi "," charcodeat "]; 

09. Estä merkkijonokorjuu

JavaScript-Obfuscatorissa on valikoima merkkijonoja, jotka voidaan konfiguroida käyttämällä --String-array-koodaus . Muista, että lähtöhakemisto on tyhjennettävä ennen kutakin kutsua, koska unohtaminen tekee niin johtaa "rekursiivisen" tulostustiedostojen häiriötä edellisestä juoksusta.

 Tamhan @ Tamhan-Thinkpad: ~ / FutumoBfuscate / Code $ $
JavaScript-Obfuscator. --Output ./obusca
--String-array-koodaus Base64 

10. Katsokaa tuloksia uudelleen

Tässä vaiheessa Obfusterin tuotos näyttää erilaiselta - taulukosta tiedoston yläosassa on paljon vähemmän luettavissa. Tämä ei kuitenkaan ratkaise kaikkia ongelmia. Jos suoritat muutaman häiriön sykliä, lopulta päädyt, että tämä vaihe, joka liittyy tähän vaiheeseen:

 var A0_0X31E5 = ['BGVUZ3RO', 'DGVZDA ==', '
Znjvbunoyxjdb2rl ',' y2hhcknvzgvbda == ','
DG9VCHBLCKNHC2U = '];
. . .
. . .
var mystring = 'Hei x20from \ x20future \ x20plc' 

11. Satunnaisuuden ymmärtäminen

Obfusterit toimivat paine-kenttään korkean suorituskyvyn ja koodisuojan välillä. Yksi tapa käsitellä ongelmaa liittyy "satunnaistamisen" elementtejä. Runtime-kalliita havaintoja ei lisätä kaikkiin solmuihin, vaan vain osajoukkoon. Havaitseminen, jos solmut vaikuttavat tai eivät yleensä tehneet satunnaislukugeneraattorin kautta, jonka herkkyys voidaan virittää.

12. Mene jousien jälkeen

Edellä mainittu satunnaislukugeneraattori lähettää numerot, jotka vaihtelevat nollasta yhteen. Jos numero on suurempi kuin kynnys, muutos ei tapahdu. Asetus StreuraRARYTHRESHOLD arvoon, että kaikki numerot ovat pienempiä kuin kynnysarvo, varmistaen, että jokainen merkkijono muuttuu.

 Tamhan @ Tamhan-Thinkpad: ~ / FutumoBfuscate / Code $ $
JavaScript-Obfuscator. --Output ./obusca
--String-array-koodaus Base64
--Stringarraythreshold 1 

13. Injektoi satunnaiskoodi

Analyysityökaluja, kuten JSnice voitto pienen koodin perustamisesta. Kun otetaan huomioon, että JavaScript-Obfuscator rikkoo koodin AST: ksi, mikään ei puhu "roskakoodin" lisäämistä lennossa. Koska tämä ominaisuus lisää merkittäviä Bloat, kehittäjien on aktivoitava se manuaalisesti tämän seuraavan kahden parametrin kautta:

 --koodi-injektio & lt; boolean & gt;
--Dead-koodi-injektio-kynnys & lt; numero & gt; 

14. Nauti kaaosta

Obfuscatorin käynnissä molemmat --koodi-injektio totta ja --koodi-ruiskutuskynnys 1 Aseta johtaa noin 2,5 kb: n tiedostoon. Yritetään mukauttaa koodia johtaa lähes epäsäännölliseen seinään enimmäkseen tautologinen JavaScript.

15. Muokkaa ohjelman virtausta aggressiivisesti

Rikkominen koodi AST: hen mahdollistaa syviä muutoksia. Aseta kontrolliflathing Attribuutti tosi kertoo ohjelmaan, että se voi irrottaa toimintopuhelut. Tämä johtaa syntyneen koodin merkittävään laajentamiseen - muista, että tulokset voivat kestää 150 prosentin suorituskykyä.

16. ärsyttää debuggeria

Artefaktit debuggingista ovat maailman suurin lahja hakkereille. Muutamat puhelut konsoliin.log () ja sen ystävät voivat antaa hyökkääjän arvokasta tietoa siitä, mitä ohjelman sisällä tapahtuu - hyvä esimerkki olisi kuittaus:

 Toiminto DotheTrick ()
{
var chiffrat;
konsoli.log ("Valmistautuminen salakuunteeseen
chiffrat ");
chiffrat = ROT13 (Mystring);
console.log ("palauttaa chiffrat");
Palauta chiffrat;
} 

17. Arvioi tekniset ongelmat

Voimme yrittää uudistaa ohjelman uudelleen alla olevaan komentoon. Se estää String Caching -ominaisuuden ja sen pitäisi poistaa konsolin kirjaaminen uudelleenohjauksen kautta.

 Tamhan @ Tamhan-ThinkPad: ~ / Desktop /
DEADSTUFT / 2018NOV / FUTUMBSCUSCATE / Code $
JavaScript-Obfuscator. --Output ./obusca
--String-array-koodaus väärä
--DisableconsoleOutput True 

18. Pelaa kissa- ja hiiripelejä

Obfuscator ja selaimen myyjät taistelevat pitkän ja katkeran taistelun Debugger-toiminnasta. Tästä johtuen "aggressiiviset" toimenpiteet, kuten tämän vaiheen mukana esitetyn ohjelman virtausneuvoston konsolin uudelleenohjaus, eivät yleensä toimi pitkään.

 Debugprotection: FALSE,
DebugprotectionInterval: FALSE, 

19. Nopea online-häiriö

Koko solmu.js-paketin asentaminen yksi tai kaksi tiedostoa varten on turhaa. Vierailla Obfuscator.io Voit käyttää ohjelman verkkoversiota, joka asuu selaimessasi. Tarkista ja comboBoxit Päätuloksen alapuolella voit muokata ohjelman käyttäytymistä edellä esitetyissä vaiheissa.

20. Lisätietoja

How to hide your JavaScript code: Learn more

Klikkaa nähdäksesi kaikki tarvittavat parametrit

Kehittäjätiimi ylläpitää suhteellisen yksityiskohtaisia ​​ohjeita, jotka selittävät eri komentoriviparametrit vuorovaikutuksessa toistensa kanssa. Yksinkertaisesti vierailu päätä täällä Jos yllä oleva "lyhyt help" -lähtö ei auta saavuttamaan tavoitteesi.

21. Obfusterin kuolevainen vihollinen

How to hide your JavaScript code: JS Nice

JS Nizza on helppo tapa tehdä koodi lukematon

Eth Zurich tarjoaa DE-Obfuscation-palvelun isännöimään jsnice.org . Se käyttää hermoverkkoja ja tietotietokanta, joka koostuu nykyisestä koodista määrittämään muuttujan nimet. Samalla kun muotoilu yleensä toimii melko hyvin, jotkut nimet - kuten PixelsizetargetMax Tässä vaiheessa mukana oleva salausrutiini voi olla melko hauska.

 Toiminto ROT13 (PL 120 dollaria) {
/ ** @Type {! regexp} * /
var orfficregexp = uusi regexp
(A0_0x395d ("0x1"), "I"); var
pixelsizetargetmax = "A" ["Charcodeat"] (0);
var zerosizemax = "z" ["Charcodeat"] (0);
/ ** @Type {numero} * /
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 

Generate, palkittu konferenssi web-suunnittelijoille, palaa NYC: hen 24-25! Voit varata liput vierailulle www.generateconf.com

Tämä artikkeli julkaistiin alun perin asiassa 283 Creative Web Design Magazine Nettisivujen suunnittelija . Osta numero 283 Täällä tai Tilaa Web-suunnittelija tähän .

Aiheeseen liittyvät artikkelit:

  • 9 parhaista JavaScript-kehyksistä
  • Paljastui: uusimmat JavaScript-trendit
  • 5 Awesome JavaScript Apis

Miten tehdään - Suosituimmat artikkelit

Kuinka välttää Amazon Prime Day 2020 Fail

Miten tehdään Feb 3, 2026

(Kuva luotto: Amazon) Vaikka emme vielä tiedä tarkkaa päivämäärää Amazon Prime Day 2020 Silti ..


Merkki typografia: täydellinen opas

Miten tehdään Feb 3, 2026

Pentagram loi ripeshoke tyyppihyväksyntää julkiselle teatterille (Kuva luotto: Pentagrammille yleisölle) ..


Krita-opetusohjelmat: Opi digitaalisen taideohjelmiston perusteet

Miten tehdään Feb 3, 2026

Sivu 1/2: Krita opetusohjelma: Etsi tiesi Krita opetusohjelma: Etsi tiesi Krita opetusohjelma: Siitä ..


Nopeus veistää olento Zbrushissa

Miten tehdään Feb 3, 2026

Kun käsitteitä olentoja Zbrushissa, esitellä ideasi harrastajana, asentamaton 3D-taide voi tehdä kovasti yleis..


Luo 3D-teksti Photoshopissa: vaiheittainen opas

Miten tehdään Feb 3, 2026

Tässä opetusohjelmassa näytämme sinulle, miten voit luoda pala 3D-taide jossa on realistinen kolmiulotteinen t..


Kuinka luoda karvainen sarjakuvahahmo

Miten tehdään Feb 3, 2026

Sivu 1/2: Sivu 1 Sivu 1 Sivu 2 Hahmosuunnittelu on taid..


Paint wet-on-märkä öljyissä

Miten tehdään Feb 3, 2026

Maalaus "Alla prima" (eli maalaus märkä märkä, yhdessä istunnossa) on ihanteellinen tekniikka öljymaalien luonteen omaksua...


10 Top Houdini-opetusohjelmat

Miten tehdään Feb 3, 2026

Houdini on tehokas peto, jossa on työkaluja VFX: n rakentamiseen, jota käytetään monissa Hollywood-elokuvissa. Mutta alkuperäinen oppimiskäyrä on jyrkkä, joten olemme koonneet tämän..


Luokat