在某些时候想要Hook的类可能还没有被加载进来,如果直接加载注入脚本可能会报找不到指定要注入的类的异常,所以应该在脚本中加入延迟方法.
使用 setTimeout(fn, delay) 方法进行延迟调用
setImmediate(function() {
//延迟1秒调用Hook方法
setTimeout(test, 1000);
});
//执行Hook方法
function test(){
Java.perform(function () {
var Activity = Java.use("com.test.utils");
Activity.test.implementation = function () {
console.log("test");
var p = arguments[0];
var res = this.y(arguments[0]);
console.log("[test] params = "+p+"\nres="+res);
return res;
};
});
}
下面列出几个常用的函数
- setTimeout(fn, delay): 在延迟 delay 毫秒之后,调用 fn,这个调用会返回一个ID,这个ID可以传递给 clearTimeout 用来进行调用取消。
- clearTimeout(id): 取消通过 setTimeout 发起的延迟调用
- setInterval(fn, delay): 每隔 delay 毫秒调用一次 fn,返回一个ID,这个ID可以传给 clearInterval 进行调用取消。
- clearInterval(id): 取消通过 setInterval 发起的调用