拦截器
Interceptor.attach(target, callbacks[, data])
参数分析
- target :target是一个NativePointer,用于指定想要拦截的函数的地址。
- callbacks :参数是一个包含一个或多个回调函数的对象。
- onEnter(args)
回调函数,接收一个参数args,它是一个NativePointer对象数组,可以用它来读取或写入函数的参数。 - onLeave(retval)
回调函数,接收一个参数retval,它是一个基于NativePointer的对象,包含了函数的原始返回值。
- onEnter(args)
使用方式
setImmediate(function (){
var soAddr = Module.findBaseAddress("libxxx.so");
var methodAddr = soAddr.add(0x0aaa);
Interceptor.attach(methodAddr,{
onEnter:function (args){
console.log("method is called")
},
onLeave:function (retval){
console.log("result:",retval)
}
})
})
替换函数
Interceptor.replace(target, replacement[, data])
参数分析
- target :想替换的目标函数的地址。通常这是一个指向原始函数的NativePointer。
- replacement :这是新的函数或回调,会代替原来的函数执行。( 使用NativeCallback来实现)
使用方式
setImmediate(function (){
var soAddr = Module.findBaseAddress("libxxx.so");
var methodAddr = soAddr.add(0x0aaa);
Interceptor.replace(methodAddr,new NativeCallback(function(){
console.log("replace over!");
}))
})