亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網(wǎng)為廣大站長提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.430618.com 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

1 JAVAScript 簡介

JavaScript 壓縮、混淆和加密技術(shù)

對于網(wǎng)頁來說,其邏輯是依賴于JavaScript來實(shí)現(xiàn)的,JavaScript 有如下特點(diǎn):

  • JavaScript 代碼運(yùn)行于客戶端,也就是它必須要在用戶瀏覽器端加載并運(yùn)行。
  • JavaScript 代碼是公開透明的,也就是說瀏覽器可以直接獲取到正在運(yùn)行的 JavaScript 的源碼。

壓縮、混淆、加密技術(shù):

  • 代碼壓縮:即去除JavaScript 代碼中的不必要的空格、換行等內(nèi)容,使源碼都壓縮為幾行內(nèi)容,降低代碼可讀性,當(dāng)然同時(shí)也能提高網(wǎng)站的加載速度。
  • 代碼混淆:使用變量替換、字符串陣列化、控制流平坦化、多態(tài)變異、僵尸函數(shù)、調(diào)試保護(hù)等手段,使代碼變得難以閱讀和分析,達(dá)到最終保護(hù)的目的。但這不影響代碼原有功能。是理想、實(shí)用的JavaScript保護(hù)方案
  • 代碼加密:可以通過某種手段將 JavaScript 代碼進(jìn)行加密,轉(zhuǎn)成人無法閱讀或者解析的代碼,如將代碼完全抽象化加密,如 eval 加密。另外還有更強(qiáng)大的加密技術(shù),可以直接將 JavaScript 代碼用 C/C++ 實(shí)現(xiàn),JavaScript 調(diào)用其編譯后形成的文件來執(zhí)行相應(yīng)的功能,如Emscripten 還有 WebAssembly。

2 OB混淆

OB 混淆全稱 Obfuscator,Obfuscator 其實(shí)就是混淆的意思。

官網(wǎng):https://obfuscator.io/ ,其作者是一位叫 Timofey Kachalov 的俄羅斯JavaScript開發(fā)工程師,早在 2016 年就發(fā)布了第一個(gè)版本。

2.1 OB 混淆具有以下特征:

1、一般由一個(gè)大數(shù)組或者含有大數(shù)組的函數(shù)、一個(gè)自執(zhí)行函數(shù)、解密函數(shù)和加密后的函數(shù)四部分組成;

2、函數(shù)名和變量名通常以 _0x 或者 0x 開頭,后接 1~6 位數(shù)字或字母組合;

3、自執(zhí)行函數(shù),進(jìn)行移位操作,有明顯的 push、shift 關(guān)鍵字;

例如在下面的例子中,_0x3f26() 方法就定義了一個(gè)大數(shù)組,自執(zhí)行函數(shù)里有 push、shift 關(guān)鍵字,主要是對大數(shù)組進(jìn)行移位操作,_0x1fe9() 就是解密函數(shù),hi() 就是加密后的函數(shù)。

 

 

2.2 OB混淆介紹

JavaScript 混淆完全是在 JavaScript 上面進(jìn)行的處理,它的目的就是使得 JavaScript 變得難以閱讀和分析,大大降低代碼可讀性,是一種很實(shí)用的 JavaScript 保護(hù)方案。

JavaScript 混淆技術(shù)主要有以下幾種:

  • 變量混淆: 將帶有含意的變量名、方法名、常量名隨機(jī)變?yōu)闊o意義的類亂碼字符串,降低代碼可讀性,如轉(zhuǎn)成單個(gè)字符或十六進(jìn)制字符串。
  • 字符串混淆: 將字符串陣列化集中放置、并可進(jìn)行 MD5 或 Base64 加密存儲,使代碼中不出現(xiàn)明文字符串,這樣可以避免使用全局搜索字符串的方式定位到入口點(diǎn)。
  • 屬性加密: 針對 JavaScript 對象的屬性進(jìn)行加密轉(zhuǎn)化,隱藏代碼之間的調(diào)用關(guān)系。
  • 控制流平坦化: 打亂函數(shù)原有代碼執(zhí)行流程及函數(shù)調(diào)用關(guān)系,使代碼邏變得混亂無序。
  • 僵尸代碼: 隨機(jī)在代碼中插入無用的僵尸代碼、僵尸函數(shù),進(jìn)一步使代碼混亂。
  • 調(diào)試保護(hù): 基于調(diào)試器特性,對當(dāng)前運(yùn)行環(huán)境進(jìn)行檢驗(yàn),加入一些強(qiáng)制調(diào)試 debugger 語句,使其在調(diào)試模式下難以順利執(zhí)行 JavaScript 代碼。
  • 多態(tài)變異: 使 JavaScript 代碼每次被調(diào)用時(shí),將代碼自身即立刻自動發(fā)生變異,變化為與之前完全不同的代碼,即功能完全不變,只是代碼形式變異,以此杜絕代碼被動態(tài)分析調(diào)試。
  • 鎖定域名: 使 JavaScript 代碼只能在指定域名下執(zhí)行。
  • 反格式化: 如果對 JavaScript 代碼進(jìn)行格式化,則無法執(zhí)行,導(dǎo)致瀏覽器假死。
  • 特殊編碼: 將 JavaScript 完全編碼為人不可讀的代碼,如表情符號、特殊表示內(nèi)容等等。

總之,以上方案都是 JavaScript 混淆的實(shí)現(xiàn)方式,可以在不同程度上保護(hù) JavaScript 代碼。

2.3 OB混淆JS

新建一個(gè)文件夾,隨后進(jìn)入該文件夾,初始化工作空間

npm init

提示我們輸入一些信息,創(chuàng)建一個(gè) package.json 文件,這就完成了項(xiàng)目初始化了。

接下來我們來安裝 javascript-obfuscator這個(gè)庫:

npm install javascript-obfuscator --save

2.3.1 代碼壓縮

這里javascript-obfuscator也提供了代碼壓縮的功能,使用其參數(shù) compact即可完成JavaScript 代碼的壓縮,輸出為一行內(nèi)容。默認(rèn)是 true,如果定義為 false,則混淆后的代碼會分行顯示。

var code = `
let x = '1' + 1
console.log('x', x)
  `

const options = {
  compact: true,  // 代碼壓縮配置
}

const obfuscator = require('javascript-obfuscator')

function obfuscate(code, options) {
  return obfuscator.obfuscate(code, options).getObfuscatedCode()
}

console.log(obfuscate(code, options))

2.3.2 變量名混淆

變量名混淆可以通過配置identifierNamesGenerator 參數(shù)實(shí)現(xiàn),我們通過這個(gè)參數(shù)可以控制變量名混淆的方式,如hexadecimal則會替換為 16 進(jìn)制形式的字符串,在這里我們可以設(shè)定如下值:

  • hexadecimal:將變量名替換為 16 進(jìn)制形式的字符串,如 0xabc123。
  • mangled:將變量名替換為普通的簡寫字符,如 a、b、c 等。 該參數(shù)默認(rèn)為hexadecimal。

我們將該參數(shù)修改為 mangled 來試一下:

const code = `
let hello = '1' + 1
console.log('hello', hello)
`
const options = {
  compact: true,
  identifierNamesGenerator: 'mangled'
}

2.3.3 字符串混淆

字符串混淆,即將一個(gè)字符串聲明放到一個(gè)數(shù)組里面,使之無法被直接搜索到。我們可以通過控制 stringArray 參數(shù)來控制,默認(rèn)為 true。

const code = `
var a = 'hello world'
`;
const options = {
  compact: false,
  unicodeEscapeSequence: true  //對字符串進(jìn)行 Unicode 轉(zhuǎn)碼
};


JavaScript混淆知識點(diǎn),今天就暫時(shí)先介紹到這里。這些知識不論對前端開發(fā)人員還是爬蟲技術(shù)人員都會有所收獲,有所感悟。只有了解清楚它的原理,才能更好的使用、開發(fā)乃至攻防。有問題歡迎在評論區(qū)留言,也可以動動小手點(diǎn)點(diǎn)贊!

分享到:
標(biāo)簽:JavaScript
用戶無頭像

網(wǎng)友整理

注冊時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運(yùn)動步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定