hook的js代碼已經有了,不知道怎么呼叫hook原型函式。
懂js的幫個忙,幫我呼叫。
我自個能實作hook全域函式,但是原型函式不知道怎么呼叫的
hook的js代碼來自----
張天琪(pnig0s),就職于阿里巴巴,FreeBuf黑ke與極客安全媒體平臺創辦人之一,漏洞盒子安全眾測平臺創辦人之一,xKungFoo,xDef等安全會議演講者,多次發現Google,Yahoo,Ebay,Twitter等國外知名廠商安全問題并獲得公開致謝。
----改版的
這里是hook.js代碼,代碼不長,回應版規,放到藍奏云網盤上。https://www.lanzous.com/i72ff3c
以下是引數與示例說明
[bool]hook:params{
realFunc[String|must]:用于保存原始函式的函式名稱,用于unHook;
hookFunc[Function|must]:替換的hook函式;
context[Object|opt]:目標函式所在物件,用于hook非window物件下的函式,如String.protype.slice,carInstance1
methodName[String|opt]:匿名函式需顯式傳入目標函式名eg:this.Begin = function(){....};}
[bool]unhook:params{
realFunc[String|must]:用于保存原始函式的函式名稱,用于unHook;
funcName[String|must]:被Hook的函式名稱
context[Object|opt]:目標函式所在物件,用于hook非window物件下的函式,如String.protype.slice,carInstance1}
<script src=https://bbs.csdn.net/topics/hook.js></script>
var myHook = new Hooks();
myHook.initEnv();
//普通全域函式
var _alert = null;function myalert(param){
console.log("before hook");
}
alert.hook("_alert",myalert);
alert.unhook("_alert","alert");
alert(1);
//自定義物件匿名函式
function Person() {
this.getName = function(name) {
alert('Call' + name);
}
}
var p = new Person();
var _p_getName = null;function mygetName(name){
alert("Hooked");
}
p.getName.hook("_p_getName",mygetName,p,"getName");
p.getName.unhook("_p_getName","getName",p);
p.getName("pnig0s");
//原型物件函式
var _slice = null;function myslice(param){
alert("Hooked");
}
String.prototype.slice.hook("_slice",myslice,String.prototype);
String.prototype.slice.unhook("_slice","slice",String.prototype);
var str = "pnig0s";str.slice(1);
myHooks.cleanEnv(); //clear hooks
以下是我需要的hook原型物件函式
var myprototype= function() {
var e= function(a, b){
this.x = a;
this.y = b;
}
e.prototype.Event = function(e, t) {
alert('test');
}
}
問題來了,怎么hook e.prototype.Event 這一段物件的函式。。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/152747.html
標籤:JavaScript
