javascript的函數(shù)可不可以hook

這篇文章主要介紹了javascript的函數(shù)可不可以hook的相關知識,內(nèi)容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇javascript的函數(shù)可不可以hook文章都會有所收獲,下面我們一起來看看吧。

網(wǎng)站建設公司,為您提供網(wǎng)站建設,網(wǎng)站制作,網(wǎng)頁設計及定制網(wǎng)站建設服務,專注于企業(yè)網(wǎng)站制作,高端網(wǎng)頁制作,對木制涼亭等多個行業(yè)擁有豐富的網(wǎng)站建設經(jīng)驗的網(wǎng)站建設公司。專業(yè)網(wǎng)站設計,網(wǎng)站優(yōu)化推廣哪家好,專業(yè)成都網(wǎng)站營銷優(yōu)化,H5建站,響應式網(wǎng)站。

javascript的函數(shù)可以hook;hook是一種動態(tài)修改函數(shù)執(zhí)行流程或返回結果的方法,JavaScript作為一種動態(tài)語言也可以進行hook操作,hook通常用來針對某些參數(shù)或者變量進行偵聽、打印輸出、替換等操作。

本教程操作環(huán)境:windows10系統(tǒng)、javascript1.8.5版、Dell G3電腦。

javascript的函數(shù)可以hook嗎

可以。

Hook是一種動態(tài)修改函數(shù)執(zhí)行流程或返回結果的方法,在實際應用中非常廣泛。Javascript作為一種動態(tài)語言,也可以進行Hook操作。隨著Javascript語言的發(fā)展,Hook的方法也越來越多,

hook直譯的意思為鉤子,在逆向領域通常用來針對某些參數(shù),變量進行偵聽,打印輸出,替換等操作。

示例如下:

示例代碼

function add(a,b){
return a + b
}

hook代碼

這是一個很簡單加法函數(shù),通過Hook能獲取到這兩個參數(shù)的值,相當于在return之前添加了一句代碼console.log(a,b),這樣便能輸出這兩個的值便于分析。那么可以使用如下的方式來復寫改函數(shù),而這個方式在javascript也就是裝飾者模式

let _add = add
add = function () {
  console.log('arguments', arguments)
  let result = _add.apply(this, arguments)
  console.log('result', result)
  return result // 如果不需要result 則可直接return _add()
}

完整代碼

function add(a, b) {
  return a + b
}
 
let _add = add
add = function () {
  console.log('arguments', arguments)
  let result = _add.apply(this, arguments)
  console.log('result', result)
  return result 
}
 
add(1, 2)

再次調(diào)用add(1,2)便會輸出arguments參數(shù)以及結果3,一個很簡單HOOK就實現(xiàn)了。

不過這個例子可能過于簡單,我所要表達的意思是,通過Hook,定位到我們想Hook的函數(shù)與變量,通過一系列操作(函數(shù)復寫,元編程),只要觸發(fā)該函數(shù)或使用(取值,修改)該變量,便能將我們想要的結果(前后的結果(如 加密前,加密后))獲取到。這才是我們的目的。

書中給的例子想說明的,想為某個原函數(shù)(比如這里的add)添加一些功能,但該原函數(shù)可能是由其他開發(fā)者所編寫的,那么直接修改原函數(shù)本身將可能導致未知BUG,于是便可以用上面的方式進行復寫原函數(shù)的同時,還不破壞原函數(shù)。

關于“javascript的函數(shù)可不可以hook”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對“javascript的函數(shù)可不可以hook”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

當前題目:javascript的函數(shù)可不可以hook
URL網(wǎng)址:http://muchs.cn/article10/pjjpdo.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)、網(wǎng)站收錄、搜索引擎優(yōu)化、企業(yè)建站、云服務器、網(wǎng)站設計

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

手機網(wǎng)站建設