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.
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
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
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;
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;
}
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;
}
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.
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
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 "];
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
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'
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ää.
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
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;
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.
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ä.
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;
}
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
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,
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.
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.
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 = "";
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:
(Kuva luotto: Amazon) Vaikka emme vielä tiedä tarkkaa päivämäärää Amazon Prime Day 2020 Silti ..
Pentagram loi ripeshoke tyyppihyväksyntää julkiselle teatterille (Kuva luotto: Pentagrammille yleisölle) ..
Sivu 1/2: Krita opetusohjelma: Etsi tiesi Krita opetusohjelma: Etsi tiesi Krita opetusohjelma: Siitä ..
Kun käsitteitä olentoja Zbrushissa, esitellä ideasi harrastajana, asentamaton 3D-taide voi tehdä kovasti yleis..
Tässä opetusohjelmassa näytämme sinulle, miten voit luoda pala 3D-taide jossa on realistinen kolmiulotteinen t..
Sivu 1/2: Sivu 1 Sivu 1 Sivu 2 Hahmosuunnittelu on taid..
Maalaus "Alla prima" (eli maalaus märkä märkä, yhdessä istunnossa) on ihanteellinen tekniikka öljymaalien luonteen omaksua...
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..