常見JS混淆器和特徵

2022-07-12 19:15:11 字數 802 閱讀 9566

**:

特徵:混淆後會多出乙個變數,兩個函式。

函式方法名和變數名會替換為16進製制數,先定義乙個符號陣列:

var _0x30bb = ['log', 'hello\x20world!'];
再定義兩個函式,第乙個函式用於對符號陣列順序的干擾

(function (_0x38d89d, _0x30bbb2) 

};_0xae0a32(++_0x30bbb2);

}(_0x30bb, 0x153));

第二個函式用於實際**解析:

var _0xae0a = function (_0x38d89d, _0x30bbb2) ;
實際**中的符號被替換為第二個函式:

console[_0xae0a('0x1')](_0xae0a('0x0'));
源函式和混淆後的樣子基本不變,僅對符號做混淆:

// 混淆後原始程式變為:

function hi() hi();

// 原始程式

function hi()

hi();

特徵:預設情況,三者會壓縮**,google closure compiler在壓縮時會做簡單的優化。

uglifyjs的高階模式可以將壓縮後的**進行變數替換,

google closure compiler的高階模式可以將**精簡到最簡,類似於編譯器優化。

會在原始基礎上生成乙個物件

參考資料

js物件 屬性特徵 和 物件特徵

物件是可變的,我們通過引用而非值來操作物件。如果變數x是指向乙個物件的引用,那麼執行 var y x 變數y也是指向同乙個物件的引用,而非這個物件的副本。通過變數y修改這個物件也會對變數x造成影響。物件最常見的用法是create set query delete test enumerate 它的屬...

JS容易混淆的call apply和bind方法

詳情描述 共同點call 定義 呼叫乙個物件的乙個方法,用另乙個物件替換當前物件 理解 method1.call method2,num1,num2 method1 num1,num2 即用method1替換method2 例子 function animal function dog var an...

vm模板渲染和js瀏覽器混淆的問題

今天在編寫程式的時候發現了個非常奇怪的問題,自己弄亂了個東西,velocity模板渲染的時間問題,以及瀏覽器中velocity渲染要檢查的東西。比如 s1 不能被渲染,因為當使用者輸入瀏覽器位址 html請求時,velocity模板渲染會將vm檔案中可以被渲染的東西進行渲染,然而s1這種格式 vel...