SpringBoot打包第三方本地jar包
阿新 • • 發佈:2022-05-17
目錄
都是比較常用的方法。它們的作用一模一樣,即改變函式中的
簡介
!function (allModule) { function useModule(whichModule) { allModule[whichModule].call(null, "hello world!"); } useModule(0) }([ function module0(param) {console.log("module0: " + param)}, function module1(param) {console.log("module1: " + param)}, function module2(param) {console.log("module2: " + param)}, ]);
執行以上程式碼,會輸出 module0: hello world!
,相信通過淺顯易懂的變數名和函式名,應該就可以看懂大致含義了,呼叫 useModule(0)
,從所有函式裡選擇第一個,將 hello world!
傳遞給 module0
並輸出。
仔細觀察以上程式碼,我們會發現主要用到了 !function(){}()
和 function.call()
語法
Function.prototype.call() / apply() / bind()
Function.prototype.call()
、Function.prototype.apply()
、Function.prototype.bind()
this
指向,它們的區別如下:
-
call()
方法會立即執行這個函式,接受一個多個引數,引數之間用逗號隔開; -
apply()
方法會立即執行這個函式,接受一個包含多個引數的陣列; -
bind()
方法不會立即執行這個函式,返回的是一個修改過後的函式,便於稍後呼叫,接受的引數和call()
一樣。
解密方式
先找到加密位置,根據加密位置定位載入器,它一般是一個自執行函式
把載入器部分程式碼複製下來
可以列印載入器所需的函式
將目標函式放進來後我們就開始補其他函式