frida 常用hook方法
打印byte(byte[]转成字符串)
1 | //将byte[]转成String的方法 |
字符串转byte[]
1 | //字符串转换byte[]的方法 |
frida 打印成员变量
1 | var d = this._d;//获取成员属性d |
通过反射获取所有成员变量
1 | var fields = Java.cast(this.getClass(),Java.use('java.lang.Class')).getDeclaredFields(); |
获取一个就把getDeclaredFields() 改成 getDeclaredField(‘FieldName’);
同上。记得开启强制读取以及是否为空。否则容易报错碍眼。
hook 所有的网络请求(快速定位发生请求的代码位置)
1 | Java.use('java.net.URL').$init.overload('java.lang.String').implementation = function (apiUrl){ |
打印堆栈(辅助定位class信息,我一般配合url对象可以快速找到协议类)
1 | //打印堆栈 |
frida 技巧
frida 常见的一些技巧
例如一个参数很长,那么我建议写一个错误的参数类型,然frida报错,报错找不到这个方法。同时他会返回可用的hook的参数列表。。。偷懒必备
so的问题,注意so加载时间,以防未加载就进行hook。。。否则会报错null。
有时候hook方法的时候会报错xxxx。具体的错误信息忘记报错了。。。得换下一个方法,估计是frida的一个bug。