|
function main(){
console.log("Script loaded success")
//Java.perform是frida的api函数,可以将其中的脚本注入到java运行库,参数是一个匿名函数
//函数的主体内容是监控和修改java函数逻辑的主题内容,任何针对java层的操作都必须在这个api函数中
Java.perform(function(){
console.log("Inside java perform!")
//java.use获取hook函数所在类的类名
var Mainactivity=Java.use('com.example.hooktest1.MainActivity')
console.log("Java.use.success!")
//通过.连接函数名,比如这里的函数名是fun,表示想hookfun函数
//implementation表示实现该函数,也就是hook掉,这里可以写自己的函数
Mainactivity.fun.implementation=function(x,y)
{
console.log("x=",x,"y=",y,"x+y=",x+y) //打印参数,这里应该是函数原本没有被修改时的参数,即函数正常执行时的参数情况
var retvalue=this.fun(666,66) //再次调用原函数并且传递原本的参数fun,即重新执行原函数,在这里就可以修改参数
return retvalue //返回函数返回值,返回值最好不要修改类型,否则可能出错
}
})
}
//参数是要被执行的函数,例如传入main,表示frida注入app后立刻执行main
//setTimeout可以指定frida注入app多久之后执行函数,用于延时注入
setImmediate(main)
|
|