[英]Javascript hooking
如果我想在 Javascript 中掛鈎對 eval 和 settimeout 之類的函數的調用,以獲取將要執行的代碼之類的東西,並通過函數 settimeout 將要調用,我該從哪里開始?
場景是,我訪問一個 chrome 網頁,我想在每個點上設置一個斷點。 然而,它們可能會被混淆(可能是惡意的),所以我不能只搜索這些類型的調用的來源。
我不能直接使用 chrome 來做到這一點,還是我真的需要在 v8 中創建一個鈎子來捕獲這些對特定 js 函數的調用?
沒有辦法攔截所有的代碼執行事件。 您將不得不修改源。
也就是說, eval
和setTimeout
都只是函數,作為全局對象上的可配置屬性安裝。 您可以使用包裝器覆蓋它們:
var original_eval = eval;
eval = function(str) {
console.log("eval was called with: " + str);
return original_eval(str);
}
請注意, eval
和setTimeout
之間存在很大的概念差異:前者采用新的源代碼,后者只能調度對現有函數的調用(可能是用eval
創建的)。
還有Function
構造函數,它類似於eval
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.