沐陽js逆向
Hook 技術(shù)原理
Hook 是一種鉤子技術(shù),在系統(tǒng)沒有調(diào)用函數(shù)之前,鉤子程序就先得到控制權(quán),這時(shí)鉤子函數(shù)既可以加工處理(改變)該函數(shù)的執(zhí)行行為,也可以強(qiáng)制結(jié)束消息的傳遞。
簡單來說,修改原有的 JS 代碼就是 Hook。
Hook 技術(shù)之所以能夠?qū)崿F(xiàn)有兩個(gè)條件:
客戶端擁有 JS 的最高解釋權(quán),可以決定在任何時(shí)候注入 JS,而服務(wù)器無法阻止或干預(yù)。服務(wù)端只能通過檢測和混淆的手段,另 Hook 難度加大,但是無法直接阻止。
除了上面的必要條件之外,還有一個(gè)條件。就是 JS 是一種弱類型語言,同一個(gè)變量可以多次定義、根據(jù)需要進(jìn)行不同的賦值,而這種情況如果在其他強(qiáng)類型語言中則可能會(huì)報(bào)錯(cuò),導(dǎo)致代碼無法執(zhí)行。js 的這種特性,為我們 Hook 代碼提供了便利。
?
標(biāo)簽: