目标
目标: hook 这个HTTPDNSOrigin
类的所有方法
阅读时长:3分钟
实现
var resolver = new ApiResolver('objc');
// 解读:*[HTTPDNSOrigin *] 见下面代码
// 第一个* 代表的是 无论是类方法还是对象方法,
// 第二个*代表的是该类的所有方法,
// 当然了HTTPDNSOrigin也可以换成*,就是hook所有的类
resolver.enumerateMatches('*[HTTPDNSOrigin *]',{
onMatch:function (match){
var method = match['name'] // 方法名
var impl = match['address'] // 方法地址
// if(method.indexOf("xxxx:") !== -1){ # 如果需要可以做筛选。
console.log(impl, method)
// hook该方法
Interceptor.attach(impl,{
onEnter:function (args){
// console.log(Thread.backtrace(this.context,Backtracer.FUZZY).map(DebugSymbol.fromAddress).join('\n')+'\n')
console.log(match['name'],match['address'],"==>onEnter")
},
onLeave:function (retval){
console.log(match['name'],"==>onLeave")
}
})
// }
},
onComplete:function (){}
})