拦截器
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!");}))
})